]> git.codecow.com Git - libnemo.git/commitdiff
Require seed to derive accounts. Update tests to check for null seed instead of blank.
authorChris Duncan <chris@zoso.dev>
Tue, 22 Jul 2025 02:51:43 +0000 (19:51 -0700)
committerChris Duncan <chris@zoso.dev>
Tue, 22 Jul 2025 02:51:43 +0000 (19:51 -0700)
src/lib/wallets/bip44-wallet.ts
src/lib/wallets/blake2b-wallet.ts
src/lib/wallets/wallet.ts
test/test.create-wallet.mjs
test/test.import-wallet.mjs
test/test.lock-unlock.mjs

index 5cd1c416326440eb60afe0355cf9f983301dd54a..43bb8312ccd58a4007ae0c9684e757b57b51f0f6 100644 (file)
@@ -212,6 +212,9 @@ export class Bip44Wallet extends Wallet {
        * @returns {Promise<Account>}\r
        */\r
        async ckd (indexes: number[]): Promise<KeyPair[]> {\r
+               if (this.seed == null) {\r
+                       throw new Error('wallet must be unlocked to derive accounts')\r
+               }\r
                const results = await Bip44CkdWorker.assign({\r
                        indexes,\r
                        seed: hex.toBytes(this.seed).buffer\r
index d416eaf92c2eede272c31237444ef12422e55c43..fe9e2b56bb212b0f47a574db99d426b83c61ffdb 100644 (file)
@@ -161,6 +161,9 @@ export class Blake2bWallet extends Wallet {
        * @returns {Promise<Account>}\r
        */\r
        async ckd (indexes: number[]): Promise<KeyPair[]> {\r
+               if (this.seed == null) {\r
+                       throw new Error('wallet must be unlocked to derive accounts')\r
+               }\r
                const results = []\r
                for (const index of indexes) {\r
                        const indexHex = index.toString(16).padStart(8, '0').toUpperCase()\r
index 50e9da876516ac3d75a16bedd3a167c0865db9cb..98505c3f7a310411b2686df44fe55fabe0ab72b1 100644 (file)
@@ -86,10 +86,9 @@ export abstract class Wallet {
        * @returns {AccountList} Object with keys of account indexes and values of the corresponding Accounts\r
        */\r
        async accounts (from: number = 0, to: number = from): Promise<AccountList> {\r
-       console.log(this.seed)\r
-       if (this.seed == null) {\r
-               throw new Error('wallet must be unlocked to derive accounts')\r
-       }\r
+               if (this.seed == null) {\r
+                       throw new Error('wallet must be unlocked to derive accounts')\r
+               }\r
                if (from > to) {\r
                        const swap = from\r
                        from = to\r
@@ -259,7 +258,7 @@ export abstract class Wallet {
                                seed = null\r
                        }\r
                } catch (err) {\r
-                       throw new Error('Failed to unlock wallet')\r
+                       throw new Error('Failed to unlock wallet', { cause: err })\r
                } finally {\r
                        bytes.erase(password)\r
                }\r
index d899a445a2a1741ae2117a443529231c0981dec9..22c723e69fb8bfda69cdb619cef4fbaa1db2ade8 100644 (file)
@@ -13,12 +13,14 @@ await Promise.all([
                await test('destroy BIP-44 wallet before unlocking', async () => {\r
                        const wallet = await Bip44Wallet.create(NANO_TEST_VECTORS.PASSWORD)\r
                        await assert.resolves(wallet.destroy())\r
+\r
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
                        assert.nullish(wallet.seed)\r
+\r
                        await assert.rejects(wallet.unlock(NANO_TEST_VECTORS.PASSWORD))\r
-       })\r
+               })\r
 \r
                await test('BIP-44 wallet with random entropy', async () => {\r
                        const wallet = await Bip44Wallet.create(NANO_TEST_VECTORS.PASSWORD)\r
index 3c1cd1c6c1c0774362f9db5c5617552005fe0e96..fa1451e0df9126f0c3287aa8e33d01235865e675 100644 (file)
@@ -251,7 +251,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.equal(wallet.seed, '')\r
+                       assert.nullish(wallet.seed)\r
 \r
                        const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
 \r
@@ -271,7 +271,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.equal(wallet.seed, '')\r
+                       assert.nullish(wallet.seed)\r
 \r
                        const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
 \r
index 2a9141a34acc9cde0f9aadbce117bea8c047c360..e75bdb5ece37865fc66d18428a335762505a43be 100644 (file)
@@ -16,7 +16,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.equal(wallet.seed, '')\r
+                       assert.nullish(wallet.seed)\r
 \r
                        const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
 \r
@@ -39,7 +39,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.equal(wallet.seed, '')\r
+                       assert.nullish(wallet.seed)\r
 \r
                        const unlockResult = await wallet.unlock(new Uint8Array(key))\r
 \r
@@ -79,7 +79,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -96,7 +96,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -109,7 +109,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -130,7 +130,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -151,7 +151,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, NANO_TEST_VECTORS.BIP39_SEED)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -162,7 +162,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.equal(wallet.seed, '')\r
+                       assert.nullish(wallet.seed)\r
 \r
                        const unlockResult = await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
 \r
@@ -185,7 +185,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.equal(wallet.seed, '')\r
+                       assert.nullish(wallet.seed)\r
 \r
                        const unlockResult = await wallet.unlock(new Uint8Array(key))\r
 \r
@@ -223,7 +223,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_1)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -240,7 +240,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_1)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -253,7 +253,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_1)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -274,7 +274,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_1)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r
@@ -295,7 +295,7 @@ await Promise.all([
                        assert.ok('mnemonic' in wallet)\r
                        assert.ok('seed' in wallet)\r
                        assert.nullish(wallet.mnemonic)\r
-                       assert.notEqual(wallet.seed, TREZOR_TEST_VECTORS.ENTROPY_1)\r
+                       assert.nullish(wallet.seed)\r
 \r
                        await wallet.destroy()\r
                })\r