#![cfg(feature = "trust")]
use nwep::trust::bls::{self, BlsKeypair};
#[test]
fn anchor_quorum_signs_and_verifies_a_checkpoint() {
let root = b"epoch 12 merkle root bytes";
let anchors: Vec<BlsKeypair> = (0..3).map(|_| BlsKeypair::generate().unwrap()).collect();
let partials: Vec<_> = anchors.iter().map(|a| a.sign(root).unwrap()).collect();
for (anchor, sig) in anchors.iter().zip(&partials) {
assert!(bls::verify(sig, anchor.public_key(), root));
}
let aggregate = bls::aggregate(&partials).unwrap();
let pubkeys: Vec<_> = anchors.iter().map(|a| *a.public_key()).collect();
assert!(bls::verify_aggregate(&aggregate, &pubkeys, root));
assert!(!bls::verify_aggregate(&aggregate, &pubkeys, b"forged root"));
}