]> git.codecow.com Git - libnemo.git/commitdiff
Pass wallet vault to imported functions and keep it private.
authorChris Duncan <chris@zoso.dev>
Mon, 18 Aug 2025 16:12:29 +0000 (09:12 -0700)
committerChris Duncan <chris@zoso.dev>
Mon, 18 Aug 2025 16:12:29 +0000 (09:12 -0700)
src/lib/wallet/create.ts
src/lib/wallet/index.ts
src/lib/wallet/load.ts

index e714d14b77d4a074c9248156a249c40e7cd71577..4aedba5c72e7f91ee02dbcc12b68728471bc6c76 100644 (file)
@@ -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<NamedData<ArrayBuffer>>
-export async function _create (wallet: Wallet, password: unknown, mnemonicSalt?: unknown): Promise<NamedData<ArrayBuffer>> {
+export async function _create (wallet: Wallet, vault: WorkerQueue, password: string, mnemonicSalt?: string): Promise<NamedData<ArrayBuffer>>
+export async function _create (wallet: Wallet, vault: WorkerQueue, password: unknown, mnemonicSalt?: unknown): Promise<NamedData<ArrayBuffer>> {
        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<ArrayBuffer>({
+               const { iv, salt, encrypted, seed, mnemonic } = await vault.request<ArrayBuffer>({
                        action: 'create',
                        type: wallet.type,
                        password: utf8.toBuffer(password),
index 16bbb357c5a05421aa2ae043ef575566bd886b6d..71ff48d135b63728bdac5578ac2d4699307504d5 100644 (file)
@@ -36,7 +36,7 @@ export class Wallet {
        static async create (type: 'BIP-44' | 'BLAKE2b', password: string, mnemonicSalt?: string): Promise<Wallet> {\r
                Wallet.#isInternal = true\r
                const self = new this(type)\r
-               { ({ mnemonic: self.#mnemonic, seed: self.#seed } = await _create(self, password, mnemonicSalt)) }\r
+               { ({ mnemonic: self.#mnemonic, seed: self.#seed } = await _create(self, self.#vault, password, mnemonicSalt)) }\r
                return self\r
        }\r
 \r
@@ -73,7 +73,7 @@ export class Wallet {
        static async load (type: WalletType, password: string, secret: string, mnemonicSalt?: string): Promise<Wallet> {\r
                Wallet.#isInternal = true\r
                const self = new this(type)\r
-               await _load(self, password, secret, mnemonicSalt)\r
+               await _load(self, self.#vault, password, secret, mnemonicSalt)\r
                return self\r
        }\r
 \r
@@ -109,7 +109,6 @@ export class Wallet {
        #type: WalletType\r
 \r
        get id () { return this.#id }\r
-       get vault () { return this.#vault }\r
        get type () { return this.#type }\r
 \r
        /** Set when calling `create()` and self-destructs after the first read. */\r
index 9be930271eaff66e7b8deabd357d47feab80de48..b663accd6afd4dd8b38b512a189ee381e95340e4 100644 (file)
@@ -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<void>
-export async function _load (wallet: Wallet, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise<void> {
+export async function _load (wallet: Wallet, vault: WorkerQueue, password: string, secret: string, mnemonicSalt?: string): Promise<void>
+export async function _load (wallet: Wallet, vault: WorkerQueue, password: unknown, secret: unknown, mnemonicSalt?: unknown): Promise<void> {
        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<ArrayBuffer>(data)
+               const result = vault.request<ArrayBuffer>(data)
                const { iv, salt, encrypted } = await result
                const record = {
                        id: wallet.id,