Merge pull request #31 from apoelstra/2018-10-commit-fix

Fix pedersen commitment serialization after #30 broke it
This commit is contained in:
Andrew Poelstra 2018-10-08 05:59:42 +00:00 committed by GitHub
commit 2318f18a90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 1 deletions

View File

@ -190,8 +190,28 @@ void test_generator_generate(void) {
} }
} }
void test_generator_fixed_vector(void) {
const unsigned char two_g[33] = {
0x0b,
0xc6, 0x04, 0x7f, 0x94, 0x41, 0xed, 0x7d, 0x6d, 0x30, 0x45, 0x40, 0x6e, 0x95, 0xc0, 0x7c, 0xd8,
0x5c, 0x77, 0x8e, 0x4b, 0x8c, 0xef, 0x3c, 0xa7, 0xab, 0xac, 0x09, 0xb9, 0x5c, 0x70, 0x9e, 0xe5
};
unsigned char result[33];
secp256k1_generator parse;
CHECK(secp256k1_generator_parse(ctx, &parse, two_g));
CHECK(secp256k1_generator_serialize(ctx, result, &parse));
CHECK(memcmp(two_g, result, 33) == 0);
result[0] = 0x0a;
CHECK(secp256k1_generator_parse(ctx, &parse, result));
result[0] = 0x08;
CHECK(!secp256k1_generator_parse(ctx, &parse, result));
}
void run_generator_tests(void) { void run_generator_tests(void) {
test_shallue_van_de_woestijne(); test_shallue_van_de_woestijne();
test_generator_fixed_vector();
test_generator_api(); test_generator_api();
test_generator_generate(); test_generator_generate();
} }

View File

@ -73,7 +73,7 @@ int secp256k1_pedersen_commitment_serialize(const secp256k1_context* ctx, unsign
secp256k1_pedersen_commitment_load(&ge, commit); secp256k1_pedersen_commitment_load(&ge, commit);
output[0] = 11 ^ secp256k1_fe_is_quad_var(&ge.y); output[0] = 9 ^ secp256k1_fe_is_quad_var(&ge.y);
secp256k1_fe_normalize_var(&ge.x); secp256k1_fe_normalize_var(&ge.x);
secp256k1_fe_get_b32(&output[1], &ge.x); secp256k1_fe_get_b32(&output[1], &ge.x);
return 1; return 1;

View File

@ -672,10 +672,30 @@ void test_rangeproof_fixed_vectors(void) {
)); ));
} }
void test_pedersen_commitment_fixed_vector(void) {
const unsigned char two_g[33] = {
0x09,
0xc6, 0x04, 0x7f, 0x94, 0x41, 0xed, 0x7d, 0x6d, 0x30, 0x45, 0x40, 0x6e, 0x95, 0xc0, 0x7c, 0xd8,
0x5c, 0x77, 0x8e, 0x4b, 0x8c, 0xef, 0x3c, 0xa7, 0xab, 0xac, 0x09, 0xb9, 0x5c, 0x70, 0x9e, 0xe5
};
unsigned char result[33];
secp256k1_pedersen_commitment parse;
CHECK(secp256k1_pedersen_commitment_parse(ctx, &parse, two_g));
CHECK(secp256k1_pedersen_commitment_serialize(ctx, result, &parse));
CHECK(memcmp(two_g, result, 33) == 0);
result[0] = 0x08;
CHECK(secp256k1_pedersen_commitment_parse(ctx, &parse, result));
result[0] = 0x0c;
CHECK(!secp256k1_pedersen_commitment_parse(ctx, &parse, result));
}
void run_rangeproof_tests(void) { void run_rangeproof_tests(void) {
int i; int i;
test_api(); test_api();
test_rangeproof_fixed_vectors(); test_rangeproof_fixed_vectors();
test_pedersen_commitment_fixed_vector();
for (i = 0; i < 10*count; i++) { for (i = 0; i < 10*count; i++) {
test_pedersen(); test_pedersen();
} }