Parse electrum style private key

This commit is contained in:
Ayanami 2022-05-16 23:17:30 +09:00
parent cda4559cfd
commit 0ac206555a
No known key found for this signature in database
GPG Key ID: 0CABDF03077D92E4
2 changed files with 26 additions and 4 deletions

View File

@ -247,9 +247,24 @@
}
/* convert a wif to a address */
coinjs.wif2address = function(wif){
coinjs.wif2address = function(wif, prefix){
var r = coinjs.wif2pubkey(wif);
return {'address':coinjs.pubkey2address(r['pubkey']), 'compressed':r['compressed']};
var address;
switch (prefix) {
case 'p2wpkh-p2sh': {
address = coinjs.segwitAddress(r['pubkey']).address;
break;
}
case 'p2wpkh': {
address = coinjs.bech32Address(r['pubkey']).address;
break;
}
default: {
address = coinjs.pubkey2address(r['pubkey']);
break;
}
}
return {address, 'compressed':r['compressed']};
}
/* decode or validate an address and return the hash */

View File

@ -948,15 +948,22 @@ $(document).ready(function() {
});
/* function to determine what we are redeeming from */
function redeemingFrom(string){
function redeemingFrom(input){
var r = {};
var string = input;
var prefix;
// Parse electrum style wif key (Internet Explorer compatible)
if (['p2pkh', 'p2wpkh-p2sh', 'p2wpkh'].indexOf(input.split(':')[0]) !== -1) {
prefix = input.split(':')[0];
string = input.split(':')[1];
}
var decode = coinjs.addressDecode(string);
if(decode.version == coinjs.pub){ // regular address
r.addr = string;
r.from = 'address';
r.redeemscript = false;
} else if (decode.version == coinjs.priv){ // wif key
var a = coinjs.wif2address(string);
var a = coinjs.wif2address(string, prefix);
r.addr = a['address'];
r.from = 'wif';
r.redeemscript = false;