Merge BlockstreamResearch/secp256k1-zkp#347: bench: Fix bench_whitelist hang
be075fe86cbench: Fix bench_whitelist hang (mllwchrry) Pull request description: Addresses #346 ACKs for top commit: real-or-random: utACKbe075fe86cTree-SHA512: 53503c28f967642db305782162e534c13a1c3cfe27bbcfb501fbb2630a72b851725a02ac41f343d2adf5c382afec2a0b9c14a7b2dfa609e935dc9ccb5a281b9f
This commit is contained in:
@@ -14,7 +14,6 @@
|
||||
#include "hash_impl.h"
|
||||
#include "int128_impl.h"
|
||||
#include "scalar_impl.h"
|
||||
#include "testrand_impl.h"
|
||||
|
||||
#define MAX_N_KEYS 30
|
||||
|
||||
@@ -50,17 +49,19 @@ static void run_test(bench_data* data, int iters) {
|
||||
run_benchmark(str, bench_whitelist, bench_whitelist_setup, NULL, data, 100, iters);
|
||||
}
|
||||
|
||||
static void random_scalar_order(secp256k1_scalar *num) {
|
||||
do {
|
||||
unsigned char b32[32];
|
||||
int overflow = 0;
|
||||
testrand256(b32);
|
||||
secp256k1_scalar_set_b32(num, b32, &overflow);
|
||||
if (overflow || secp256k1_scalar_is_zero(num)) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
} while(1);
|
||||
static void generate_scalar(secp256k1_scalar *scalar, unsigned char *seckey, uint32_t num) {
|
||||
secp256k1_sha256 sha256;
|
||||
unsigned char c[13] = {'w','h','i','t','e','l','i','s','t', 0, 0, 0, 0};
|
||||
int is_valid;
|
||||
c[9] = num;
|
||||
c[10] = num >> 8;
|
||||
c[11] = num >> 16;
|
||||
c[12] = num >> 24;
|
||||
secp256k1_sha256_initialize(&sha256);
|
||||
secp256k1_sha256_write(&sha256, c, sizeof(c));
|
||||
secp256k1_sha256_finalize(&sha256, seckey);
|
||||
is_valid = secp256k1_scalar_set_b32_seckey(scalar, seckey);
|
||||
CHECK(is_valid);
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
@@ -76,22 +77,19 @@ int main(void) {
|
||||
data.ctx = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
|
||||
|
||||
/* Start with subkey */
|
||||
random_scalar_order(&ssub);
|
||||
secp256k1_scalar_get_b32(data.csub, &ssub);
|
||||
generate_scalar(&ssub, data.csub, 0);
|
||||
CHECK(secp256k1_ec_seckey_verify(data.ctx, data.csub) == 1);
|
||||
CHECK(secp256k1_ec_pubkey_create(data.ctx, &data.sub_pubkey, data.csub) == 1);
|
||||
/* Then offline and online whitelist keys */
|
||||
for (i = 0; i < n_keys; i++) {
|
||||
secp256k1_scalar son, soff;
|
||||
|
||||
/* Create two keys */
|
||||
random_scalar_order(&son);
|
||||
secp256k1_scalar_get_b32(data.online_seckey[i], &son);
|
||||
/* Create two keys using different counter values to ensure different keys */
|
||||
generate_scalar(&son, data.online_seckey[i], i + 1);
|
||||
CHECK(secp256k1_ec_seckey_verify(data.ctx, data.online_seckey[i]) == 1);
|
||||
CHECK(secp256k1_ec_pubkey_create(data.ctx, &data.online_pubkeys[i], data.online_seckey[i]) == 1);
|
||||
|
||||
random_scalar_order(&soff);
|
||||
secp256k1_scalar_get_b32(data.summed_seckey[i], &soff);
|
||||
generate_scalar(&soff, data.summed_seckey[i], i + 1 + n_keys);
|
||||
CHECK(secp256k1_ec_seckey_verify(data.ctx, data.summed_seckey[i]) == 1);
|
||||
CHECK(secp256k1_ec_pubkey_create(data.ctx, &data.offline_pubkeys[i], data.summed_seckey[i]) == 1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user