README
ts-slip32
ts-slip32 is a typescript implementation of the SLIP-0032 extended serialization format for BIP-32 wallets.
Installation
From npm:
npm install slip32
From git:
git clone https://github.com/witnet/ts-slip32.git
cd ts-slip32
yarn
yarn build
Usage
The main two functions are described in slip32.d.ts
:
/**
* Import key from Slip32 format
* @param {string} slip32
* @returns {{keyPath: KeyPath; extendedKey: ExtendedKey<PrivateKey | PublicKey>}}
*/
export declare const importKeyFromSlip32: (slip32: string) => {
keyPath: number[];
extendedKey: ExtendedKey<PrivateKey | PublicKey>;
};
/**
* Export key to Slip32 format
* @param {KeyPath} keyPath
* @param {ExtendedKey<PrivateKey> | ExtendedKey<PublicKey>} extendedKey
* @returns {string}
*/
export declare const exportKeyToSlip32: (keyPath: number[], extendedKey: ExtendedKey<PrivateKey | PublicKey>) => string;
The aforementioned functions use the following interfaces and types, defined in keys.d.ts
:
/**
* Key interface
* The buffer should have a length of 32 bytes
*/
export interface Key {
bytes: Uint8Array;
}
/**
* Chain code (32 bytes)
*/
export declare type ChainCode = Uint8Array;
/**
* Private Key (33 bytes)
*/
export interface PrivateKey extends Key {
type: "private";
}
/**
* Public Key (33 bytes)
*/
export interface PublicKey extends Key {
type: "public";
}
/**
* Extended keys, as introduced by BIP-0032, pair a key with a chain code
*/
export declare type ExtendedKey<Key> = {
key: Key;
chainCode: ChainCode;
};
Example
import * as Slip32 from "slip32"
const keyToImport = "xprv1qxqqqqqq78qr7hlewyyfzt74vasa87k63pu7g9e6hfzlzrdyh0v5k8zfw9sqpsyv7vcejeyzcpkm85jel7vmujlhpquzf4f3sh3nry0w0n4jh7t0jhc039"
// Import key as {keyPath: KeyPath, extendedKey: ExtendedKey<PrivateKey | PublicKey>}
const importedKey = Slip32.importKeyFromSlip32(keyToImport)
// Export key as string
const exportedKey = Slip32.exportKeyToSlip32(importedKey.keyPath, importedKey.extendedKey)
License
This library is free and open-source software released under the MIT license.