50cc6ab Merge pull request #178 941e221 Add tests for handling of the nonce function in signing. 10c81ff Merge pull request #177 7688e34 Add magnitude limits to secp256k1_fe_verify to ensure that it's own tests function correctly. 4ee4f7a Merge pull request #176 70ae0d2 Use secp256k1_fe_equal_var in secp256k1_fe_sqrt_var. 7767b4d Merge pull request #175 9ab9335 Add a reference consistency test to ge_tests. 60571c6 Rework group tests d26e26f Avoid constructing an invalid signature with probability 1:2^256. b450c34 Merge pull request #163 d57cae9 Merge pull request #154 49ee0db Add _normalizes_to_zero_var variant eed599d Add _fe_normalizes_to_zero method d7174ed Weak normalization for secp256k1_fe_equal 0295f0a weak normalization bbd5ba7 Use rfc6979 as default nonce generation function b37fbc2 Implement SHA256 / HMAC-SHA256 / RFC6979. c6e7f4e [API BREAK] Use a nonce-generation function instead of a nonce cf0c48b Merge pull request #169 603c33b Make signing fail if a too small buffer is passed. 6d16606 Merge pull request #168 7277fd7 Remove GMP field implementation e99c4c4 Merge pull request #123 13278f6 Add explanation about how inversion can be avoided ce7eb6f Optimize verification: avoid field inverse a098f78 Merge pull request #160 38acd01 Merge pull request #165 6a59012 Make git ignore bench_recover when configured with benchmark enabled 1ba4a60 Configure options reorganization 3c0f246 Merge pull request #157 808dd9b Merge pull request #156 8dc75e9 Merge pull request #158 28ade27 build: nuke bashisms 5190079 build: use subdir-objects for automake 8336040 build: disable benchmark by default git-subtree-dir: src/secp256k1 git-subtree-split: 50cc6ab0625efda6dddf1dc86c1e2671f069b0d8
46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
/**********************************************************************
|
|
* Copyright (c) 2014 Pieter Wuille *
|
|
* Distributed under the MIT software license, see the accompanying *
|
|
* file COPYING or http://www.opensource.org/licenses/mit-license.php.*
|
|
**********************************************************************/
|
|
|
|
#include "include/secp256k1.h"
|
|
#include "util.h"
|
|
#include "bench.h"
|
|
|
|
typedef struct {
|
|
unsigned char msg[32];
|
|
unsigned char key[32];
|
|
} bench_sign_t;
|
|
|
|
static void bench_sign_setup(void* arg) {
|
|
bench_sign_t *data = (bench_sign_t*)arg;
|
|
|
|
for (int i = 0; i < 32; i++) data->msg[i] = i + 1;
|
|
for (int i = 0; i < 32; i++) data->key[i] = i + 65;
|
|
}
|
|
|
|
static void bench_sign(void* arg) {
|
|
bench_sign_t *data = (bench_sign_t*)arg;
|
|
|
|
unsigned char sig[64];
|
|
for (int i=0; i<20000; i++) {
|
|
int recid = 0;
|
|
CHECK(secp256k1_ecdsa_sign_compact(data->msg, sig, data->key, NULL, NULL, &recid));
|
|
for (int j = 0; j < 32; j++) {
|
|
data->msg[j] = sig[j]; /* Move former R to message. */
|
|
data->key[j] = sig[j + 32]; /* Move former S to key. */
|
|
}
|
|
}
|
|
}
|
|
|
|
int main(void) {
|
|
secp256k1_start(SECP256K1_START_SIGN);
|
|
|
|
bench_sign_t data;
|
|
run_benchmark(bench_sign, bench_sign_setup, NULL, &data, 10, 20000);
|
|
|
|
secp256k1_stop();
|
|
return 0;
|
|
}
|