From 548a71ee171955a3e823b9300189c21bcc3e65be Mon Sep 17 00:00:00 2001 From: Ryan Zimmerman Date: Tue, 10 Apr 2018 14:10:53 -0400 Subject: [PATCH] Add basic API docs (#15) --- README.md | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/README.md b/README.md index 34d562c..2e08afa 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,91 @@ console.log(hdkey.publicExtendedKey) ``` +### `HDKey.fromMasterSeed(seedBuffer[, versions])` + +Creates an `hdkey` object from a master seed buffer. Accepts an optional `versions` object. + +```js +var seed = 'a0c42a9c3ac6abf2ba6a9946ae83af18f51bf1c9fa7dacc4c92513cc4dd015834341c775dcd4c0fac73547c5662d81a9e9361a0aac604a73a321bd9103bce8af' +var hdkey = HDKey.fromMasterSeed(new Buffer(seed, 'hex')) +``` + +### `HDKey.fromExtendedKey(extendedKey[, versions])` + +Creates an `hdkey` object from a `xprv` or `xpub` extended key string. Accepts an optional `versions` object. + +```js +var key = 'xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j' +var hdkey = HDKey.fromExtendedKey(key) +``` + +**or** + +```js +var key = 'xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt' +var hdkey = HDKey.fromExtendedKey(key) +``` + +### `HDKey.fromJSON(obj)` + +Creates an `hdkey` object from an object created via `hdkey.toJSON()`. + +--- + +### `hdkey.derive(path)` + +Derives the `hdkey` at `path` from the current `hdkey`. + +```js +var seed = 'fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542' +var hdkey = HDKey.fromMasterSeed(Buffer.from(seed, 'hex')) +var childkey = hdkey.derive("m/0/2147483647'/1") + +console.log(childkey.privateExtendedKey) +// -> "xprv9zFnWC6h2cLgpmSA46vutJzBcfJ8yaJGg8cX1e5StJh45BBciYTRXSd25UEPVuesF9yog62tGAQtHjXajPPdbRCHuWS6T8XA2ECKADdw4Ef" +console.log(childkey.publicExtendedKey) +// -> "xpub6DF8uhdarytz3FWdA8TvFSvvAh8dP3283MY7p2V4SeE2wyWmG5mg5EwVvmdMVCQcoNJxGoWaU9DCWh89LojfZ537wTfunKau47EL2dhHKon" +``` + +### `hdkey.sign(hash)` + +Signs the buffer `hash` with the private key using `secp256k1` and returns the signature as a buffer. + +### `hdkey.verify(hash, signature)` + +Verifies that the `signature` is valid for `hash` and the `hdkey`'s public key using `secp256k1`. Returns `true` for valid, `false` for invalid. Throws if the `hash` or `signature` is the wrong length. + +### `hdkey.toJSON()` + +Serializes the `hdkey` to an object that can be `JSON.stringify()`ed. + +```js +var seed = 'fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542' +var hdkey = HDKey.fromMasterSeed(Buffer.from(seed, 'hex')) + +console.log(hdkey.toJSON()) +// -> { +// xpriv: 'xprv9s21ZrQH143K31xYSDQpPDxsXRTUcvj2iNHm5NUtrGiGG5e2DtALGdso3pGz6ssrdK4PFmM8NSpSBHNqPqm55Qn3LqFtT2emdEXVYsCzC2U', +// xpub: 'xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB' +// } +``` + +### `hdkey.privateKey` + +Getter/Setter of the `hdkey`'s private key, stored as a buffer. + +### `hdkey.publicKey` + +Getter/Setter of the `hdkey`'s public key, stored as a buffer. + +### `hdkey.privateExtendedKey` + +Getter/Setter of the `hdkey`'s `xprv`, stored as a string. + +### `hdkey.publicExtendedKey` + +Getter/Setter of the `hdkey`'s `xpub`, stored as a string. + References ---------- - https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/src/hdnode.js