Available on crate feature
dsa
only.Expand description
SM2 Digital Signature Algorithm (SM2DSA) as defined in draft-shen-sm2-ecdsa § 5.
Usage
NOTE: requires the dsa
crate feature enabled, and rand_core
dependency
with getrandom
feature enabled.
use rand_core::OsRng; // requires 'getrandom` feature
use sm2::{
dsa::{Signature, SigningKey, signature::Signer},
SecretKey
};
// Signing
let secret_key = SecretKey::random(&mut OsRng); // serialize with `::to_bytes()`
let distid = "example@rustcrypto.org"; // distinguishing identifier
let signing_key = SigningKey::new(distid, &secret_key)?;
let verifying_key_bytes = signing_key.verifying_key().to_sec1_bytes();
let message = b"test message";
let signature: Signature = signing_key.sign(message);
// Verifying
use sm2::dsa::{VerifyingKey, signature::Verifier};
let verifying_key = VerifyingKey::from_sec1_bytes(distid, &verifying_key_bytes)?;
verifying_key.verify(message, &signature)?;
Re-exports
pub use signature;
Structs
- SM2DSA signature.
- SigningKey
arithmetic
SM2DSA secret key used for signing messages and producing signatures. - VerifyingKey
arithmetic
SM2DSA public key used for verifying signatures are valid for a given message.
Type Aliases
- SM2DSA signature serialized as bytes.