Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions bls-signatures/benches/bls_signatures.rs
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ fn bench_batch_verification(c: &mut Criterion) {
for num_validators in [64, 128, 256, 512, 1024, 2048].iter() {
let keypairs: Vec<Keypair> = (0..*num_validators).map(|_| Keypair::new()).collect();
let pubkeys: Vec<Pubkey> = keypairs.iter().map(|kp| kp.public).collect();
let pubkey_refs: Vec<&Pubkey> = pubkeys.iter().collect();

// Create a unique message for each validator
let messages: Vec<Vec<u8>> = (0..*num_validators)
Expand All @@ -152,12 +151,8 @@ fn bench_batch_verification(c: &mut Criterion) {
|b| {
b.iter(|| {
let verification_result = black_box(
SignatureProjective::verify_distinct(
&pubkey_refs,
&signatures,
&message_refs,
)
.unwrap(),
SignatureProjective::verify_distinct(&pubkeys, &signatures, &message_refs)
.unwrap(),
);
assert!(verification_result);
});
Expand Down
27 changes: 11 additions & 16 deletions bls-signatures/src/signature.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ impl SignatureProjective {
/// Verifies an aggregated signature over a set of distinct messages and
/// public keys.
pub fn verify_distinct(
public_keys: &[&Pubkey],
public_keys: &[Pubkey],
signatures: &[Signature],
messages: &[&[u8]],
) -> Result<bool, BlsError> {
Expand All @@ -141,7 +141,7 @@ impl SignatureProjective {
/// Verifies a pre-aggregated signature over a set of distinct messages and
/// public keys.
pub fn verify_distinct_aggregated(
public_keys: &[&Pubkey],
public_keys: &[Pubkey],
aggregate_signature: &Signature,
messages: &[&[u8]],
) -> Result<bool, BlsError> {
Expand Down Expand Up @@ -597,12 +597,12 @@ mod tests {
let signature2: Signature = signature2_proj.into();

// Success cases
let pubkeys_refs = [&keypair0.public, &keypair1.public, &keypair2.public];
let pubkeys = [keypair0.public, keypair1.public, keypair2.public];
let messages_refs_vec: Vec<&[u8]> = std::vec![message0, message1, message2];
let signatures_refs = std::vec![signature0, signature1, signature2];

assert!(SignatureProjective::verify_distinct(
&pubkeys_refs,
&pubkeys,
&signatures_refs,
&messages_refs_vec
)
Expand All @@ -611,22 +611,22 @@ mod tests {
// Failure cases
let wrong_order_messages_refs: Vec<&[u8]> = std::vec![message1, message0, message2];
assert!(!SignatureProjective::verify_distinct(
&pubkeys_refs,
&pubkeys,
&signatures_refs,
&wrong_order_messages_refs,
)
.unwrap());

let one_wrong_message_refs: Vec<&[u8]> = std::vec![message0, b"this is wrong", message2];
assert!(!SignatureProjective::verify_distinct(
&pubkeys_refs,
&pubkeys,
&signatures_refs,
&one_wrong_message_refs
)
.unwrap());

let wrong_keypair = Keypair::new();
let wrong_pubkeys = [&keypair0.public, &wrong_keypair.public, &keypair2.public];
let wrong_pubkeys = [keypair0.public, wrong_keypair.public, keypair2.public];
assert!(!SignatureProjective::verify_distinct(
&wrong_pubkeys,
&signatures_refs,
Expand All @@ -638,34 +638,29 @@ mod tests {
let wrong_signature: Signature = wrong_signature_proj.into();
let wrong_signatures = [signature0, wrong_signature, signature2];
assert!(!SignatureProjective::verify_distinct(
&pubkeys_refs,
&pubkeys,
&wrong_signatures,
&messages_refs_vec,
)
.unwrap());

let err = SignatureProjective::verify_distinct(
&pubkeys_refs,
&pubkeys,
&signatures_refs,
&messages_refs_vec[..2],
)
.unwrap_err();
assert_eq!(err, BlsError::InputLengthMismatch);

let err = SignatureProjective::verify_distinct(
&pubkeys_refs,
&pubkeys,
&signatures_refs[..2],
&messages_refs_vec,
)
.unwrap_err();
assert_eq!(err, BlsError::InputLengthMismatch);

let err = SignatureProjective::verify_distinct(
&[] as &[&Pubkey],
&[] as &[Signature],
&[] as &[&[u8]],
)
.unwrap_err();
let err = SignatureProjective::verify_distinct(&[], &[], &[]).unwrap_err();
assert_eq!(err, BlsError::EmptyAggregation);
}

Expand Down