]> Git Repo - secp256k1.git/blob - src/bench_sign.c
Merge pull request #298
[secp256k1.git] / src / bench_sign.c
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 "include/secp256k1.h"
8 #include "util.h"
9 #include "bench.h"
10
11 typedef struct {
12     secp256k1_context_t* ctx;
13     unsigned char msg[32];
14     unsigned char key[32];
15 } bench_sign_t;
16
17 static void bench_sign_setup(void* arg) {
18     int i;
19     bench_sign_t *data = (bench_sign_t*)arg;
20
21     for (i = 0; i < 32; i++) data->msg[i] = i + 1;
22     for (i = 0; i < 32; i++) data->key[i] = i + 65;
23 }
24
25 static void bench_sign(void* arg) {
26     int i;
27     bench_sign_t *data = (bench_sign_t*)arg;
28
29     unsigned char sig[74];
30     for (i = 0; i < 20000; i++) {
31         int siglen = 74;
32         int j;
33         secp256k1_ecdsa_signature_t signature;
34         CHECK(secp256k1_ecdsa_sign(data->ctx, data->msg, &signature, data->key, NULL, NULL));
35         CHECK(secp256k1_ecdsa_signature_serialize_der(data->ctx, sig, &siglen, &signature));
36         for (j = 0; j < 32; j++) {
37             data->msg[j] = sig[j];
38             data->key[j] = sig[j + 32];
39         }
40     }
41 }
42
43 int main(void) {
44     bench_sign_t data;
45
46     data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
47
48     run_benchmark("ecdsa_sign", bench_sign, bench_sign_setup, NULL, &data, 10, 20000);
49
50     secp256k1_context_destroy(data.ctx);
51     return 0;
52 }
This page took 0.02596 seconds and 4 git commands to generate.