]>
Commit | Line | Data |
---|---|---|
91c0ce95 AP |
1 | /********************************************************************** |
2 | * Copyright (c) 2015 Pieter Wuille, Andrew Poelstra * | |
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 <string.h> | |
8 | ||
9 | #include "include/secp256k1.h" | |
10 | #include "include/secp256k1_ecdh.h" | |
11 | #include "util.h" | |
12 | #include "bench.h" | |
13 | ||
14 | typedef struct { | |
dd891e0e PW |
15 | secp256k1_context *ctx; |
16 | secp256k1_pubkey point; | |
91c0ce95 | 17 | unsigned char scalar[32]; |
1f46d608 | 18 | } bench_ecdh_data; |
91c0ce95 AP |
19 | |
20 | static void bench_ecdh_setup(void* arg) { | |
21 | int i; | |
1f46d608 | 22 | bench_ecdh_data *data = (bench_ecdh_data*)arg; |
91c0ce95 AP |
23 | const unsigned char point[] = { |
24 | 0x03, | |
25 | 0x54, 0x94, 0xc1, 0x5d, 0x32, 0x09, 0x97, 0x06, | |
26 | 0xc2, 0x39, 0x5f, 0x94, 0x34, 0x87, 0x45, 0xfd, | |
27 | 0x75, 0x7c, 0xe3, 0x0e, 0x4e, 0x8c, 0x90, 0xfb, | |
28 | 0xa2, 0xba, 0xd1, 0x84, 0xf8, 0x83, 0xc6, 0x9f | |
29 | }; | |
30 | ||
912f203f GM |
31 | for (i = 0; i < 32; i++) { |
32 | data->scalar[i] = i + 1; | |
33 | } | |
91c0ce95 AP |
34 | CHECK(secp256k1_ec_pubkey_parse(data->ctx, &data->point, point, sizeof(point)) == 1); |
35 | } | |
36 | ||
37 | static void bench_ecdh(void* arg) { | |
38 | int i; | |
39 | unsigned char res[32]; | |
1f46d608 | 40 | bench_ecdh_data *data = (bench_ecdh_data*)arg; |
91c0ce95 AP |
41 | |
42 | for (i = 0; i < 20000; i++) { | |
c8fbc3c3 | 43 | CHECK(secp256k1_ecdh(data->ctx, res, &data->point, data->scalar, NULL, NULL) == 1); |
91c0ce95 AP |
44 | } |
45 | } | |
46 | ||
47 | int main(void) { | |
1f46d608 | 48 | bench_ecdh_data data; |
91c0ce95 | 49 | |
02dd5f1b ET |
50 | /* create a context with no capabilities */ |
51 | data.ctx = secp256k1_context_create(SECP256K1_FLAGS_TYPE_CONTEXT); | |
52 | ||
91c0ce95 | 53 | run_benchmark("ecdh", bench_ecdh, bench_ecdh_setup, NULL, &data, 10, 20000); |
02dd5f1b ET |
54 | |
55 | secp256k1_context_destroy(data.ctx); | |
91c0ce95 AP |
56 | return 0; |
57 | } |