]> git.codecow.com Git - libnemo.git/commitdiff
Return bytes instead of buffer to enable array ops.
authorChris Duncan <chris@codecow.com>
Sun, 9 Aug 2026 19:22:28 +0000 (12:22 -0700)
committerChris Duncan <chris@codecow.com>
Sun, 9 Aug 2026 19:22:28 +0000 (12:22 -0700)
src/lib/crypto/bip44.ts
src/lib/vault/vault-worker.ts

index 954f3f351f207d4fb22325640108069de39bf466..d17488d6e5b6c452510f087db9bd6f12e62fd999 100644 (file)
@@ -24,10 +24,10 @@ const HARDENED_OFFSET: 0x80000000 = 0x80000000
  * @param {number} account - Account number between 0 and 2^31-1
  * @param {number} [change] - Used for change transactions, 0 for external and 1 for internal
  * @param {number} [address] - Sequentially increasing index of addresses to use for each account
- * @returns {Promise<ArrayBuffer>} Private child key for the account
+ * @returns {Promise<Bytes>} Private child key for the account
  */
-export function Bip44 (curve: Curve, seed: ArrayBuffer, coin: number, account: number, change?: number, address?: number): Promise<ArrayBuffer>
-export function Bip44 (curve: unknown, seed: unknown, coin: unknown, account: unknown, change?: unknown, address?: unknown): Promise<ArrayBuffer> {
+export function Bip44 (curve: Curve, seed: ArrayBuffer, coin: number, account: number, change?: number, address?: number): Promise<Bytes>
+export function Bip44 (curve: unknown, seed: unknown, coin: unknown, account: unknown, change?: unknown, address?: unknown): Promise<Bytes> {
        if (curve !== 'Bitcoin seed' && curve !== 'ed25519 seed') {
                throw new TypeError(`Unsupported curve ${curve}`)
        }
@@ -61,7 +61,7 @@ export function Bip44 (curve: unknown, seed: unknown, coin: unknown, account: un
        if (address !== undefined && (!Number.isSafeInteger(address) || address < 0 || address > 0x7fffffff)) {
                throw new RangeError(`Invalid address index 0x${dec.toHex(account)}`)
        }
-       return ckd(curve, seed, coin, account, change, address)
+       return new Uint8Array(ckd(curve, seed, coin, account, change, address))
 }
 
 function ckd (curve: Curve, seed: ArrayBuffer, coin: number, account: number, change?: number, address?: number): Promise<ArrayBuffer> {
index 713602aa8046da776f2c3c0b398d49c6e48c2e90..701ba53296885bd935c1ed360a3df28bffb33264 100644 (file)
@@ -448,9 +448,9 @@ const _index = new DataView(new ArrayBuffer(4))
  * https://docs.nano.org/integration-guides/the-basics/
  *
  * @param {number} index - 4-byte index of account to derive
- * @returns {Promise<ArrayBuffer>} Private key for the account
+ * @returns {Promise<Bytes>} Private key for the account
  */
-function _ckd (index?: number): Promise<ArrayBuffer> {
+function _ckd (index?: number): Promise<Bytes> {
        if (_seed == null) {
                throw new VaultError('Wallet seed not found')
        }
@@ -468,7 +468,7 @@ function _ckd (index?: number): Promise<ArrayBuffer> {
                        _index.setUint32(0, index, false)
                        const sk = new Blake2b(32).update(_seed).update(_index.buffer).digest()
                        _index.setUint32(0, 0)
-                       return Promise.resolve(sk.buffer)
+                       return Promise.resolve(sk)
                }
        }
 }