use crate::{RawSigner, RawSignerError, SigningAlg};
mod ecdsa_signer;
mod ed25519_signer;
mod rsa_signer;
pub(crate) fn signer_from_private_key(
private_key: &[u8],
alg: SigningAlg,
) -> Result<Box<dyn RawSigner + Send + Sync>, RawSignerError> {
match alg {
SigningAlg::Es256 | SigningAlg::Es384 | SigningAlg::Es512 => Ok(Box::new(
ecdsa_signer::EcdsaSigner::from_private_key(private_key, alg)?,
)),
SigningAlg::Ed25519 => Ok(Box::new(ed25519_signer::Ed25519Signer::from_private_key(
private_key,
)?)),
SigningAlg::Ps256 | SigningAlg::Ps384 | SigningAlg::Ps512 => Ok(Box::new(
rsa_signer::RsaSigner::from_private_key(private_key, alg)?,
)),
}
}