|
@ -1,3 +1,6 @@ |
|
|
|
|
|
var EncodedData = require('./util/EncodedData'); |
|
|
|
|
|
var base58 = imports.base58 || require('base58-native').base58Check; |
|
|
|
|
|
|
|
|
var BITCOIN_MAINNET_PUBLIC = 0x0488b21e; |
|
|
var BITCOIN_MAINNET_PUBLIC = 0x0488b21e; |
|
|
var BITCOIN_MAINNET_PRIVATE = 0x0488ade4; |
|
|
var BITCOIN_MAINNET_PRIVATE = 0x0488ade4; |
|
|
var BITCOIN_TESTNET_PUBLIC = 0x043587cf; |
|
|
var BITCOIN_TESTNET_PUBLIC = 0x043587cf; |
|
@ -14,8 +17,9 @@ var LITECOIN_TESTNET_PRIVATE = 0x0436ef7d; |
|
|
var BIP32 = function(bytes) { |
|
|
var BIP32 = function(bytes) { |
|
|
// decode base58
|
|
|
// decode base58
|
|
|
if (typeof bytes === "string") { |
|
|
if (typeof bytes === "string") { |
|
|
var decoded = Bitcoin.Base58.decode(bytes); |
|
|
var decoded = base58.decode(bytes); |
|
|
if( decoded.length != 82 ) throw new Error("Not enough data"); |
|
|
if (decoded.length != 82) |
|
|
|
|
|
throw new Error("Not enough data"); |
|
|
var checksum = decoded.slice(78, 82); |
|
|
var checksum = decoded.slice(78, 82); |
|
|
bytes = decoded.slice(0, 78); |
|
|
bytes = decoded.slice(0, 78); |
|
|
|
|
|
|
|
@ -202,7 +206,8 @@ BIP32.prototype.derive = function(path) { |
|
|
var e = path.split('/'); |
|
|
var e = path.split('/'); |
|
|
|
|
|
|
|
|
// Special cases:
|
|
|
// Special cases:
|
|
|
if( path == 'm' || path == 'M' || path == 'm\'' || path == 'M\'' ) return this; |
|
|
if (path == 'm' || path == 'M' || path == 'm\'' || path == 'M\'') |
|
|
|
|
|
return this; |
|
|
|
|
|
|
|
|
var bip32 = this; |
|
|
var bip32 = this; |
|
|
for (var i in e) { |
|
|
for (var i in e) { |
|
@ -243,7 +248,8 @@ BIP32.prototype.derive_child = function(i) { |
|
|
this.version == LITECOIN_MAINNET_PRIVATE || |
|
|
this.version == LITECOIN_MAINNET_PRIVATE || |
|
|
this.version == LITECOIN_TESTNET_PRIVATE); |
|
|
this.version == LITECOIN_TESTNET_PRIVATE); |
|
|
|
|
|
|
|
|
if( use_private && (!this.has_private_key || !is_private) ) throw new Error("Cannot do private key derivation without private key"); |
|
|
if (use_private && (!this.has_private_key || !is_private)) |
|
|
|
|
|
throw new Error("Cannot do private key derivation without private key"); |
|
|
|
|
|
|
|
|
var ret = null; |
|
|
var ret = null; |
|
|
if (this.has_private_key) { |
|
|
if (this.has_private_key) { |
|
|