pub trait Signature {
type PublicKey: AsRef<[u8]> + AsMut<[u8]> + Clone;
type SecretKey: Zeroize + AsRef<[u8]> + AsMut<[u8]> + Clone;
type SignatureData: AsRef<[u8]> + AsMut<[u8]> + Clone;
type KeyPair: Clone;
// Required methods
fn name() -> &'static str;
fn keypair<R: CryptoRng + RngCore>(rng: &mut R) -> Result<Self::KeyPair>;
fn public_key(keypair: &Self::KeyPair) -> Self::PublicKey;
fn secret_key(keypair: &Self::KeyPair) -> Self::SecretKey;
fn sign(
message: &[u8],
secret_key: &Self::SecretKey,
) -> Result<Self::SignatureData>;
fn verify(
message: &[u8],
signature: &Self::SignatureData,
public_key: &Self::PublicKey,
) -> Result<()>;
// Provided methods
fn batch_sign(
messages: &[&[u8]],
secret_key: &Self::SecretKey,
) -> Result<Vec<Self::SignatureData>> { ... }
fn batch_verify(
message_signature_pairs: &[(&[u8], &Self::SignatureData)],
public_key: &Self::PublicKey,
) -> Result<()> { ... }
}
Expand description
Trait for digital signature schemes with domain-specific types
Required Associated Types§
Required Methods§
Sourcefn keypair<R: CryptoRng + RngCore>(rng: &mut R) -> Result<Self::KeyPair>
fn keypair<R: CryptoRng + RngCore>(rng: &mut R) -> Result<Self::KeyPair>
Generate a new keypair
Sourcefn public_key(keypair: &Self::KeyPair) -> Self::PublicKey
fn public_key(keypair: &Self::KeyPair) -> Self::PublicKey
Extract public key from keypair
Sourcefn secret_key(keypair: &Self::KeyPair) -> Self::SecretKey
fn secret_key(keypair: &Self::KeyPair) -> Self::SecretKey
Extract secret key from keypair
Provided Methods§
Sourcefn batch_sign(
messages: &[&[u8]],
secret_key: &Self::SecretKey,
) -> Result<Vec<Self::SignatureData>>
fn batch_sign( messages: &[&[u8]], secret_key: &Self::SecretKey, ) -> Result<Vec<Self::SignatureData>>
Sign multiple messages in batch (may be more efficient for some algorithms)
Sourcefn batch_verify(
message_signature_pairs: &[(&[u8], &Self::SignatureData)],
public_key: &Self::PublicKey,
) -> Result<()>
fn batch_verify( message_signature_pairs: &[(&[u8], &Self::SignatureData)], public_key: &Self::PublicKey, ) -> Result<()>
Verify multiple signatures in batch (may be more efficient for some algorithms)
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.