cyfs_base/crypto/
signer.rs1use 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}