Skip to content

Commit db72678

Browse files
committed
Merge #878: Remove unused secp256k1_fe_inv_all_var
75d2ae1 Remove unused secp256k1_fe_inv_all_var (Pieter Wuille) Pull request description: ACKs for top commit: practicalswift: cr ACK 75d2ae1: patch looks correct real-or-random: utACK 75d2ae1 jonasnick: utACK 75d2ae1 Tree-SHA512: 6f548a436c6dcb275493e73e6afa23fd1b79392cc3071878f98735732ac9c93971e5c92736c3fe50eaae90a200e1a435e9be9f14d1a69251c83876a6e3c46d41
2 parents b732701 + 75d2ae1 commit db72678

File tree

3 files changed

+1
-83
lines changed

3 files changed

+1
-83
lines changed

src/field.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,6 @@ static void secp256k1_fe_inv(secp256k1_fe *r, const secp256k1_fe *a);
114114
/** Potentially faster version of secp256k1_fe_inv, without constant-time guarantee. */
115115
static void secp256k1_fe_inv_var(secp256k1_fe *r, const secp256k1_fe *a);
116116

117-
/** Calculate the (modular) inverses of a batch of field elements. Requires the inputs' magnitudes to be
118-
* at most 8. The output magnitudes are 1 (but not guaranteed to be normalized). The inputs and
119-
* outputs must not overlap in memory. */
120-
static void secp256k1_fe_inv_all_var(secp256k1_fe *r, const secp256k1_fe *a, size_t len);
121-
122117
/** Convert a field element to the storage type. */
123118
static void secp256k1_fe_to_storage(secp256k1_fe_storage *r, const secp256k1_fe *a);
124119

src/field_impl.h

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -263,33 +263,6 @@ static void secp256k1_fe_inv_var(secp256k1_fe *r, const secp256k1_fe *a) {
263263
#endif
264264
}
265265

266-
static void secp256k1_fe_inv_all_var(secp256k1_fe *r, const secp256k1_fe *a, size_t len) {
267-
secp256k1_fe u;
268-
size_t i;
269-
if (len < 1) {
270-
return;
271-
}
272-
273-
VERIFY_CHECK((r + len <= a) || (a + len <= r));
274-
275-
r[0] = a[0];
276-
277-
i = 0;
278-
while (++i < len) {
279-
secp256k1_fe_mul(&r[i], &r[i - 1], &a[i]);
280-
}
281-
282-
secp256k1_fe_inv_var(&u, &r[--i]);
283-
284-
while (i > 0) {
285-
size_t j = i--;
286-
secp256k1_fe_mul(&r[j], &r[i], &u);
287-
secp256k1_fe_mul(&u, &u, &a[j]);
288-
}
289-
290-
r[0] = u;
291-
}
292-
293266
static int secp256k1_fe_is_quad_var(const secp256k1_fe *a) {
294267
#ifndef USE_NUM_NONE
295268
unsigned char b[32];

src/tests.c

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1964,28 +1964,6 @@ void run_field_inv_var(void) {
19641964
}
19651965
}
19661966

