did_crypto/crypto/ecdsa/
mod.rs1use 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}