Skip to content

Commit 39b2f2a

Browse files
committed
Add test case for ecmult_gen recoded = {-1,0,1}
1 parent 644e86d commit 39b2f2a

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/tests.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5600,9 +5600,29 @@ static void test_ecmult_gen_blind_reset(void) {
56005600
CHECK(secp256k1_ge_eq_var(&p1, &p2));
56015601
}
56025602

5603+
/* Verify that ecmult_gen for scalars gn for which gn + scalar_offset = {-1,0,1}. */
5604+
static void test_ecmult_gen_edge_cases(void) {
5605+
int i;
5606+
secp256k1_gej res1, res2, res3;
5607+
secp256k1_scalar gn = secp256k1_scalar_one; /* gn = 1 */
5608+
secp256k1_scalar_add(&gn, &gn, &CTX->ecmult_gen_ctx.scalar_offset); /* gn = 1 + scalar_offset */
5609+
secp256k1_scalar_negate(&gn, &gn); /* gn = -1 - scalar_offset */
5610+
5611+
for (i = -1; i < 2; ++i) {
5612+
/* Run test with gn = i - scalar_offset (so that the ecmult_gen recoded value represents i). */
5613+
secp256k1_ecmult_gen(&CTX->ecmult_gen_ctx, &res1, &gn);
5614+
secp256k1_ecmult(&res2, NULL, &secp256k1_scalar_zero, &gn);
5615+
secp256k1_ecmult_const(&res3, &secp256k1_ge_const_g, &gn);
5616+
CHECK(secp256k1_gej_eq_var(&res1, &res2));
5617+
CHECK(secp256k1_gej_eq_var(&res1, &res3));
5618+
secp256k1_scalar_add(&gn, &gn, &secp256k1_scalar_one);
5619+
}
5620+
}
5621+
56035622
static void run_ecmult_gen_blind(void) {
56045623
int i;
56055624
test_ecmult_gen_blind_reset();
5625+
test_ecmult_gen_edge_cases();
56065626
for (i = 0; i < 10; i++) {
56075627
test_ecmult_gen_blind();
56085628
}

0 commit comments

Comments
 (0)