From: Chris Duncan Date: Mon, 18 Aug 2025 16:27:56 +0000 (-0700) Subject: Migrate wallet sign method to separate module. X-Git-Tag: v0.10.5~41^2~68 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=0cded0e9440cb826edbb3c83d139910646cdaebb;p=libnemo.git Migrate wallet sign method to separate module. --- diff --git a/src/lib/wallet/index.ts b/src/lib/wallet/index.ts index 2d5e4a9..921e964 100644 --- a/src/lib/wallet/index.ts +++ b/src/lib/wallet/index.ts @@ -13,6 +13,7 @@ import { _get } from './get' import { _load } from './load' import { _restore } from './restore' import { Rpc } from '../rpc' +import { _sign } from './sign' import { default as VaultWorker } from '../vault/vault' import { WorkerQueue } from '../vault/worker-queue' @@ -325,26 +326,10 @@ export class Wallet { * @param {number} index - Account to use for signing * @param {(Block)} block - Block data to be hashed and signed */ - async sign (index: number, block: Block): Promise - async sign (index: unknown, block: unknown): Promise { - 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 this.#vault.request({ - action: 'sign', - index, - data: hex.toBuffer(block.hash) - }) - block.signature = bytes.toHex(new Uint8Array(signature)) - clearTimeout(this.#lockTimer) - this.#lockTimer = setTimeout(() => this.lock(), 300000) - } catch (err) { - throw new Error(`Failed to sign block`, { cause: err }) - } + async sign (index: number, block: Block): Promise { + await _sign(this.#vault, index, block) + clearTimeout(this.#lockTimer) + this.#lockTimer = setTimeout(() => this.lock(), 300000) } /** diff --git a/src/lib/wallet/sign.ts b/src/lib/wallet/sign.ts new file mode 100644 index 0000000..358526b --- /dev/null +++ b/src/lib/wallet/sign.ts @@ -0,0 +1,26 @@ +//! SPDX-FileCopyrightText: 2025 Chris Duncan +//! 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 +export async function _sign (vault: WorkerQueue, index: unknown, block: unknown): Promise { + 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({ + 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 }) + } +}