[][src]Function ed25519_dalek::verify_batch

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 of Signatures.
  • public_keys is a slice of PublicKeys.
  • csprng is an implementation of Rng + CryptoRng, such as rand::ThreadRng.

Panics

This function will panic if the messages,signatures, andpublic_keys` slices are not equal length.

Returns

  • A Result whose Ok value is an emtpy tuple and whose Err value is a SignatureError 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 sha2::Sha512;

let mut csprng = 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());