From 8a40e785390fa832867f784b37329d2cf5bbcd4c Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 18 Aug 2025 09:12:29 -0700 Subject: [PATCH] Pass wallet vault to imported functions and keep it private. --- src/lib/wallet/create.ts | 7 ++++--- src/lib/wallet/index.ts | 5 ++--- src/lib/wallet/load.ts | 9 +++++---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/lib/wallet/create.ts b/src/lib/wallet/create.ts index e714d14..4aedba5 100644 --- a/src/lib/wallet/create.ts +++ b/src/lib/wallet/create.ts @@ -5,10 +5,11 @@ import { utf8 } from '../convert' import { Database } from '../database' import { _load } from './load' import { Wallet } from '.' +import { WorkerQueue } from '../vault/worker-queue' import { NamedData } from '#types' -export async function _create (wallet: Wallet, password: string, mnemonicSalt?: string): Promise> -export async function _create (wallet: Wallet, password: unknown, mnemonicSalt?: unknown): Promise> { +export async function _create (wallet: Wallet, vault: WorkerQueue, password: string, mnemonicSalt?: string): Promise> +export async function _create (wallet: Wallet, vault: WorkerQueue, password: unknown, mnemonicSalt?: unknown): Promise> { if (typeof password !== 'string') { throw new TypeError('Invalid password', { cause: typeof password }) } @@ -16,7 +17,7 @@ export async function _create (wallet: Wallet, password: unknown, mnemonicSalt?: throw new TypeError('Mnemonic salt must be a string') } try { - const { iv, salt, encrypted, seed, mnemonic } = await wallet.vault.request({ + const { iv, salt, encrypted, seed, mnemonic } = await vault.request({ action: 'create', type: wallet.type, password: utf8.toBuffer(password), diff --git a/src/lib/wallet/index.ts b/src/lib/wallet/index.ts index 16bbb35..71ff48d 100644 --- a/src/lib/wallet/index.ts +++ b/src/lib/wallet/index.ts @@ -36,7 +36,7 @@ export class Wallet { static async create (type: 'BIP-44' | 'BLAKE2b', password: string, mnemonicSalt?: string): Promise { Wallet.#isInternal = true const self = new this(type) - { ({ mnemonic: self.#mnemonic, seed: self.#seed } = await _create(self, password, mnemonicSalt)) } + { ({ mnemonic: self.#mnemonic, seed: self.#seed } = await _create(self, self.#vault, password, mnemonicSalt)) } return self } @@ -73,7 +73,7 @@ export class Wallet { static async load (type: WalletType, password: string, secret: string, mnemonicSalt?: string): Promise { Wallet.#isInternal = true const self = new this(type) - await _load(self, password, secret, mnemonicSalt) + await _load(self, self.#vault, password, secret, mnemonicSalt) return self } @@ -109,7 +109,6 @@ export class Wallet { #type: WalletType get id () { return this.#id } - get vault () { return this.#vault } get type () { return this.#type } /** Set when calling `create()` and self-destructs after the first read. */ diff --git a/src/lib/wallet/load.ts b/src/lib/wallet/load.ts index 9be9302..b663acc 100644 --- a/src/lib/wallet/load.ts +++ b/src/lib/wallet/load.ts @@ -5,10 +5,11 @@ import { Bip39 } from '#crypto' import { NamedData } from '#types' import { hex, utf8 } from '../convert' import { Database } from '../database' -import { Wallet } from '.' +import { Wallet } from '#wallet' +import { WorkerQueue } from '../vault/worker-queue' -export async function _load (wallet: Wallet, password: string, secret: string, mnemonicSalt?: string): Promise -export async function _load (wallet: Wallet, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise { +export async function _load (wallet: Wallet, vault: WorkerQueue, password: string, secret: string, mnemonicSalt?: string): Promise +export async function _load (wallet: Wallet, vault: WorkerQueue, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise { if (typeof password !== 'string') { throw new TypeError('Password must be a string') } @@ -35,7 +36,7 @@ export async function _load (wallet: Wallet, password: unknown, secret: unknown, } secret = undefined mnemonicSalt = undefined - const result = wallet.vault.request(data) + const result = vault.request(data) const { iv, salt, encrypted } = await result const record = { id: wallet.id, -- 2.47.3