From b9a4b545b225db6cba77e68c331e866a9a4363dc Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Thu, 14 Aug 2025 08:23:33 -0700 Subject: [PATCH] Use extra term to make mod and carry process a little more clear. --- src/lib/crypto/nano-nacl.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib/crypto/nano-nacl.ts b/src/lib/crypto/nano-nacl.ts index 9a0a2ed..04c17f9 100644 --- a/src/lib/crypto/nano-nacl.ts +++ b/src/lib/crypto/nano-nacl.ts @@ -301,13 +301,14 @@ export class NanoNaCl { ]) static modL (r: Uint8Array, x: BigInt64Array): void { - let c: bigint, v: bigint + let c: bigint, t: bigint, v: bigint for (let i = 63; i >= 32; --i) { c = 0n for (let j = i - 32, k = i - 12; j < k; j++) { - x[j] += c - 16n * x[i] * this.L[j - (i - 32)] - c = (x[j] + 128n) / 256n - x[j] -= c * 256n + t = 16n * x[i] * this.L[j - (i - 32)] + v = x[j] + c - t + c = (v + 128n) / 256n + x[j] = v - (c * 256n) } x[i - 12] += c x[i] = 0n -- 2.47.3