Function ed25519_dalek::verify_batch [−][src]
pub fn verify_batch<D>(
messages: &[&[u8]],
signatures: &[Signature],
public_keys: &[PublicKey]
) -> Result<(), SignatureError> where
D: Digest<OutputSize = U64> + Default,
Verify a batch of signatures
on messages
with their respective public_keys
.
Inputs
messages
is a slice of byte slices, one per signed message.signatures
is a slice ofSignature
s.public_keys
is a slice ofPublicKey
s.csprng
is an implementation ofRng + CryptoRng
, such asrand::ThreadRng
.
Panics
This function will panic if the messages,
signatures, and
public_keys`
slices are not equal length.
Returns
- A
Result
whoseOk
value is an emtpy tuple and whoseErr
value is aSignatureError
containing a description of the internal error which occured.
Examples
extern crate ed25519_dalek; extern crate rand; extern crate sha2; use ed25519_dalek::verify_batch; use ed25519_dalek::Keypair; use ed25519_dalek::PublicKey; use ed25519_dalek::Signature; use rand::thread_rng; use rand::ThreadRng; use sha2::Sha512; let mut csprng: ThreadRng = thread_rng(); let keypairs: Vec<Keypair> = (0..64).map(|_| Keypair::generate::<Sha512, _>(&mut csprng)).collect(); let msg: &[u8] = b"They're good dogs Brant"; let messages: Vec<&[u8]> = (0..64).map(|_| msg).collect(); let signatures: Vec<Signature> = keypairs.iter().map(|key| key.sign::<Sha512>(&msg)).collect(); let public_keys: Vec<PublicKey> = keypairs.iter().map(|key| key.public).collect(); let result = verify_batch::<Sha512>(&messages[..], &signatures[..], &public_keys[..]); assert!(result.is_ok());