cyfs_base/crypto/
signer.rs

1use crate::*;
2
3use async_trait::async_trait;
4
5#[async_trait]
6pub trait Signer: Sync + Send {
7    fn public_key(&self) -> &PublicKey;
8    async fn sign(&self, data: &[u8], sign_source: &SignatureSource) -> BuckyResult<Signature>;
9}
10
11#[async_trait]
12impl Signer for Box<dyn Signer> {
13    fn public_key(&self) -> &PublicKey {
14        self.as_ref().public_key()
15    }
16
17    async fn sign(&self, data: &[u8], sign_source: &SignatureSource) -> BuckyResult<Signature> {
18        self.as_ref().sign(data, sign_source).await
19    }
20}