]> Git Repo - secp256k1.git/blame - src/bench.c
Builtin random
[secp256k1.git] / src / bench.c
CommitLineData
607884fc
PW
1#include <stdio.h>
2
7a4b7691
PW
3#include "impl/num.h"
4#include "impl/field.h"
5#include "impl/group.h"
6#include "impl/ecmult.h"
7#include "impl/ecdsa.h"
d06e61cb
PW
8#include "impl/util.h"
9
10void random_num_order(secp256k1_num_t *num) {
11 do {
12 unsigned char b32[32];
13 secp256k1_rand256(b32);
14 secp256k1_num_set_bin(num, b32, 32);
15 if (secp256k1_num_is_zero(num))
16 continue;
17 if (secp256k1_num_cmp(num, &secp256k1_ge_consts->order) >= 0)
18 continue;
19 break;
20 } while(1);
21}
607884fc 22
607884fc 23int main() {
910d0de4 24 secp256k1_fe_start();
f11ff5be 25 secp256k1_ge_start();
b1483f87 26 secp256k1_ecmult_start();
910d0de4
PW
27
28 secp256k1_fe_t x;
f11ff5be 29 const secp256k1_num_t *order = &secp256k1_ge_consts->order;
4adf6b2a 30 secp256k1_num_t r, s, m;
4adf6b2a
PW
31 secp256k1_num_init(&r);
32 secp256k1_num_init(&s);
33 secp256k1_num_init(&m);
d41e93a5
PW
34 secp256k1_ecdsa_sig_t sig;
35 secp256k1_ecdsa_sig_init(&sig);
910d0de4 36 secp256k1_fe_set_hex(&x, "a357ae915c4a65281309edf20504740f0eb3343990216b4f81063cb65f2f7e0f", 64);
607884fc
PW
37 int cnt = 0;
38 int good = 0;
39 for (int i=0; i<1000000; i++) {
d06e61cb
PW
40 random_num_order(&r);
41 random_num_order(&s);
42 random_num_order(&m);
d41e93a5 43 secp256k1_ecdsa_sig_set_rs(&sig, &r, &s);
f11ff5be
PW
44 secp256k1_gej_t pubkey; secp256k1_gej_set_xo(&pubkey, &x, 1);
45 if (secp256k1_gej_is_valid(&pubkey)) {
607884fc 46 cnt++;
d41e93a5 47 good += secp256k1_ecdsa_sig_verify(&sig, &pubkey, &m);
607884fc
PW
48 }
49 }
50 printf("%i/%i\n", good, cnt);
4adf6b2a
PW
51 secp256k1_num_free(&r);
52 secp256k1_num_free(&s);
53 secp256k1_num_free(&m);
d41e93a5 54 secp256k1_ecdsa_sig_free(&sig);
910d0de4 55
b1483f87 56 secp256k1_ecmult_stop();
f11ff5be 57 secp256k1_ge_stop();
910d0de4 58 secp256k1_fe_stop();
607884fc
PW
59 return 0;
60}
This page took 0.028842 seconds and 4 git commands to generate.