Merge 62118720512a39fac4922bceef188c9466daf574 into cda4559cfd5948dbb18dc078c48a3e62121218e5

This commit is contained in:
Ayanami 2022-05-24 19:47:15 +09:00 committed by GitHub
commit 40e33e87bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 8 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': address, 'compressed':r['compressed']};
}
/* decode or validate an address and return the hash */

View File

@ -389,17 +389,20 @@ $(document).ready(function() {
var s = ($("#newSegWitBrainwallet").is(":checked")) ? $("#brainwalletSegWit").val() : null;
var coin = coinjs.newKeys(s);
var prefix;
if($("#newSegWitBech32addr").is(":checked")){
prefix = 'p2wpkh';
var sw = coinjs.bech32Address(coin.pubkey);
} else {
prefix = 'p2wpkh-p2sh';
var sw = coinjs.segwitAddress(coin.pubkey);
}
$("#newSegWitAddress").val(sw.address);
$("#newSegWitRedeemScript").val(sw.redeemscript);
$("#newSegWitPubKey").val(coin.pubkey);
$("#newSegWitPrivKey").val(coin.wif);
$("#newSegWitPrivKey").val(prefix + ':' + coin.wif);
coinjs.compressed = compressed;
});
@ -861,7 +864,7 @@ $(document).ready(function() {
var videoElement = document.querySelector('video');
try {
videoElement.srcObject = stream;
} catch {
} catch (e) {
videoElement.src = window.URL.createObjectURL(stream);
}
videoElement.play();
@ -948,15 +951,29 @@ $(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 (prefix === 'p2wpkh' && decode.version == coinjs.priv){ // wif key for bech32
var a = coinjs.wif2address(string, prefix);
var decode = coinjs.addressDecode(a['address']);
r.addr = a['address'];
r.from = 'wif';
r.decodedRs = decode.redeemscript;
r.redeemscript = true;
} 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;
@ -1682,9 +1699,13 @@ $(document).ready(function() {
$("#signBtn").click(function(){
var wifkey = $("#signPrivateKey");
var wifKeyParsed = wifkey.val();
if (['p2pkh', 'p2wpkh-p2sh', 'p2wpkh'].indexOf(wifKeyParsed.split(':')[0]) !== -1) {
wifKeyParsed = wifKeyParsed.split(':')[1];
}
var script = $("#signTransaction");
if(coinjs.addressDecode(wifkey.val())){
if(coinjs.addressDecode(wifKeyParsed)){
$(wifkey).parent().removeClass('has-error');
} else {
$(wifkey).parent().addClass('has-error');
@ -1702,7 +1723,7 @@ $(document).ready(function() {
var tx = coinjs.transaction();
var t = tx.deserialize(script.val());
var signed = t.sign(wifkey.val(), $("#sighashType option:selected").val());
var signed = t.sign(wifKeyParsed, $("#sighashType option:selected").val());
$("#signedData textarea").val(signed);
$("#signedData .txSize").html(t.size());
$("#signedData").removeClass('hidden').fadeIn();