|
618 | 618 | var privkey = (r.key_bytes).slice(1, 33); |
619 | 619 | var privkeyHex = Crypto.util.bytesToHex(privkey); |
620 | 620 | var pubkey = coinjs.newPubkey(privkeyHex); |
| 621 | + var addr_format = $("#verifyHDaddress .derivation_addr_format").val(); |
| 622 | + if (addr_format == "bech32") { |
| 623 | + var address = coinjs.bech32Address(pubkey); |
| 624 | + } else if (addr_format == "segwit") { |
| 625 | + var address = coinjs.segwitAddress(pubkey); |
| 626 | + } else { |
| 627 | + var address = {'address': coinjs.pubkey2address(pubkey), |
| 628 | + 'redeemscript': ''}; |
| 629 | + } |
621 | 630 |
|
622 | 631 | r.keys = {'privkey':privkeyHex, |
623 | 632 | 'pubkey':pubkey, |
624 | | - 'address':coinjs.pubkey2address(pubkey), |
| 633 | + 'address':address.address, |
| 634 | + 'script':address.redeemscript, |
625 | 635 | 'wif':coinjs.privkey2wif(privkeyHex)}; |
626 | 636 |
|
627 | 637 | } else if(r.key_bytes[0] == 0x02 || r.key_bytes[0] == 0x03) { |
|
696 | 706 | var ecparams = EllipticCurve.getSECCurveByName("secp256k1"); |
697 | 707 | var curve = ecparams.getCurve(); |
698 | 708 |
|
699 | | - var k, key, pubkey, o; |
| 709 | + var k, key, pubkey, o, addr_format, address_fun, address; |
700 | 710 |
|
701 | 711 | o = coinjs.clone(this); |
702 | 712 | o.chain_code = ir; |
703 | 713 | o.child_index = i; |
704 | 714 |
|
| 715 | + addr_format = $("#verifyHDaddress .derivation_addr_format").val(); |
| 716 | + if (addr_format == "bech32") { |
| 717 | + address_fun = function(pk) { return coinjs.bech32Address(pk); }; |
| 718 | + } else if (addr_format == "segwit") { |
| 719 | + address_fun = function(pk) { return coinjs.segwitAddress(pk); }; |
| 720 | + } else { |
| 721 | + address_fun = function(pk) { |
| 722 | + return {'address': coinjs.pubkey2address(pk), 'redeemscript': ''}; |
| 723 | + }; |
| 724 | + } |
705 | 725 | if(this.type=='private'){ |
706 | 726 | // derive key pair from from a xprv key |
707 | 727 | k = il.add(new BigInteger([0].concat(Crypto.util.hexToBytes(this.keys.privkey)))).mod(ecparams.getN()); |
708 | 728 | key = Crypto.util.bytesToHex(k.toByteArrayUnsigned()); |
709 | 729 |
|
710 | 730 | pubkey = coinjs.newPubkey(key); |
711 | | - |
| 731 | + address = address_fun(pubkey); |
712 | 732 | o.keys = {'privkey':key, |
713 | 733 | 'pubkey':pubkey, |
714 | 734 | 'wif':coinjs.privkey2wif(key), |
715 | | - 'address':coinjs.pubkey2address(pubkey)}; |
| 735 | + 'address':address.address, |
| 736 | + 'script':address.redeemscript}; |
716 | 737 |
|
717 | 738 | } else if (this.type=='public'){ |
718 | 739 | // derive xpub key from an xpub key |
|
729 | 750 | publicKeyBytesCompressed.unshift(0x03) |
730 | 751 | } |
731 | 752 | pubkey = Crypto.util.bytesToHex(publicKeyBytesCompressed); |
| 753 | + address = address_fun(pubkey); |
732 | 754 |
|
733 | 755 | o.keys = {'pubkey':pubkey, |
734 | | - 'address':coinjs.pubkey2address(pubkey)} |
| 756 | + 'address':address.address, |
| 757 | + 'script':address.redeemscript} |
735 | 758 | } else { |
736 | 759 | // fail |
737 | 760 | } |
|
0 commit comments