]> git.codecow.com Git - nano25519.git/commitdiff
Fix transaction ID validation.
authorChris Duncan <chris@codecow.com>
Fri, 26 Jun 2026 21:50:27 +0000 (14:50 -0700)
committerChris Duncan <chris@codecow.com>
Fri, 26 Jun 2026 21:50:27 +0000 (14:50 -0700)
src/lib/nano25519.ts

index 286821b49de397d486648901c8ef8642af4b837f..3a328e9667037a6cfd37fca5d529da743cd49fa1 100644 (file)
@@ -360,6 +360,7 @@ async function start (): Promise<void> {
 // Send command and relevant data to nano25519 worker
 async function dispatch (data: { [key: string]: string | ArrayBuffer | Uint8Array<ArrayBuffer> }): Promise<boolean | string | Uint8Array<ArrayBuffer>> {
        return new Promise((resolve, reject) => {
+               const id = crypto.randomUUID()
                const transfer: ArrayBuffer[] = []
                for (let k of Object.keys(data)) {
                        if (isBytes(data[k])) {
@@ -370,6 +371,7 @@ async function dispatch (data: { [key: string]: string | ArrayBuffer | Uint8Arra
                const onresult = (msg: { data: Record<string, unknown> }): void => {
                        const { data } = msg
                        if (data.url !== url) return
+                       if (data.id !== id) return
                        const { result } = data
                        console.log(`received result from worker: `, result)
                        if (typeof result !== 'boolean' && typeof result !== 'string' && !isBytes(result)) {
@@ -379,7 +381,7 @@ async function dispatch (data: { [key: string]: string | ArrayBuffer | Uint8Arra
                }
                console.log(`sending data to worker: `, data)
                data.url = url
-               data.id = crypto.randomUUID()
+               data.id = id
                BROWSER: {
                        worker = worker as Worker
                        worker.onerror = reject