From ed3d3cbba5629e18335dd541ef217107c6fbd5c6 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sat, 29 Aug 2026 00:25:22 -0700 Subject: [PATCH] Pass ge object instead of pointer for A. --- src/assembly/crypto_verify.ts | 7 +++---- src/assembly/index.ts | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) 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 -- 2.52.0