|
608 | 608 | r.parent_fingerprint = bytes.slice(5, 9); |
609 | 609 | r.child_index = coinjs.uint(bytes.slice(9, 13), 4); |
610 | 610 | r.chain_code = bytes.slice(13, 45); |
| 611 | + r.seed_wif = ''; |
611 | 612 | r.key_bytes = bytes.slice(45, 78); |
612 | 613 |
|
613 | 614 | var c = coinjs.compressed; // get current default |
|
746 | 747 | } |
747 | 748 |
|
748 | 749 | // make a master hd xprv/xpub |
749 | | - r.master = function(pass) { |
| 750 | + r.master = function(pass, iters) { |
750 | 751 | if (pass) { |
751 | | - var seed = Crypto.util.hexToBytes("0000000000000000000000000000000000000000000000000000000000000000"); |
752 | | - for (var i = 0; i < 50000; i++) { |
753 | | - seed = Crypto.HMAC(Crypto.SHA256, seed, pass, { asBytes: true }); |
| 752 | + var seed_iters = (iters) ? Math.abs(iters * 1) : 0; |
| 753 | + if (seed_iters == 0) { |
| 754 | + var seed = Crypto.SHA256(pass); |
| 755 | + } else { |
| 756 | + var seed = Crypto.util.hexToBytes("0000000000000000000000000000000000000000000000000000000000000000"); |
| 757 | + for (var i = 0; i < seed_iters; i++) { |
| 758 | + seed = Crypto.HMAC(Crypto.SHA256, seed, pass, { asBytes: true }); |
| 759 | + } |
| 760 | + seed = Crypto.util.bytesToHex(seed); |
754 | 761 | } |
755 | | - seed = Crypto.util.bytesToHex(seed); |
756 | 762 | } else { |
757 | 763 | var seed = coinjs.newPrivkey(); |
758 | 764 | } |
759 | 765 |
|
| 766 | + var seed_wif = coinjs.privkey2wif(seed); |
760 | 767 | var hasher = new jsSHA(seed, 'HEX'); |
761 | 768 | var I = hasher.getHMAC("Bitcoin seed", "TEXT", "SHA-512", "HEX"); |
762 | 769 |
|
|
768 | 775 | 'parent_fingerprint':[0,0,0,0], |
769 | 776 | 'child_index':0, |
770 | 777 | 'chain_code':chain, |
| 778 | + 'seed_wif':seed_wif, |
771 | 779 | 'privkey':I.slice(0, 64), |
772 | 780 | 'pubkey':coinjs.newPubkey(I.slice(0, 64))}); |
773 | 781 | } |
|
812 | 820 | var ret = pub.concat(checksum); |
813 | 821 | o.pubkey = coinjs.base58encode(ret); |
814 | 822 | } |
| 823 | + |
| 824 | + o.seed_wif = data.seed_wif; |
815 | 825 | return o; |
816 | 826 | } |
817 | 827 |
|
|
0 commit comments