use error::{KmsError, KmsErrorKind::*};
use signatory::{self, ed25519::Signature, Signer as SignerTrait};
pub struct Signer {
pub provider_name: &'static str,
pub key_id: String,
provider: Box<SignerTrait<Signature>>,
}
impl Signer {
pub fn new(
provider_name: &'static str,
key_id: String,
provider: Box<SignerTrait<Signature>>,
) -> Self {
Self {
provider_name,
key_id,
provider,
}
}
#[inline]
pub fn sign(&self, msg: &[u8]) -> Result<Signature, KmsError> {
Ok(
signatory::sign(self.provider.as_ref(), msg)
.map_err(|e| err!(SigningError, "{}", e))?,
)
}
}