Module p384::ecdsa

source ·
Available on crate feature ecdsa-core only.
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 the Signature type (which represents an ECDSA/P-384 signature). Does not require the arithmetic feature. This is useful for 3rd-party crates which wish to use the Signature type for interoperability purposes (particularly in conjunction with the [signature::Signer] trait. Example use cases for this include other software implementations of ECDSA/P-384 and wrappers for cloud KMS services or hardware devices (HSM or crypto hardware wallet).
  • ecdsa: provides ecdsa-core features plus the SigningKey and VerifyingKey types which natively implement ECDSA/P-384 signing and verification.

Signing/Verification Example

This example requires the ecdsa Cargo feature is enabled:

use p384::ecdsa::{signature::Signer, Signature, SigningKey};
use rand_core::OsRng; // requires 'getrandom' feature

// Signing
let signing_key = SigningKey::random(&mut OsRng); // Serialize with `::to_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 p384::ecdsa::{signature::Verifier, VerifyingKey};

let verifying_key = VerifyingKey::from(&signing_key); // Serialize with `::to_encoded_point()`
assert!(verifying_key.verify(message, &signature).is_ok());

Re-exports

pub use ecdsa_core::signature;

Structs

Signature errors.

Type Definitions

ECDSA/P-384 signature (ASN.1 DER encoded)
ECDSA/P-384 signature (fixed-size)
ECDSA/P-384 signing key
ECDSA/P-384 verification key (i.e. public key)