]> git.codecow.com Git - nano25519.git/commitdiff
Eliminate another scratch buffer.
authorChris Duncan <chris@zoso.dev>
Fri, 2 Oct 2026 05:20:38 +0000 (22:20 -0700)
committerChris Duncan <chris@zoso.dev>
Fri, 2 Oct 2026 05:20:38 +0000 (22:20 -0700)
src/assembly/ed25519/p.ts

index e36a98eb4f0dc461a876633aa52261a3ea84129d..e98adb87c83411e50a85dfd01cc2ebbf4c4789d8 100644 (file)
@@ -229,30 +229,31 @@ export function ge_sub_p3 (r: ge_p3, p: ge_p3, q: ge_p3): void {
        ge_p1p1_to_p3(r, p1p1)
 }
 
-const ge_sub_cached_t0: FieldElement = fe()
 /**
- * r = p - q
+ * `r = p - q`
+ *
+ * `r.X` is doubled and stored to `p.X` because `p` is not referenced again
+ * before being reassigned at the only call site of this function.
  */
 export function ge_sub_cached (r: ge_p1p1, p: ge_p3, q: ge_cached): void {
-       const t0 = ge_sub_cached_t0
        fe_add(r.X, p.Y, p.X)
        fe_sub(r.Y, p.Y, p.X)
        fe_mul(r.Z, r.X, q.YminusX)
        fe_mul(r.Y, r.Y, q.YplusX)
        fe_mul(r.T, q.T2d, p.T)
        fe_mul(r.X, p.Z, q.Z)
-       fe_dbl(t0, r.X)
+       fe_dbl(p.X, r.X)
        fe_sub(r.X, r.Z, r.Y)
        fe_add(r.Y, r.Z, r.Y)
-       fe_sub(r.Z, t0, r.T)
-       fe_add(r.T, t0, r.T)
+       fe_sub(r.Z, p.X, r.T)
+       fe_add(r.T, p.X, r.T)
 }
 
 /**
  * `r = p - q`
  *
- * `p.Z` is doubled and stored to itself because its value is not used again
- * before being reassigned at the only call site of this function.
+ * `p.Z` is doubled and stored to itself because its value is not referenced
+ * again before being reassigned at the only call site of this function.
  */
 export function ge_sub_precomp (r: ge_p1p1, p: ge_p3, q: ge_precomp): void {
        fe_add(r.X, p.Y, p.X)