Implemented Armory initializing from seed
This commit is contained in:
parent
0e1948b8f3
commit
468ebddc1e
@ -17,6 +17,8 @@ var chaincode = '84ac14bc4b388b33da099a0b4ee3b507284d99e1476639e36e5ca5e6af86481
|
|||||||
//var PublicX = '9df5 23e7 18b9 1f59 a790 2d46 999f 9357 ccf8 7208 24d4 3076 4516 b809 f7ab ce4e'
|
//var PublicX = '9df5 23e7 18b9 1f59 a790 2d46 999f 9357 ccf8 7208 24d4 3076 4516 b809 f7ab ce4e'
|
||||||
//var PublicY = '66ba 5d21 4682 0dae 401d 9506 8437 2516 79f9 0c56 4186 cc50 07df c6d0 6989 1ff4';
|
//var PublicY = '66ba 5d21 4682 0dae 401d 9506 8437 2516 79f9 0c56 4186 cc50 07df c6d0 6989 1ff4';
|
||||||
//var pubkey = '04' + PublicX.split(' ').join('') + PublicY.split(' ').join('');
|
//var pubkey = '04' + PublicX.split(' ').join('') + PublicY.split(' ').join('');
|
||||||
|
//console.log(pubkey);
|
||||||
|
|
||||||
|
|
||||||
// mmm... can't figure out how to arrive at same pubkey as brainwallet
|
// mmm... can't figure out how to arrive at same pubkey as brainwallet
|
||||||
var pubkey = '045a09a3286873a72f164476bde9d1d8e5c2bc044e35aa47eb6e798e325a86417f7c35b61d9905053533e0b4f2a26eca0330aadf21c638969e45aaace50e4c0c87';
|
var pubkey = '045a09a3286873a72f164476bde9d1d8e5c2bc044e35aa47eb6e798e325a86417f7c35b61d9905053533e0b4f2a26eca0330aadf21c638969e45aaace50e4c0c87';
|
||||||
@ -28,3 +30,13 @@ for (var i = 0; i < 5; i++) {
|
|||||||
armory = armory.next();
|
armory = armory.next();
|
||||||
console.log(Address.fromPubKey(armory.pubkey).as('base58'));
|
console.log(Address.fromPubKey(armory.pubkey).as('base58'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Derive stuff from root cod
|
||||||
|
var seed = [
|
||||||
|
'aagh hjfj sihk ietj giik wwai awtd uodh hnji',
|
||||||
|
'soss uaku egod utai itos fijj ihgi jhau jtoo'
|
||||||
|
].join('\n');
|
||||||
|
|
||||||
|
console.log(seed);
|
||||||
|
|
||||||
|
console.log(Armory.fromSeed(seed));
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
var Point = require('./browser/Point'),
|
var Point = require('./browser/Point'),
|
||||||
|
buffertools = require('buffertools'),
|
||||||
|
sha256 = require('../util').sha256,
|
||||||
twoSha256 = require('../util').twoSha256,
|
twoSha256 = require('../util').twoSha256,
|
||||||
BigInteger = require('../browser/vendor-bundle.js').BigInteger;
|
BigInteger = require('../browser/vendor-bundle.js').BigInteger;
|
||||||
|
|
||||||
@ -38,4 +40,60 @@ Armory.prototype.next = function () {
|
|||||||
return new Armory(this.chaincode, next_pubkey);
|
return new Armory(this.chaincode, next_pubkey);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function decode (str) {
|
||||||
|
var from = '0123456789abcdef';
|
||||||
|
var to = 'asdfghjkwertuion';
|
||||||
|
var res = '';
|
||||||
|
for (var i = 0; i < str.length; i++)
|
||||||
|
res += from.charAt(to.indexOf(str.charAt(i)));
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
Armory.decodeSeed = function (seed) {
|
||||||
|
var keys = seed.split('\n');
|
||||||
|
var lines = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < keys.length; i++) {
|
||||||
|
var k = keys[i].replace(' ','');
|
||||||
|
var raw = new Buffer(decode(k), 'hex');
|
||||||
|
var data = raw.slice(0, 16);
|
||||||
|
lines.push(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
var privKey = Buffer.concat([ lines[0], lines[1] ]);
|
||||||
|
var chainCode = (lines.length==4) ?
|
||||||
|
Buffer.concat([ lines[2], lines[3] ]) : Armory.deriveChaincode(privKey);
|
||||||
|
|
||||||
|
return {
|
||||||
|
privKey: privKey,
|
||||||
|
chainCode: chainCode
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Derive chain code from root key
|
||||||
|
Armory.fromSeed = function (seed) {
|
||||||
|
var res = Armory.decodeSeed(seed);
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
Armory.deriveChaincode = function (root) {
|
||||||
|
var msg = 'Derive Chaincode from Root Key';
|
||||||
|
var hash = twoSha256(root);
|
||||||
|
|
||||||
|
var okey = [];
|
||||||
|
var ikey = [];
|
||||||
|
for (var i = 0; i < hash.length; i++) {
|
||||||
|
okey.push(0x5c ^ hash[i]);
|
||||||
|
ikey.push(0x36 ^ hash[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
okey = new Buffer(okey);
|
||||||
|
ikey = new Buffer(ikey);
|
||||||
|
|
||||||
|
var m = new Buffer(msg, 'utf8');
|
||||||
|
var a = sha256(Buffer.concat([ ikey, m ]));
|
||||||
|
var b = sha256(Buffer.concat([ okey, a ]));
|
||||||
|
return b;
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = Armory;
|
module.exports = Armory;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user