did_crypto/crypto/ecdsa/
mod.rs

1use crate::{
2    algorithms::Algorithm,
3    crypto::{SignFromKey, VerifyFromKey},
4    errors::Error,
5};
6
7use self::{
8    _256k::{ec_256k_sign, ec_256k_verify},
9    _256::{ec_256_sign, ec_256_verify},
10    _384::{ec_384_sign, ec_384_verify},
11    _512::{ec_512_sign, ec_512_verify},
12};
13
14pub mod _256;
15pub mod _256k;
16pub mod _384;
17pub mod _512;
18
19pub fn sign_ec(message: String, key: impl SignFromKey, alg: Algorithm) -> Result<String, Error> {
20    match alg {
21        Algorithm::ES256 => ec_256_sign(message, key),
22        Algorithm::ES384 => ec_384_sign(message, key),
23        Algorithm::ES512 => ec_512_sign(message, key),
24        Algorithm::ES256K => ec_256k_sign(message, key),
25        _ => return Err(Error::UNKNOWN_ALGORITHM),
26    }
27}
28
29pub fn verify_ec(
30    message: String,
31    signature: String,
32    key: impl VerifyFromKey,
33    alg: Algorithm,
34) -> Result<bool, Error> {
35    match alg {
36        Algorithm::ES256 => ec_256_verify(message, signature, key),
37        Algorithm::ES384 => ec_384_verify(message, signature, key),
38        Algorithm::ES512 => ec_512_verify(message, signature, key),
39        Algorithm::ES256K => ec_256k_verify(message, signature, key),
40        _ => return Err(Error::UNKNOWN_ALGORITHM),
41    }
42}