Skip to content

Commit 7cb25d1

Browse files
committed
Add secp256r1_verify benchmark
1 parent b58166c commit 7cb25d1

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

packages/crypto/benches/main.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use sha2::Sha256;
1212

1313
use cosmwasm_crypto::{
1414
ed25519_batch_verify, ed25519_verify, secp256k1_recover_pubkey, secp256k1_verify,
15+
secp256r1_verify,
1516
};
1617
use std::cmp::min;
1718

@@ -20,6 +21,10 @@ const COSMOS_SECP256K1_SIGNATURE_HEX: &str = "c9dd20e07464d3a688ff4b710b1fbc027e
2021
const COSMOS_SECP256K1_PUBKEY_HEX: &str =
2122
"034f04181eeba35391b858633a765c4a0c189697b40d216354d50890d350c70290";
2223

24+
const COSMOS_SECP256R1_MSG_HEX: &str = "5905238877c77421f73e43ee3da6f2d9e2ccad5fc942dcec0cbd25482935faaf416983fe165b1a045ee2bcd2e6dca3bdf46c4310a7461f9a37960ca672d3feb5473e253605fb1ddfd28065b53cb5858a8ad28175bf9bd386a5e471ea7a65c17cc934a9d791e91491eb3754d03799790fe2d308d16146d5c9b0d0debd97d79ce8";
25+
const COSMOS_SECP256R1_SIGNATURE_HEX: &str = "f3ac8061b514795b8843e3d6629527ed2afd6b1f6a555a7acabb5e6f79c8c2ac8bf77819ca05a6b2786c76262bf7371cef97b218e96f175a3ccdda2acc058903";
26+
const COSMOS_SECP256R1_PUBKEY_HEX: &str = "041ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83ce4014c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9";
27+
2328
// TEST 3 test vector from https://tools.ietf.org/html/rfc8032#section-7.1
2429
const COSMOS_ED25519_MSG_HEX: &str = "af82";
2530
const COSMOS_ED25519_SIGNATURE_HEX: &str = "6291d657deec24024827e69c3abe01a30ce548a284743a445e3680d7db5ac3ac18ff9b538d16f290ae67f760984dc6594a7c15e9716ed28dc027beceea1ec40a";
@@ -107,6 +112,16 @@ fn bench_crypto(c: &mut Criterion) {
107112
});
108113
});
109114

115+
group.bench_function("secp256r1_verify", |b| {
116+
let message = hex::decode(COSMOS_SECP256R1_MSG_HEX).unwrap();
117+
let message_hash = Sha256::digest(message);
118+
let signature = hex::decode(COSMOS_SECP256R1_SIGNATURE_HEX).unwrap();
119+
let public_key = hex::decode(COSMOS_SECP256R1_PUBKEY_HEX).unwrap();
120+
b.iter(|| {
121+
assert!(secp256r1_verify(&message_hash, &signature, &public_key).unwrap());
122+
});
123+
});
124+
110125
group.bench_function("ed25519_verify", |b| {
111126
let message = hex::decode(COSMOS_ED25519_MSG_HEX).unwrap();
112127
let signature = hex::decode(COSMOS_ED25519_SIGNATURE_HEX).unwrap();

0 commit comments

Comments
 (0)