]> git.codecow.com Git - nano25519.git/commitdiff
Inline another single-use utility function.
authorChris Duncan <chris@zoso.dev>
Mon, 28 Sep 2026 04:24:39 +0000 (21:24 -0700)
committerChris Duncan <chris@zoso.dev>
Mon, 28 Sep 2026 04:24:39 +0000 (21:24 -0700)
src/assembly/ed25519/ge.ts
src/assembly/ed25519/utils.ts

index dbc93fe76b8cd6a9f9e6426b52ab2ecbeb566628..2c9b06ef0256e844bd6b3c5f31b7045fd188f488 100644 (file)
@@ -20,7 +20,6 @@ import { base } from './base'
 import { base2 } from './base2'
 import { FieldElement, fe, fe_1, fe_add, fe_cmov, fe_frombytes, fe_isnegative, fe_iszero, fe_memcmov, fe_memcopy, fe_memneg, fe_mul, fe_neg, fe_pow22523, fe_sq, fe_sub } from './fe'
 import { ge_add_cached, ge_add_precomp, ge_cached, ge_p1p1, ge_p1p1_0, ge_p1p1_to_p2, ge_p1p1_to_p3, ge_p2, ge_p2_0, ge_p2_dbl, ge_p2_to_p3, ge_p3, ge_p3_0, ge_p3_dbl, ge_p3_to_cached, ge_p3_tobytes, ge_precomp, ge_precomp_0, ge_sub_cached, ge_sub_precomp } from './p'
-import { equal } from './utils'
 
 /**
  * √-1
@@ -48,10 +47,11 @@ function ge_cmov8_base (t: ge_precomp, bp: usize, b: i8): void {
        ge_precomp_0(t)
 
        // base pointer offset += 144n = (4 bytes * 12 values * 3 fields) * n
-       for (let i: i8 = 1; i < 9; i++, bp += 144) {
-               fe_memcmov(changetype<usize>(t.yplusx), bp, equal(babs, i))
-               fe_memcmov(changetype<usize>(t.yminusx), bp + 48, equal(babs, i))
-               fe_memcmov(changetype<usize>(t.xy2d), bp + 96, equal(babs, i))
+       for (let i: u8 = 1; i < 9; i++, bp += 144) {
+               const iEqualsBabs = (u32(babs ^ i) - 1) >> 31 /* 1: yes; 0: no */
+               fe_memcmov(changetype<usize>(t.yplusx), bp, iEqualsBabs)
+               fe_memcmov(changetype<usize>(t.yminusx), bp + 48, iEqualsBabs)
+               fe_memcmov(changetype<usize>(t.xy2d), bp + 96, iEqualsBabs)
        }
 
        fe_memcopy(changetype<usize>(minust), changetype<usize>(t.yminusx))
index 29c06eb1113a392ceab2e5dc91f2cf828ef60813..ab2d8742e7521005f929f70c2f61af890f93afb5 100644 (file)
@@ -16,14 +16,6 @@ export function clamp (k: StaticArray<u8>): void {
        k[31] |= 64
 }
 
-//@ts-expect-error
-@inline
-export function equal (b: i8, c: i8): u8 {
-       const x: u8 = u8(b) ^ u8(c) /* 0: yes; 1..255: no */
-       const y: u32 = u32(x) /* 0: yes; 1..255: no */
-       return u8((y - 1) >> 31) /* 1: yes; 0: no */
-}
-
 /**
  * Constant-time byte comparison.
  * @param {StaticArray<u8>} f