near_api/signer/
secret_key.rs

1use 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}