if (data == null) {
throw new Error('Data to sign not found')
}
- const prv = await Bip44.ckd(this.#seed, BIP44_COIN_NANO, index)
+ const prv = this.#type === 'BIP-44'
+ ? await Bip44.ckd(this.#seed, BIP44_COIN_NANO, index)
+ : await this.#deriveBlake2bPrivateKey(this.#seed, index)
const sig = await NanoNaCl.detached(new Uint8Array(data), new Uint8Array(prv))
return { signature: sig.buffer }
} catch (err) {
}),\r
\r
suite('Block signing using official test vectors', async () => {\r
- const { ADDRESS_0, BIP39_SEED, OPEN_BLOCK, PASSWORD, PRIVATE_0, RECEIVE_BLOCK, SEND_BLOCK } = NANO_TEST_VECTORS\r
+ const { ADDRESS_0, BIP39_SEED, BLAKE2B_ADDRESS_1, BLAKE2B_PUBLIC_1, BLAKE2B_SEED, OPEN_BLOCK, PASSWORD, PRIVATE_0, RECEIVE_BLOCK, SEND_BLOCK } = NANO_TEST_VECTORS\r
\r
- await test('sign open block with wallet', async () => {\r
+ await test('sign open block with BLAKE2b wallet', async () => {\r
+ const wallet = await Wallet.import('BLAKE2b', PASSWORD, BLAKE2B_SEED)\r
+ await assert.resolves(wallet.unlock(PASSWORD))\r
+\r
+ const block = new Block(BLAKE2B_ADDRESS_1, '0', OPEN_BLOCK.previous, OPEN_BLOCK.representative)\r
+ .receive(OPEN_BLOCK.link, OPEN_BLOCK.balance)\r
+ const signature = await wallet.sign(1, block, 'hex')\r
+ assert.equal(block.signature, signature)\r
+ assert.ok(await block.verify(BLAKE2B_PUBLIC_1))\r
+\r
+ await wallet.destroy()\r
+ })\r
+\r
+ await test('sign open block with BIP-44 wallet', async () => {\r
const wallet = await Wallet.import('BIP-44', PASSWORD, BIP39_SEED)\r
await assert.resolves(wallet.unlock(PASSWORD))\r
\r