Expand description
Elliptic Curve Digital Signature Algorithm (ECDSA)
This module contains support for computing and verifying ECDSA signatures. To use it, you will need to enable one of the two following Cargo features:
ecdsa-core: provides only theSignaturetype (which represents an ECDSA/P-521 signature). Does not require thearithmeticfeature. This is useful for 3rd-party crates which wish to use theSignaturetype for interoperability purposes (particularly in conjunction with thesignature::Signertrait. Example use cases for this include other software implementations of ECDSA/P-521 and wrappers for cloud KMS services or hardware devices (HSM or crypto hardware wallet).ecdsa: providesecdsa-corefeatures plus theSigningKeyandVerifyingKeytypes which natively implement ECDSA/P-521 signing and verification.
§Signing/Verification Example
// NOTE: requires the `ecdsa` and `getrandom` crate features are enabled
use p521::{
ecdsa::{SigningKey, Signature, signature::Signer},
elliptic_curve::Generate,
SecretKey,
};
// Signing
let signing_key = SigningKey::generate(); // Serialize with `::to_bytes()`
let verifying_key_bytes = signing_key.verifying_key().to_sec1_point(false); // 133-bytes
let message = b"ECDSA proves knowledge of a secret number in the context of a single message";
let signature: Signature = signing_key.sign(message);
// Verification
use p521::{Sec1Point, ecdsa::{VerifyingKey, signature::Verifier}};
let verifying_key = VerifyingKey::from_sec1_bytes(verifying_key_bytes.as_ref())?;
verifying_key.verify(message, &signature)?;Re-exports§
pub use ecdsa_core::signature;
Structs§
- Error
- Signature errors.
Type Aliases§
- DerSignature
- ECDSA/P-521 signature (ASN.1 DER encoded)
- Signature
- ECDSA/P-521 signature (fixed-size)
- Signing
Key - ECDSA/P-521 signing key
- Verifying
Key - ECDSA/P-521 verification key (i.e. public key)