]>
Commit | Line | Data |
---|---|---|
6558a267 PW |
1 | /********************************************************************** |
2 | * Copyright (c) 2014 Pieter Wuille * | |
3 | * Distributed under the MIT software license, see the accompanying * | |
4 | * file COPYING or http://www.opensource.org/licenses/mit-license.php.* | |
5 | **********************************************************************/ | |
6 | ||
7 | #include <stdio.h> | |
8 | #include <string.h> | |
9 | ||
10 | #include "include/secp256k1.h" | |
11 | #include "util.h" | |
12 | #include "bench.h" | |
13 | ||
14 | typedef struct { | |
15 | unsigned char msg[32]; | |
16 | unsigned char key[32]; | |
6558a267 PW |
17 | unsigned char sig[72]; |
18 | int siglen; | |
19 | unsigned char pubkey[33]; | |
20 | int pubkeylen; | |
21 | } benchmark_verify_t; | |
22 | ||
23 | static void benchmark_verify(void* arg) { | |
24 | benchmark_verify_t* data = (benchmark_verify_t*)arg; | |
25 | ||
26 | for (int i=0; i<20000; i++) { | |
27 | data->sig[data->siglen - 1] ^= (i & 0xFF); | |
28 | data->sig[data->siglen - 2] ^= ((i >> 8) & 0xFF); | |
29 | data->sig[data->siglen - 3] ^= ((i >> 16) & 0xFF); | |
cf7b2b46 | 30 | CHECK(secp256k1_ecdsa_verify(data->msg, data->sig, data->siglen, data->pubkey, data->pubkeylen) == (i == 0)); |
6558a267 PW |
31 | data->sig[data->siglen - 1] ^= (i & 0xFF); |
32 | data->sig[data->siglen - 2] ^= ((i >> 8) & 0xFF); | |
33 | data->sig[data->siglen - 3] ^= ((i >> 16) & 0xFF); | |
34 | } | |
35 | } | |
36 | ||
37 | int main(void) { | |
38 | secp256k1_start(SECP256K1_START_VERIFY | SECP256K1_START_SIGN); | |
39 | ||
40 | benchmark_verify_t data; | |
41 | ||
42 | for (int i = 0; i < 32; i++) data.msg[i] = 1 + i; | |
43 | for (int i = 0; i < 32; i++) data.key[i] = 33 + i; | |
6558a267 | 44 | data.siglen = 72; |
bbd5ba7c | 45 | secp256k1_ecdsa_sign(data.msg, data.sig, &data.siglen, data.key, NULL, NULL); |
6558a267 PW |
46 | data.pubkeylen = 33; |
47 | CHECK(secp256k1_ec_pubkey_create(data.pubkey, &data.pubkeylen, data.key, 1)); | |
48 | ||
49 | run_benchmark(benchmark_verify, NULL, NULL, &data, 10, 20000); | |
50 | ||
51 | secp256k1_stop(); | |
52 | return 0; | |
53 | } |