]> git.codecow.com Git - libnemo.git/commitdiff
Migrate wallet sign method to separate module.
authorChris Duncan <chris@zoso.dev>
Mon, 18 Aug 2025 16:27:56 +0000 (09:27 -0700)
committerChris Duncan <chris@zoso.dev>
Mon, 18 Aug 2025 16:27:56 +0000 (09:27 -0700)
src/lib/wallet/index.ts
src/lib/wallet/sign.ts [new file with mode: 0644]

index 2d5e4a905049bc593444f2a1eff2417f50d11999..921e9641f6c9fef326d92a8f65c330df984ce668 100644 (file)
@@ -13,6 +13,7 @@ import { _get } from './get'
 import { _load } from './load'\r
 import { _restore } from './restore'\r
 import { Rpc } from '../rpc'\r
+import { _sign } from './sign'\r
 import { default as VaultWorker } from '../vault/vault'\r
 import { WorkerQueue } from '../vault/worker-queue'\r
 \r
@@ -325,26 +326,10 @@ export class Wallet {
        * @param {number} index - Account to use for signing\r
        * @param {(Block)} block - Block data to be hashed and signed\r
        */\r
-       async sign (index: number, block: Block): Promise<void>\r
-       async sign (index: unknown, block: unknown): Promise<void> {\r
-               try {\r
-                       if (typeof index !== 'number') {\r
-                               throw new TypeError('Index must be a number', { cause: index })\r
-                       }\r
-                       if (!(block instanceof Block)) {\r
-                               throw new TypeError('Invalid Block', { cause: block })\r
-                       }\r
-                       const { signature } = await this.#vault.request<ArrayBuffer>({\r
-                               action: 'sign',\r
-                               index,\r
-                               data: hex.toBuffer(block.hash)\r
-                       })\r
-                       block.signature = bytes.toHex(new Uint8Array(signature))\r
-                       clearTimeout(this.#lockTimer)\r
-                       this.#lockTimer = setTimeout(() => this.lock(), 300000)\r
-               } catch (err) {\r
-                       throw new Error(`Failed to sign block`, { cause: err })\r
-               }\r
+       async sign (index: number, block: Block): Promise<void> {\r
+               await _sign(this.#vault, index, block)\r
+               clearTimeout(this.#lockTimer)\r
+               this.#lockTimer = setTimeout(() => this.lock(), 300000)\r
        }\r
 \r
        /**\r
diff --git a/src/lib/wallet/sign.ts b/src/lib/wallet/sign.ts
new file mode 100644 (file)
index 0000000..358526b
--- /dev/null
@@ -0,0 +1,26 @@
+//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
+//! SPDX-License-Identifier: GPL-3.0-or-later
+
+import { Block } from '../block'
+import { bytes, hex } from '../convert'
+import { WorkerQueue } from '../vault/worker-queue'
+
+export async function _sign (vault: WorkerQueue, index: number, block: Block): Promise<void>
+export async function _sign (vault: WorkerQueue, index: unknown, block: unknown): Promise<void> {
+       try {
+               if (typeof index !== 'number') {
+                       throw new TypeError('Index must be a number', { cause: index })
+               }
+               if (!(block instanceof Block)) {
+                       throw new TypeError('Invalid Block', { cause: block })
+               }
+               const { signature } = await vault.request<ArrayBuffer>({
+                       action: 'sign',
+                       index,
+                       data: hex.toBuffer(block.hash)
+               })
+               block.signature = bytes.toHex(new Uint8Array(signature))
+       } catch (err) {
+               throw new Error(`Failed to sign block`, { cause: err })
+       }
+}