Browse Source
e7c1b44
Squashed 'src/secp256k1/' changes from 8225239..84973d3 (Pieter Wuille)
Tree-SHA512: 3e1ba6e6ad9d68170a1a60bd963f2dbaa8b0ae592cc562e6cd23b2c7653f0b8016e4c682681ae2fb3714106a41f8b89708e16e8f52a42ff3db59fc28262eea0b
0.15
Wladimir J. van der Laan
8 years ago
18 changed files with 623 additions and 278 deletions
@ -1,73 +0,0 @@ |
|||||||
/**********************************************************************
|
|
||||||
* 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 <stdio.h> |
|
||||||
#include <string.h> |
|
||||||
|
|
||||||
#include "include/secp256k1.h" |
|
||||||
#include "include/secp256k1_schnorr.h" |
|
||||||
#include "util.h" |
|
||||||
#include "bench.h" |
|
||||||
|
|
||||||
typedef struct { |
|
||||||
unsigned char key[32]; |
|
||||||
unsigned char sig[64]; |
|
||||||
unsigned char pubkey[33]; |
|
||||||
size_t pubkeylen; |
|
||||||
} benchmark_schnorr_sig_t; |
|
||||||
|
|
||||||
typedef struct { |
|
||||||
secp256k1_context *ctx; |
|
||||||
unsigned char msg[32]; |
|
||||||
benchmark_schnorr_sig_t sigs[64]; |
|
||||||
int numsigs; |
|
||||||
} benchmark_schnorr_verify_t; |
|
||||||
|
|
||||||
static void benchmark_schnorr_init(void* arg) { |
|
||||||
int i, k; |
|
||||||
benchmark_schnorr_verify_t* data = (benchmark_schnorr_verify_t*)arg; |
|
||||||
|
|
||||||
for (i = 0; i < 32; i++) { |
|
||||||
data->msg[i] = 1 + i; |
|
||||||
} |
|
||||||
for (k = 0; k < data->numsigs; k++) { |
|
||||||
secp256k1_pubkey pubkey; |
|
||||||
for (i = 0; i < 32; i++) { |
|
||||||
data->sigs[k].key[i] = 33 + i + k; |
|
||||||
} |
|
||||||
secp256k1_schnorr_sign(data->ctx, data->sigs[k].sig, data->msg, data->sigs[k].key, NULL, NULL); |
|
||||||
data->sigs[k].pubkeylen = 33; |
|
||||||
CHECK(secp256k1_ec_pubkey_create(data->ctx, &pubkey, data->sigs[k].key)); |
|
||||||
CHECK(secp256k1_ec_pubkey_serialize(data->ctx, data->sigs[k].pubkey, &data->sigs[k].pubkeylen, &pubkey, SECP256K1_EC_COMPRESSED)); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
static void benchmark_schnorr_verify(void* arg) { |
|
||||||
int i; |
|
||||||
benchmark_schnorr_verify_t* data = (benchmark_schnorr_verify_t*)arg; |
|
||||||
|
|
||||||
for (i = 0; i < 20000 / data->numsigs; i++) { |
|
||||||
secp256k1_pubkey pubkey; |
|
||||||
data->sigs[0].sig[(i >> 8) % 64] ^= (i & 0xFF); |
|
||||||
CHECK(secp256k1_ec_pubkey_parse(data->ctx, &pubkey, data->sigs[0].pubkey, data->sigs[0].pubkeylen)); |
|
||||||
CHECK(secp256k1_schnorr_verify(data->ctx, data->sigs[0].sig, data->msg, &pubkey) == ((i & 0xFF) == 0)); |
|
||||||
data->sigs[0].sig[(i >> 8) % 64] ^= (i & 0xFF); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main(void) { |
|
||||||
benchmark_schnorr_verify_t data; |
|
||||||
|
|
||||||
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); |
|
||||||
|
|
||||||
data.numsigs = 1; |
|
||||||
run_benchmark("schnorr_verify", benchmark_schnorr_verify, benchmark_schnorr_init, NULL, &data, 10, 20000); |
|
||||||
|
|
||||||
secp256k1_context_destroy(data.ctx); |
|
||||||
return 0; |
|
||||||
} |
|
Loading…
Reference in new issue