1967-
void run_field_inv_all_var(void) {
1968-
secp256k1_fe x[16], xi[16], xii[16];
1969-
int i;
1970-
/* Check it's safe to call for 0 elements */
1971-
secp256k1_fe_inv_all_var(xi, x, 0);
1972-
for (i = 0; i < count; i++) {
1973-
size_t j;
1974-
size_t len = secp256k1_testrand_int(15) + 1;
1975-
for (j = 0; j < len; j++) {
1976-
random_fe_non_zero(&x[j]);
1977-
}
1978-
secp256k1_fe_inv_all_var(xi, x, len);
1979-
for (j = 0; j < len; j++) {
1980-
CHECK(check_fe_inverse(&x[j], &xi[j]));
1981-
}
1982-
secp256k1_fe_inv_all_var(xii, xi, len);
1983-
for (j = 0; j < len; j++) {
1984-
CHECK(check_fe_equal(&x[j], &xii[j]));
1985-
}
1986-
}
1987-
}
1988-
19891967
void run_sqr(void) {
19901968
secp256k1_fe x, s;
19911969

@@ -2111,7 +2089,6 @@ void test_ge(void) {
21112089
*/
21122090
secp256k1_ge *ge = (secp256k1_ge *)checked_malloc(&ctx->error_callback, sizeof(secp256k1_ge) * (1 + 4 * runs));
21132091
secp256k1_gej *gej = (secp256k1_gej *)checked_malloc(&ctx->error_callback, sizeof(secp256k1_gej) * (1 + 4 * runs));
2114-
secp256k1_fe *zinv = (secp256k1_fe *)checked_malloc(&ctx->error_callback, sizeof(secp256k1_fe) * (1 + 4 * runs));
21152092
secp256k1_fe zf;
21162093
secp256k1_fe zfi2, zfi3;
21172094

@@ -2145,23 +2122,6 @@ void test_ge(void) {
21452122
}
21462123
}
21472124

2148-
/* Compute z inverses. */
2149-
{
2150-
secp256k1_fe *zs = checked_malloc(&ctx->error_callback, sizeof(secp256k1_fe) * (1 + 4 * runs));
2151-
for (i = 0; i < 4 * runs + 1; i++) {
2152-
if (i == 0) {
2153-
/* The point at infinity does not have a meaningful z inverse. Any should do. */
2154-
do {
2155-
random_field_element_test(&zs[i]);
2156-
} while(secp256k1_fe_is_zero(&zs[i]));
2157-
} else {
2158-
zs[i] = gej[i].z;
2159-
}
2160-
}
2161-
secp256k1_fe_inv_all_var(zinv, zs, 4 * runs + 1);
2162-
free(zs);
2163-
}
2164-
21652125
/* Generate random zf, and zfi2 = 1/zf^2, zfi3 = 1/zf^3 */
21662126
do {
21672127
random_field_element_test(&zf);
@@ -2270,16 +2230,9 @@ void test_ge(void) {
22702230
free(gej_shuffled);
22712231
}
22722232

2273-
/* Test batch gej -> ge conversion with and without known z ratios. */
2233+
/* Test batch gej -> ge conversion without known z ratios. */
22742234
{
2275-
secp256k1_fe *zr = (secp256k1_fe *)checked_malloc(&ctx->error_callback, (4 * runs + 1) * sizeof(secp256k1_fe));
22762235
secp256k1_ge *ge_set_all = (secp256k1_ge *)checked_malloc(&ctx->error_callback, (4 * runs + 1) * sizeof(secp256k1_ge));
2277-
for (i = 0; i < 4 * runs + 1; i++) {
2278-
/* Compute gej[i + 1].z / gez[i].z (with gej[n].z taken to be 1). */
2279-
if (i < 4 * runs) {
2280-
secp256k1_fe_mul(&zr[i + 1], &zinv[i], &gej[i + 1].z);
2281-
}
2282-
}
22832236
secp256k1_ge_set_all_gej_var(ge_set_all, gej, 4 * runs + 1);
22842237
for (i = 0; i < 4 * runs + 1; i++) {
22852238
secp256k1_fe s;
@@ -2288,7 +2241,6 @@ void test_ge(void) {
22882241
ge_equals_gej(&ge_set_all[i], &gej[i]);
22892242
}
22902243
free(ge_set_all);
2291-
free(zr);
22922244
}
22932245

22942246
/* Test batch gej -> ge conversion with many infinities. */
@@ -2309,7 +2261,6 @@ void test_ge(void) {
23092261

23102262
free(ge);
23112263
free(gej);
2312-
free(zinv);
23132264
}
23142265

23152266

@@ -5670,7 +5621,6 @@ int main(int argc, char **argv) {
56705621
/* field tests */
56715622
run_field_inv();
56725623
run_field_inv_var();
5673-
run_field_inv_all_var();
56745624
run_field_misc();
56755625
run_field_convert();
56765626
run_sqr();

0 commit comments

Comments
 (0)