]> git.codecow.com Git - libnemo.git/commitdiff
Add Exodus test vector for zero-entropy mnemonic and seed.
authorChris Duncan <chris@zoso.dev>
Thu, 4 Dec 2025 08:18:16 +0000 (00:18 -0800)
committerChris Duncan <chris@zoso.dev>
Thu, 4 Dec 2025 08:18:16 +0000 (00:18 -0800)
test/VECTORS.mjs
test/test.import-wallet.mjs

index 0f709ff14f6f3f1e4ede21f6917912acbb0e91d7..494927fc988bca1c8bdbed219ba0f2e234ec3b6e 100644 (file)
@@ -267,13 +267,21 @@ export const CUSTOM_TEST_VECTORS = Object.freeze({
                signature: "583624F09D1108B50CFB219F13F075AC03CD5C5450DE055B0963D8E814324C9B0A858BD34AF06E5290C436CC86872CBB13C7FE89972E77E6836249DCD2DAE40A"
        },
 
-       // mnemonic from nano.org, other values calculated by importing to exodus app
        EXODUS: {
-               MNEMONIC: 'company public remove bread fashion tortoise ahead shrimp onion prefer waste blade',
-               BIP39_SEED: '924A962CAE64448812BE28A514093EBFEEED537D61A44318EB35F902961D21B2FCCD30008D33C8D1D5327A34B9B73281C4B27A0A3D004C1C2E85E8DBB234CBA8',
+               // mnemonic from nano.org, other values calculated by importing to exodus app
+               MNEMONIC_0: 'company public remove bread fashion tortoise ahead shrimp onion prefer waste blade',
+               BIP39_SEED_0: '924A962CAE64448812BE28A514093EBFEEED537D61A44318EB35F902961D21B2FCCD30008D33C8D1D5327A34B9B73281C4B27A0A3D004C1C2E85E8DBB234CBA8',
                PRIVATE_0: 'CBB312CA6C48B2A2656723C7D4FDE774479D9FCC53EE23F46B877E3AA6D041BF',
                PUBLIC_0: 'A8225A8F80079FB62E4A1BC577A684A2A93DB7303A4FD8CA5D0A90C5150F1182',
                ADDRESS_0: 'nano_3c34dc9r13wzprq6n8y7gymabaob9pum1gkhu577t4nirnciy6e43g96m6ym',
+
+               // zero entropy mnemonic, other values calculated by importing to exodus app
+               ENTROPY_1: '00000000000000000000000000000000',
+               MNEMONIC_1: 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about',
+               BIP39_SEED_1: '5EB00BBDDCF069084889A8AB9155568165F5C453CCB85E70811AAED6F6DA5FC19A5AC40B389CD370D086206DEC8AA6C43DAEA6690F20AD3D8D48B2D2CE9E38E4',
+               PRIVATE_1: '89DA93509D22BC6704F2859C509055E0748707D3AAC17B783DEEFB6ECE8D8F45',
+               PUBLIC_1: '',
+               ADDRESS_1: 'nano_1ukkc34hq8ibidkdkdd9bjdijfpfndidrom8xy3cdmguhtjyp7zhd5tcwbgu',
        }
 })
 
index 0e8f4d00758c35b6ff2b99371fc1a3ab90ffece1..4b1ee0003aa497ffb72d2586ac4edd738158e089 100644 (file)
@@ -315,17 +315,31 @@ await Promise.all([
                })\r
 \r
                await test('nano.org Exodus test vector mnemonic', async () => {\r
-                       const wallet = await Wallet.load('Exodus', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.EXODUS.MNEMONIC)\r
+                       const wallet = await Wallet.load('Exodus', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.EXODUS.MNEMONIC_0)\r
                        await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
                        const account = await wallet.account()\r
 \r
-                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.EXODUS.MNEMONIC))\r
-                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.EXODUS.BIP39_SEED))\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.EXODUS.MNEMONIC_0))\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.EXODUS.BIP39_SEED_0))\r
                        assert.ok(account instanceof Account)\r
                        assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.EXODUS.PUBLIC_0)\r
                        assert.equal(account.address, CUSTOM_TEST_VECTORS.EXODUS.ADDRESS_0)\r
 \r
                        await assert.resolves(wallet.destroy())\r
                })\r
+\r
+               await test('zero entropy Exodus test vector mnemonic', async () => {\r
+                       const wallet = await Wallet.load('Exodus', NANO_TEST_VECTORS.PASSWORD, CUSTOM_TEST_VECTORS.EXODUS.MNEMONIC_1)\r
+                       await wallet.unlock(NANO_TEST_VECTORS.PASSWORD)\r
+                       const account = await wallet.account()\r
+\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.EXODUS.MNEMONIC_1))\r
+                       assert.ok(await wallet.verify(CUSTOM_TEST_VECTORS.EXODUS.BIP39_SEED_1))\r
+                       assert.ok(account instanceof Account)\r
+                       // assert.equal(account.publicKey, CUSTOM_TEST_VECTORS.EXODUS.PUBLIC_1)\r
+                       assert.equal(account.address, CUSTOM_TEST_VECTORS.EXODUS.ADDRESS_1)\r
+\r
+                       await assert.resolves(wallet.destroy())\r
+               })\r
        })\r
 ])\r