near_api/signer/
secret_key.rs1use tracing::{instrument, trace};
2
3use near_api_types::{AccountId, PublicKey, SecretKey};
4
5use crate::errors::SignerError;
6
7use super::SignerTrait;
8
9const SECRET_KEY_SIGNER_TARGET: &str = "near_api::signer::secret_key";
10
11#[derive(Debug, Clone)]
12pub struct SecretKeySigner {
13 secret_key: SecretKey,
14 public_key: PublicKey,
15}
16
17#[async_trait::async_trait]
18impl SignerTrait for SecretKeySigner {
19 #[instrument(skip(self))]
20 async fn get_secret_key(
21 &self,
22 signer_id: &AccountId,
23 public_key: &PublicKey,
24 ) -> Result<SecretKey, SignerError> {
25 trace!(target: SECRET_KEY_SIGNER_TARGET, "returning with secret key");
26 Ok(self.secret_key.clone())
27 }
28
29 #[instrument(skip(self))]
30 fn get_public_key(&self) -> Result<PublicKey, SignerError> {
31 Ok(self.public_key.clone())
32 }
33}
34
35impl SecretKeySigner {
36 pub fn new(secret_key: SecretKey) -> Self {
37 let public_key = secret_key.public_key();
38 Self {
39 secret_key,
40 public_key,
41 }
42 }
43}