Skip to content

Commit 365f274

Browse files
group: Simplify secp256k1_ge_set_all_gej
No semantic changes.
1 parent d3082dd commit 365f274

File tree

1 file changed

+12
-20
lines changed

1 file changed

+12
-20
lines changed

src/group_impl.h

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -198,37 +198,29 @@ static void secp256k1_ge_set_gej_var(secp256k1_ge *r, secp256k1_gej *a) {
198198
static void secp256k1_ge_set_all_gej(secp256k1_ge *r, const secp256k1_gej *a, size_t len) {
199199
secp256k1_fe u;
200200
size_t i;
201-
size_t last_i = SIZE_MAX;
202201
#ifdef VERIFY
203202
for (i = 0; i < len; i++) {
204203
SECP256K1_GEJ_VERIFY(&a[i]);
205204
VERIFY_CHECK(!secp256k1_gej_is_infinity(&a[i]));
206205
}
207206
#endif
208207

209-
for (i = 0; i < len; i++) {
210-
/* Use destination's x coordinates as scratch space */
211-
if (last_i == SIZE_MAX) {
212-
r[i].x = a[i].z;
213-
} else {
214-
secp256k1_fe_mul(&r[i].x, &r[last_i].x, &a[i].z);
215-
}
216-
last_i = i;
217-
}
218-
if (last_i == SIZE_MAX) {
208+
if (len == 0) {
219209
return;
220210
}
221-
secp256k1_fe_inv(&u, &r[last_i].x);
222211

223-
i = last_i;
224-
while (i > 0) {
225-
i--;
226-
secp256k1_fe_mul(&r[last_i].x, &r[i].x, &u);
227-
secp256k1_fe_mul(&u, &u, &a[last_i].z);
228-
last_i = i;
212+
/* Use destination's x coordinates as scratch space */
213+
r[0].x = a[0].z;
214+
for (i = 1; i < len; i++) {
215+
secp256k1_fe_mul(&r[i].x, &r[i - 1].x, &a[i].z);
229216
}
230-
VERIFY_CHECK(!a[last_i].infinity);
231-
r[last_i].x = u;
217+
secp256k1_fe_inv(&u, &r[len - 1].x);
218+
219+
for (i = len - 1; i > 0; i--) {
220+
secp256k1_fe_mul(&r[i].x, &r[i - 1].x, &u);
221+
secp256k1_fe_mul(&u, &u, &a[i].z);
222+
}
223+
r[0].x = u;
232224

233225
for (i = 0; i < len; i++) {
234226
secp256k1_ge_set_gej_zinv(&r[i], &a[i], &r[i].x);

0 commit comments

Comments
 (0)