]> git.codecow.com Git - nano25519.git/commitdiff
Fix byte comparison.
authorChris Duncan <chris@codecow.com>
Fri, 28 Aug 2026 01:44:27 +0000 (18:44 -0700)
committerChris Duncan <chris@codecow.com>
Fri, 28 Aug 2026 01:44:27 +0000 (18:44 -0700)
src/assembly/crypto_verify.ts
src/assembly/utils.ts

index d19caf8231127019b0a6dfd20f0cf5c0d0efaf44..7bbfe9fd5db146a394200ebf524cc0ab853c284d 100644 (file)
@@ -64,7 +64,7 @@ export function crypto_verify_relaxed (s: StaticArray<u8>, M: StaticArray<u8>, p
        ge_double_scalarmult_vartime_to_p3(sb_ah, h, A, S)
        ge_p3_tobytes(check_r, sb_ah)
 
-       return equalbytes(s, check_r) - 1
+       return equalbytes(s, check_r, KEY_BYTELENGTH) - 1
 }
 
 /**
@@ -105,5 +105,5 @@ export function crypto_verify_strict (s: StaticArray<u8>, M: StaticArray<u8>, ml
        return ge_has_small_order(check) - 1
 
        // if (ge_has_small_order(check) == 0) return -1
-       // return equalbytes(s, check) - 1
+       // return equalbytes(s, check, KEY_BYTELENGTH) - 1
 }
index f17565b76b90eeccc054ea4e0109e71a1d2d1258..34536777d0d36d6580c99d202a764a500c7575a2 100644 (file)
@@ -28,13 +28,14 @@ export function equal (b: i8, c: i8): u8 {
  * Constant-time byte comparison.
  * @param {StaticArray<u8>} f
  * @param {StaticArray<u8>} g
- * @returns 1 if all bytes are equal, else 0
+ * @param {i32} n
+ * @returns 1 if `n` bytes are equal, else 0
  */
 //@ts-expect-error
 @inline
-export function equalbytes (f: StaticArray<u8>, g: StaticArray<u8>): u8 {
+export function equalbytes (f: StaticArray<u8>, g: StaticArray<u8>, n: i32): u8 {
        let s: u8 = 0
-       for (let i = 0; i < 12; i++) {
+       for (let i = 0; i < n; i++) {
                s |= f[i] ^ g[i]
        }
        return ((s - 1) >> 8) & 1