]> git.codecow.com Git - nano25519.git/commitdiff
Clear static buffer after use to avoid leaveing the negated copy of the last base...
authorChris Duncan <chris@zoso.dev>
Sat, 19 Sep 2026 06:17:21 +0000 (23:17 -0700)
committerChris Duncan <chris@zoso.dev>
Sat, 19 Sep 2026 06:17:21 +0000 (23:17 -0700)
src/assembly/ge.ts

index dcbd51d0c7c1fb5305d019283040c32a62436e6a..db4ed8bcbc466bba860ffd65bdddf85eeea9c6cb 100644 (file)
@@ -31,7 +31,8 @@ function ge_cmov (t: ge_precomp, u: usize, b: u8): void {
        fe_memcmov(changetype<usize>(t.xy2d), u + 96, b)
 }
 
-const minust = changetype<usize>(new StaticArray<i32>(36))
+/** Scratch array equivalent to a `ge_precomp`: 3x 12-limb FieldElements */
+const minust = new StaticArray<i32>(36)
 //@ts-expect-error
 @inline
 function ge_cmov8_base (t: ge_precomp, bp: usize, b: i8): void {
@@ -50,11 +51,12 @@ function ge_cmov8_base (t: ge_precomp, bp: usize, b: i8): void {
        ge_cmov(t, bp += 144, equal(babs, 7))
        ge_cmov(t, bp += 144, equal(babs, 8))
 
-       fe_memcopy(minust, changetype<usize>(t.yminusx))
-       fe_memcopy(minust + 48, changetype<usize>(t.yplusx))
-       fe_memneg(minust + 96, changetype<usize>(t.xy2d))
+       fe_memcopy(changetype<usize>(minust), changetype<usize>(t.yminusx))
+       fe_memcopy(changetype<usize>(minust) + 48, changetype<usize>(t.yplusx))
+       fe_memneg(changetype<usize>(minust) + 96, changetype<usize>(t.xy2d))
 
-       ge_cmov(t, minust, bnegative)
+       ge_cmov(t, changetype<usize>(minust), bnegative)
+       minust.fill(0)
 }
 
 const u: FieldElement = fe()