//! SPDX-FileCopyrightText: 2013-2026 Frank Denis <j@pureftpd.org>
//! SPDX-License-Identifier: ISC
-export const optblocker_u8: u8 = 0
-
/* sqrt(-1) */
export const fe25519_sqrtm1 = StaticArray.fromArray<i32>([
-32595792, -7943725, 9377950, 3500415, 12389472, -272473, -25146209, -2005654, 326686, 11406482
* - ge_precomp (Duif): (y+x,y-x,2dxy)
*/
import { base, base2 } from './base'
-import { ed25519_d, fe25519_sqrtm1, optblocker_u8 } from './constants'
+import { ed25519_d, fe25519_sqrtm1 } from './constants'
import { FieldElement, fe, fe_1, fe_add, fe_cmov, fe_copy, fe_frombytes, fe_isnegative, fe_iszero, 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_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, negative } from './utils'
fe_cmov(h.X, x_sqrtm1, 1 - has_m_root)
fe_neg(negx, h.X)
- fe_cmov(h.X, negx, fe_isnegative(h.X) ^ (((s[31] >> 5) ^ optblocker_u8) >> 2))
+ fe_cmov(h.X, negx, fe_isnegative(h.X) ^ ((s[31] >> 5) >> 2))
fe_mul(h.T, h.X, h.Y)
return (has_m_root | has_p_root) - 1
//! SPDX-FileCopyrightText: 2026 Chris Duncan <chris@codecow.com>
//! SPDX-License-Identifier: GPL-3.0-or-later
-import { optblocker_u8 } from './constants'
-
//@ts-expect-error
@inline
export function equal (b: i8, c: i8): u8 {
const x: u8 = u8(b) ^ u8(c) /* 0: yes; 1..255: no */
let y: u32 = u32(x) /* 0: yes; 1..255: no */
y--
- return u8(((y >> 29) ^ optblocker_u8) >> 2) /* 1: yes; 0: no */
+ return u8((y >> 29) >> 2) /* 1: yes; 0: no */
}
//@ts-expect-error
@inline
export function negative (b: i8): u8 {
const x: u8 = u8(b) /* 0..127: no 128..255: yes */
- return ((x >> 5) ^ optblocker_u8) >> 2 /* 1: yes; 0: no */
+ return (x >> 5) >> 2 /* 1: yes; 0: no */
}
//@ts-expect-error