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