]> git.codecow.com Git - nano25519.git/commitdiff
Change WASM buffer view to Uint8Array since we don't need endianness features of...
authorChris Duncan <chris@codecow.com>
Mon, 17 Aug 2026 15:46:03 +0000 (08:46 -0700)
committerChris Duncan <chris@codecow.com>
Mon, 17 Aug 2026 15:46:03 +0000 (08:46 -0700)
src/lib/nano25519.ts

index 4476bb9b28e9c6a5a43a07f37177c04018fd529b..f2f732402391475e6c79cab7f918711a04b305ff 100644 (file)
@@ -72,18 +72,18 @@ export const nano25519_init = (bytes: number[]): { derive: typeof derive, sign:
                }
                const privateKey = new Uint8Array(32)
                const publicKey = new Uint8Array(32)
-               let buffer = new DataView(exports.memory.buffer)
+               let buffer = new Uint8Array(exports.memory.buffer)
                try {
                        privateKey.set(normalize('private key', 32, 32, k))
                        let inPtr = exports.getInputPointer()
                        for (let i = 0; i < 32; i++) {
-                               buffer.setUint8(inPtr + i, privateKey[i])
+                               buffer[inPtr + i] = privateKey[i]
                        }
                        exports.derive()
                        const outPtr = exports.getOutputPointer()
-                       buffer = new DataView(exports.memory.buffer)
+                       buffer = new Uint8Array(exports.memory.buffer)
                        for (let i = 0; i < 32; i++) {
-                               publicKey[i] = buffer.getUint8(outPtr + i)
+                               publicKey[i] = buffer[outPtr + i]
                        }
                        if (typeof k === 'string') {
                                let hex = ''
@@ -110,23 +110,23 @@ export const nano25519_init = (bytes: number[]): { derive: typeof derive, sign:
                }
                const secretKey = new Uint8Array(64)
                const signature = new Uint8Array(64)
-               let buffer: DataView | undefined = new DataView(exports.memory.buffer)
+               let buffer = new Uint8Array(exports.memory.buffer)
                try {
                        secretKey.set(normalize('secret key', 64, 64, k))
                        let inPtr = exports.getInputPointer()
                        for (let i = 0; i < 64; i++) {
-                               buffer.setUint8(inPtr + i, secretKey[i])
+                               buffer[inPtr + i] = secretKey[i]
                        }
                        const message = normalize('message', 0, 32768, m)
                        let mPtr = exports.getMessagePointer()
                        for (let i = 0; i < message.byteLength; i++) {
-                               buffer.setUint8(mPtr + i, message[i])
+                               buffer[mPtr + i] = message[i]
                        }
                        exports.sign(message.byteLength)
                        const outPtr = exports.getOutputPointer()
-                       buffer = new DataView(exports.memory.buffer)
+                       buffer = new Uint8Array(exports.memory.buffer)
                        for (let i = 0; i < 64; i++) {
-                               signature[i] = buffer.getUint8(outPtr + i)
+                               signature[i] = buffer[outPtr + i]
                        }
                        if (typeof k === 'string') {
                                let hex = ''
@@ -148,7 +148,7 @@ export const nano25519_init = (bytes: number[]): { derive: typeof derive, sign:
        }
 
        function verify (s: unknown, m: unknown, k: unknown): boolean {
-               let buffer: DataView | undefined = new DataView(exports.memory.buffer)
+               let buffer = new Uint8Array(exports.memory.buffer)
                try {
                        const signature = normalize('signature', 64, 64, s)
                        const message = normalize('message', 0, 32768, m)
@@ -156,14 +156,14 @@ export const nano25519_init = (bytes: number[]): { derive: typeof derive, sign:
                        let mPtr = exports.getMessagePointer()
                        let inPtr = exports.getInputPointer()
                        for (let i = 0; i < message.byteLength; i++) {
-                               buffer.setUint8(mPtr + i, message[i])
+                               buffer[mPtr + i] = message[i]
                        }
                        for (let i = 0; i < 64; i++) {
-                               buffer.setUint8(inPtr + i, signature[i])
+                               buffer[inPtr + i] = signature[i]
                        }
                        inPtr += 64
                        for (let i = 0; i < 32; i++) {
-                               buffer.setUint8(inPtr + i, publicKey[i])
+                               buffer[inPtr + i] = publicKey[i]
                        }
                        const v = exports.verify(message.byteLength)
                        return v === 0
@@ -172,13 +172,11 @@ export const nano25519_init = (bytes: number[]): { derive: typeof derive, sign:
                }
        }
 
-       function clear (buffer: DataView): void {
+       function clear (buffer: Uint8Array): void {
                let inPtr = exports.getInputPointer()
                let outPtr = exports.getOutputPointer()
-               for (let i = 0; i < 64; i++) {
-                       buffer.setUint16(inPtr + (i << 1), 0)
-                       buffer.setUint8(outPtr + i, 0)
-               }
+               buffer.fill(0, inPtr, inPtr + 96)
+               buffer.fill(0, outPtr, outPtr + 64)
        }
 
        function isBytes (a: unknown): a is Uint8Array<ArrayBuffer> {