@@ -40,6 +40,42 @@ static void bench_verify(void* arg, int iters) {
40
40
}
41
41
}
42
42
43
+ typedef struct {
44
+ secp256k1_context * ctx ;
45
+ unsigned char msg [32 ];
46
+ unsigned char key [32 ];
47
+ } bench_sign_data ;
48
+
49
+ static void bench_sign_setup (void * arg ) {
50
+ int i ;
51
+ bench_sign_data * data = (bench_sign_data * )arg ;
52
+
53
+ for (i = 0 ; i < 32 ; i ++ ) {
54
+ data -> msg [i ] = i + 1 ;
55
+ }
56
+ for (i = 0 ; i < 32 ; i ++ ) {
57
+ data -> key [i ] = i + 65 ;
58
+ }
59
+ }
60
+
61
+ static void bench_sign_run (void * arg , int iters ) {
62
+ int i ;
63
+ bench_sign_data * data = (bench_sign_data * )arg ;
64
+
65
+ unsigned char sig [74 ];
66
+ for (i = 0 ; i < iters ; i ++ ) {
67
+ size_t siglen = 74 ;
68
+ int j ;
69
+ secp256k1_ecdsa_signature signature ;
70
+ CHECK (secp256k1_ecdsa_sign (data -> ctx , & signature , data -> msg , data -> key , NULL , NULL ));
71
+ CHECK (secp256k1_ecdsa_signature_serialize_der (data -> ctx , sig , & siglen , & signature ));
72
+ for (j = 0 ; j < 32 ; j ++ ) {
73
+ data -> msg [j ] = sig [j ];
74
+ data -> key [j ] = sig [j + 32 ];
75
+ }
76
+ }
77
+ }
78
+
43
79
int main (void ) {
44
80
int i ;
45
81
secp256k1_pubkey pubkey ;
@@ -48,6 +84,7 @@ int main(void) {
48
84
49
85
int iters = get_iters (20000 );
50
86
87
+ /* ECDSA verification benchmark */
51
88
data .ctx = secp256k1_context_create (SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY );
52
89
53
90
for (i = 0 ; i < 32 ; i ++ ) {
@@ -67,5 +104,13 @@ int main(void) {
67
104
run_benchmark ("ecdsa_verify" , bench_verify , NULL , NULL , & data , 10 , iters );
68
105
69
106
secp256k1_context_destroy (data .ctx );
107
+
108
+ /* ECDSA signing benchmark */
109
+ data .ctx = secp256k1_context_create (SECP256K1_CONTEXT_SIGN );
110
+
111
+ run_benchmark ("ecdsa_sign" , bench_sign_run , bench_sign_setup , NULL , & data , 10 , iters );
112
+
113
+ secp256k1_context_destroy (data .ctx );
114
+
70
115
return 0 ;
71
116
}
0 commit comments