]> git.codecow.com Git - nano25519.git/commitdiff
Use constant for message length within wasm and clear it with the other buffers.
authorChris Duncan <chris@zoso.dev>
Sat, 22 Aug 2026 06:31:10 +0000 (23:31 -0700)
committerChris Duncan <chris@zoso.dev>
Sat, 22 Aug 2026 06:31:10 +0000 (23:31 -0700)
src/lib/nano25519.ts

index 13a31c5cf5f03eb72c5cb1999efaddb0d62ae987..cdd064294177ce8a328bbe70ce94d28004a99819 100644 (file)
@@ -16,6 +16,7 @@ type Exports = {
        }
 }
 
+const mLen = 32768
 const wasm: Uint8Array<ArrayBuffer> = 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)
 }