generator: add API tests
This commit is contained in:
parent
e93e886cb4
commit
a3ad4a8668
@ -73,7 +73,7 @@ SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_generator_generate(
|
||||
*
|
||||
* Returns: 0 in the highly unlikely case the seed is not acceptable or when
|
||||
* blind is out of range. 1 otherwise.
|
||||
* Args: ctx: a secp256k1 context object
|
||||
* Args: ctx: a secp256k1 context object, initialized for signing
|
||||
* Out: gen: a generator object
|
||||
* In: seed32: a 32-byte seed
|
||||
* blind32: a 32-byte secret value to blind the generator with.
|
||||
|
@ -17,6 +17,65 @@
|
||||
|
||||
#include "include/secp256k1_generator.h"
|
||||
|
||||
void test_generator_api(void) {
|
||||
unsigned char key[32];
|
||||
unsigned char blind[32];
|
||||
unsigned char sergen[33];
|
||||
secp256k1_context *none = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
|
||||
secp256k1_context *sign = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
|
||||
secp256k1_context *vrfy = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY);
|
||||
secp256k1_generator gen;
|
||||
int32_t ecount = 0;
|
||||
|
||||
secp256k1_context_set_error_callback(none, counting_illegal_callback_fn, &ecount);
|
||||
secp256k1_context_set_error_callback(sign, counting_illegal_callback_fn, &ecount);
|
||||
secp256k1_context_set_error_callback(vrfy, counting_illegal_callback_fn, &ecount);
|
||||
secp256k1_context_set_illegal_callback(none, counting_illegal_callback_fn, &ecount);
|
||||
secp256k1_context_set_illegal_callback(sign, counting_illegal_callback_fn, &ecount);
|
||||
secp256k1_context_set_illegal_callback(vrfy, counting_illegal_callback_fn, &ecount);
|
||||
secp256k1_rand256(key);
|
||||
secp256k1_rand256(blind);
|
||||
|
||||
CHECK(secp256k1_generator_generate(none, &gen, key) == 1);
|
||||
CHECK(ecount == 0);
|
||||
CHECK(secp256k1_generator_generate(none, NULL, key) == 0);
|
||||
CHECK(ecount == 1);
|
||||
CHECK(secp256k1_generator_generate(none, &gen, NULL) == 0);
|
||||
CHECK(ecount == 2);
|
||||
|
||||
CHECK(secp256k1_generator_generate_blinded(sign, &gen, key, blind) == 1);
|
||||
CHECK(ecount == 2);
|
||||
CHECK(secp256k1_generator_generate_blinded(vrfy, &gen, key, blind) == 0);
|
||||
CHECK(ecount == 3);
|
||||
CHECK(secp256k1_generator_generate_blinded(none, &gen, key, blind) == 0);
|
||||
CHECK(ecount == 4);
|
||||
CHECK(secp256k1_generator_generate_blinded(vrfy, NULL, key, blind) == 0);
|
||||
CHECK(ecount == 5);
|
||||
CHECK(secp256k1_generator_generate_blinded(vrfy, &gen, NULL, blind) == 0);
|
||||
CHECK(ecount == 6);
|
||||
CHECK(secp256k1_generator_generate_blinded(vrfy, &gen, key, NULL) == 0);
|
||||
CHECK(ecount == 7);
|
||||
|
||||
CHECK(secp256k1_generator_serialize(none, sergen, &gen) == 1);
|
||||
CHECK(ecount == 7);
|
||||
CHECK(secp256k1_generator_serialize(none, NULL, &gen) == 0);
|
||||
CHECK(ecount == 8);
|
||||
CHECK(secp256k1_generator_serialize(none, sergen, NULL) == 0);
|
||||
CHECK(ecount == 9);
|
||||
|
||||
CHECK(secp256k1_generator_serialize(none, sergen, &gen) == 1);
|
||||
CHECK(secp256k1_generator_parse(none, &gen, sergen) == 1);
|
||||
CHECK(ecount == 9);
|
||||
CHECK(secp256k1_generator_parse(none, NULL, sergen) == 0);
|
||||
CHECK(ecount == 10);
|
||||
CHECK(secp256k1_generator_parse(none, &gen, NULL) == 0);
|
||||
CHECK(ecount == 11);
|
||||
|
||||
secp256k1_context_destroy(none);
|
||||
secp256k1_context_destroy(sign);
|
||||
secp256k1_context_destroy(vrfy);
|
||||
}
|
||||
|
||||
void test_shallue_van_de_woestijne(void) {
|
||||
/* Matches with the output of the shallue_van_de_woestijne.sage SAGE program */
|
||||
static const secp256k1_ge_storage results[32] = {
|
||||
@ -133,6 +192,7 @@ void test_generator_generate(void) {
|
||||
|
||||
void run_generator_tests(void) {
|
||||
test_shallue_van_de_woestijne();
|
||||
test_generator_api();
|
||||
test_generator_generate();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user