@@ -12,6 +12,7 @@ use sha2::Sha256;
12
12
13
13
use cosmwasm_crypto:: {
14
14
ed25519_batch_verify, ed25519_verify, secp256k1_recover_pubkey, secp256k1_verify,
15
+ secp256r1_verify,
15
16
} ;
16
17
use std:: cmp:: min;
17
18
@@ -20,6 +21,10 @@ const COSMOS_SECP256K1_SIGNATURE_HEX: &str = "c9dd20e07464d3a688ff4b710b1fbc027e
20
21
const COSMOS_SECP256K1_PUBKEY_HEX : & str =
21
22
"034f04181eeba35391b858633a765c4a0c189697b40d216354d50890d350c70290" ;
22
23
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
+
23
28
// TEST 3 test vector from https://tools.ietf.org/html/rfc8032#section-7.1
24
29
const COSMOS_ED25519_MSG_HEX : & str = "af82" ;
25
30
const COSMOS_ED25519_SIGNATURE_HEX : & str = "6291d657deec24024827e69c3abe01a30ce548a284743a445e3680d7db5ac3ac18ff9b538d16f290ae67f760984dc6594a7c15e9716ed28dc027beceea1ec40a" ;
@@ -107,6 +112,16 @@ fn bench_crypto(c: &mut Criterion) {
107
112
} ) ;
108
113
} ) ;
109
114
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
+
110
125
group. bench_function ( "ed25519_verify" , |b| {
111
126
let message = hex:: decode ( COSMOS_ED25519_MSG_HEX ) . unwrap ( ) ;
112
127
let signature = hex:: decode ( COSMOS_ED25519_SIGNATURE_HEX ) . unwrap ( ) ;
0 commit comments