commonware-cryptography 2026.5.0

Generate keys, sign arbitrary messages, and deterministically verify signatures.
Documentation
//! Vendored version of [`ed25519_consensus`].
//!
//! # Changes vs. Upstream
//!
//! - Uses [`curve25519_dalek`] rather than [`curve25519_dalek_ng`] to support AVX2/AVX512 on x86 platforms.
//! - Reduces the clamped Ed25519 scalar with [`Scalar::from_bytes_mod_order`] before public-key
//!   derivation and scalar-scalar arithmetic (equivalent to [`ed25519_zebra`]).
//! - Zeroizes the signing key's prefix, along with the seed and scalar.
//! - Removed `serde` dependency.
//! - Swapped `hex` dependency to [`commonware_formatting::Hex`].
//! - Adapted code to `commonware`'s clippy rules.
//! - The batch verifier accepts pre-decompressed [`VerificationKey`] values and reuses their
//!   cached point decompression state.
//!
//! [`ed25519_consensus`]: https://crates.io/crates/ed25519-consensus
//! [`ed25519_zebra`]: https://crates.io/crates/ed25519-zebra
//! [`curve25519_dalek_ng`]: https://crates.io/crates/curve25519-dalek-ng
//! [`Scalar::from_bytes_mod_order`]: curve25519_dalek::scalar::Scalar::from_bytes_mod_order

pub mod batch;
mod error;
mod signature;
mod signing_key;
mod verification_key;

pub use error::Error;
pub use signature::Signature;
pub use signing_key::SigningKey;
pub use verification_key::{VerificationKey, VerificationKeyBytes};