authorgravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2026-09-27 17:51:33+02:00
committergravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2026-10-01 12:06:49+02:00
log56eba31be2ecf85c11403db7ef76afa60cc4ebe6
treee2744bef87712d5d13df5cd514fa9bbd8713febc
parentb30ccf20d34a94627aaa458c94ca191d5119b473

Shorter


1 files changed, 7 insertions(+), 12 deletions(-)

lib/std/crypto/pcurves/secp256k1.zig+7-12
...@@ -367,23 +367,18 @@ pub const Secp256k1 = struct {...@@ -367,23 +367,18 @@ pub const Secp256k1 = struct {
367367
368 for ([_][32]u8{ split.r1, split.r2 }, es[2 * i ..][0..2]) |r, *e| {368 for ([_][32]u8{ split.r1, split.r2 }, es[2 * i ..][0..2]) |r, *e| {
369 const x = mem.readInt(u256, &r, .little);369 const x = mem.readInt(u256, &r, .little);
370 if (x <= scalar.field_order / 2) {370 const negate = x > scalar.field_order / 2;
371 e.* = slide(r);371 var r_abs: [32]u8 = undefined;
372 } else {372 mem.writeInt(u256, &r_abs, if (negate) scalar.field_order - x else x, .little);
373 var r_neg: [32]u8 = undefined;373 e.* = slide(r_abs);
374 mem.writeInt(u256, &r_neg, scalar.field_order - x, .little);374 if (negate) {
375 e.* = slide(r_neg);
376 for (e) |*d| d.* = -d.*;375 for (e) |*d| d.* = -d.*;
377 }376 }
378 }377 }
379 }378 }
380379
381 var pos: usize = 2 * 32;380 var pos: usize = 0;
382 top: while (pos > 0) : (pos -= 1) {381 for (&es) |*e| pos = @max(pos, mem.findLastNone(i8, e, &.{0}) orelse 0);
383 for (&es) |*e| {
384 if (e[pos] != 0) break :top;
385 }
386 }
387 var q = Secp256k1.identityElement;382 var q = Secp256k1.identityElement;
388 while (true) : (pos -= 1) {383 while (true) : (pos -= 1) {
389 for (&pcs, &es) |*pc, *e| {384 for (&pcs, &es) |*pc, *e| {