mirror of
https://github.com/OutCast3k/coinbin.git
synced 2026-05-06 11:09:24 +02:00
Merge 62118720512a39fac4922bceef188c9466daf574 into cda4559cfd5948dbb18dc078c48a3e62121218e5
This commit is contained in:
commit
40e33e87bf
19
js/coin.js
19
js/coin.js
@ -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 */
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user