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
}
/**
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
}
* 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