]>
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 | ||
f36f9c64 AP |
31 | /* create a context with no capabilities */ |
32 | data->ctx = secp256k1_context_create(SECP256K1_FLAGS_TYPE_CONTEXT); | |
912f203f GM |
33 | for (i = 0; i < 32; i++) { |
34 | data->scalar[i] = i + 1; | |
35 | } | |
91c0ce95 AP |
36 | CHECK(secp256k1_ec_pubkey_parse(data->ctx, &data->point, point, sizeof(point)) == 1); |
37 | } | |
38 | ||
39 | static void bench_ecdh(void* arg) { | |
40 | int i; | |
41 | unsigned char res[32]; | |
1f46d608 | 42 | bench_ecdh_data *data = (bench_ecdh_data*)arg; |
91c0ce95 AP |
43 | |
44 | for (i = 0; i < 20000; i++) { | |
b00be650 | 45 | CHECK(secp256k1_ecdh(data->ctx, res, &data->point, data->scalar, NULL) == 1); |
91c0ce95 AP |
46 | } |
47 | } | |
48 | ||
49 | int main(void) { | |
1f46d608 | 50 | bench_ecdh_data data; |
91c0ce95 AP |
51 | |
52 | run_benchmark("ecdh", bench_ecdh, bench_ecdh_setup, NULL, &data, 10, 20000); | |
53 | return 0; | |
54 | } |