Module sm2::dsa

source ·
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

Structs

  • SM2DSA signature.
  • SigningKeyarithmetic
    SM2DSA secret key used for signing messages and producing signatures.
  • VerifyingKeyarithmetic
    SM2DSA public key used for verifying signatures are valid for a given message.

Type Aliases