From: Chris Duncan Date: Sat, 29 Aug 2026 07:25:22 +0000 (-0700) Subject: Pass ge object instead of pointer for A. X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=ed3d3cbba5629e18335dd541ef217107c6fbd5c6;p=nano25519.git Pass ge object instead of pointer for A. --- diff --git a/src/assembly/crypto_verify.ts b/src/assembly/crypto_verify.ts index d2876f5..b10df30 100644 --- a/src/assembly/crypto_verify.ts +++ b/src/assembly/crypto_verify.ts @@ -24,10 +24,9 @@ const check_r = new StaticArray(32) * Verify public key `pub` can be decoded. * @returns 0 if public key fails to decode, else return pointer to A */ -export function crypto_verify_decodepubkey (pub: StaticArray): usize { +export function crypto_verify_decodepubkey (pub: StaticArray): ge_p3 | null { // fail if public key cannot be decoded - if (ge_frombytes_negate_vartime(A, pub) != 0) return 0 - return changetype(A) + return (ge_frombytes_negate_vartime(A, pub) != 0) ? null : A } /** @@ -43,7 +42,7 @@ export function crypto_verify_decodepubkey (pub: StaticArray): usize { * set `A` for the scalar multiplication step before checking `sB = R + hA`. * @returns -1 if signature fails to verify, else return 0 if signature is good */ -export function crypto_verify_relaxed (s: StaticArray, M: StaticArray, A: usize, pub: StaticArray): i32 { +export function crypto_verify_relaxed (s: StaticArray, M: StaticArray, A: ge_p3, pub: StaticArray): i32 { // fail if private scalar `S` is out of range (`2²⁵³ ≤ S`) if ((s[63] & 224) != 0) return -1 diff --git a/src/assembly/index.ts b/src/assembly/index.ts index c66fd8b..8905fad 100644 --- a/src/assembly/index.ts +++ b/src/assembly/index.ts @@ -218,7 +218,7 @@ export function verify_blocks (count: i32): void { // Verify public key before proceeding with signature verification const A = crypto_verify_decodepubkey(pub) - if (A != 0) { + if (A != null) { // Iterate over block signature/hash pairs for (let i = 0, ptr = changetype(INPUT_MSG); i < count; i++, ptr += SIGNEDBLOCK_BYTELENGTH) { // Copy block signature/hash from message buffer to locals