From 32bca0f0251aa2768c573bc9e1b6caae608151be Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Fri, 21 Aug 2026 23:31:10 -0700 Subject: [PATCH] Use constant for message length within wasm and clear it with the other buffers. --- src/lib/nano25519.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/nano25519.ts b/src/lib/nano25519.ts index 13a31c5..cdd0642 100644 --- a/src/lib/nano25519.ts +++ b/src/lib/nano25519.ts @@ -16,6 +16,7 @@ type Exports = { } } +const mLen = 32768 const wasm: Uint8Array = Uint8Array.from(nano25519_wasm) const module = new WebAssembly.Module(wasm) const { exports } = new WebAssembly.Instance(module, { @@ -93,7 +94,7 @@ export function sign (m: unknown, k: unknown, s?: unknown): string | Uint8Array< for (let i = 0; i < 64; i++) { buffer[inPtr + i] = secretKey[i] } - const message = normalize('message', 0, 32768, m) + const message = normalize('message', 0, mLen, m) let mPtr = exports.getMessagePointer() for (let i = 0; i < message.byteLength; i++) { buffer[mPtr + i] = message[i] @@ -127,7 +128,7 @@ export function verify (s: unknown, m: unknown, k: unknown): boolean { let buffer = new Uint8Array(exports.memory.buffer) try { const signature = normalize('signature', 64, 64, s) - const message = normalize('message', 0, 32768, m) + const message = normalize('message', 0, mLen, m) const publicKey = normalize('public key', 32, 32, k) let mPtr = exports.getMessagePointer() let inPtr = exports.getInputPointer() @@ -150,8 +151,10 @@ export function verify (s: unknown, m: unknown, k: unknown): boolean { function clear (memory: Uint8Array): void { let inPtr = exports.getInputPointer() + let msgPtr = exports.getMessagePointer() let outPtr = exports.getOutputPointer() memory.fill(0, inPtr, inPtr + 96) + memory.fill(0, msgPtr, msgPtr + mLen) memory.fill(0, outPtr, outPtr + 64) } -- 2.52.0