mirror of
https://github.com/OutCast3k/coinbin.git
synced 2025-12-25 03:54:37 +01:00
Merge 6a6c2c6bebcd5e34b85d6cd620f179af0aed7c84 into cda4559cfd5948dbb18dc078c48a3e62121218e5
This commit is contained in:
commit
6e049bfbb1
13
index.html
13
index.html
@ -1213,7 +1213,7 @@
|
||||
<p>The path of key derivation</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="col-md-6">
|
||||
<b>Path</b><br>
|
||||
<select class="form-control" id="hdpathtype"">
|
||||
<option value="simple">Simple: m/i</option>
|
||||
@ -1238,6 +1238,15 @@
|
||||
<input type="text" class="form-control derivation_index_end" value="1">
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<b>Address format</b><br>
|
||||
<select class="form-control derivation_addr_format">
|
||||
<option value="bech32">Bech32</option>
|
||||
<option value="segwit">SegWit</option>
|
||||
<option value="legacy">Legacy</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
@ -1248,7 +1257,7 @@
|
||||
<div class="derived_data">
|
||||
<table class="table table-striped table-hover">
|
||||
<thead>
|
||||
<tr><td><b>Index</b></td><td><b>Address</b><td><b>Private Key (WIF)</b></td></td><td><b>Extended xPub</b></td><td><b>Extended xPrv</b></td></tr>
|
||||
<tr><td><b>Index</b></td><td><b>Address</b></td><td><b>Redeem script</b></td><td><b>Private Key (WIF)</b></td><td><b>Extended xPub</b></td><td><b>Extended xPrv</b></td></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
|
||||
33
js/coin.js
33
js/coin.js
@ -618,10 +618,20 @@
|
||||
var privkey = (r.key_bytes).slice(1, 33);
|
||||
var privkeyHex = Crypto.util.bytesToHex(privkey);
|
||||
var pubkey = coinjs.newPubkey(privkeyHex);
|
||||
var addr_format = $("#verifyHDaddress .derivation_addr_format").val();
|
||||
if (addr_format == "bech32") {
|
||||
var address = coinjs.bech32Address(pubkey);
|
||||
} else if (addr_format == "segwit") {
|
||||
var address = coinjs.segwitAddress(pubkey);
|
||||
} else {
|
||||
var address = {'address': coinjs.pubkey2address(pubkey),
|
||||
'redeemscript': ''};
|
||||
}
|
||||
|
||||
r.keys = {'privkey':privkeyHex,
|
||||
'pubkey':pubkey,
|
||||
'address':coinjs.pubkey2address(pubkey),
|
||||
'address':address.address,
|
||||
'script':address.redeemscript,
|
||||
'wif':coinjs.privkey2wif(privkeyHex)};
|
||||
|
||||
} else if(r.key_bytes[0] == 0x02 || r.key_bytes[0] == 0x03) {
|
||||
@ -696,23 +706,34 @@
|
||||
var ecparams = EllipticCurve.getSECCurveByName("secp256k1");
|
||||
var curve = ecparams.getCurve();
|
||||
|
||||
var k, key, pubkey, o;
|
||||
var k, key, pubkey, o, addr_format, address_fun, address;
|
||||
|
||||
o = coinjs.clone(this);
|
||||
o.chain_code = ir;
|
||||
o.child_index = i;
|
||||
|
||||
addr_format = $("#verifyHDaddress .derivation_addr_format").val();
|
||||
if (addr_format == "bech32") {
|
||||
address_fun = function(pk) { return coinjs.bech32Address(pk); };
|
||||
} else if (addr_format == "segwit") {
|
||||
address_fun = function(pk) { return coinjs.segwitAddress(pk); };
|
||||
} else {
|
||||
address_fun = function(pk) {
|
||||
return {'address': coinjs.pubkey2address(pk), 'redeemscript': ''};
|
||||
};
|
||||
}
|
||||
if(this.type=='private'){
|
||||
// derive key pair from from a xprv key
|
||||
k = il.add(new BigInteger([0].concat(Crypto.util.hexToBytes(this.keys.privkey)))).mod(ecparams.getN());
|
||||
key = Crypto.util.bytesToHex(k.toByteArrayUnsigned());
|
||||
|
||||
pubkey = coinjs.newPubkey(key);
|
||||
|
||||
address = address_fun(pubkey);
|
||||
o.keys = {'privkey':key,
|
||||
'pubkey':pubkey,
|
||||
'wif':coinjs.privkey2wif(key),
|
||||
'address':coinjs.pubkey2address(pubkey)};
|
||||
'address':address.address,
|
||||
'script':address.redeemscript};
|
||||
|
||||
} else if (this.type=='public'){
|
||||
// derive xpub key from an xpub key
|
||||
@ -729,9 +750,11 @@
|
||||
publicKeyBytesCompressed.unshift(0x03)
|
||||
}
|
||||
pubkey = Crypto.util.bytesToHex(publicKeyBytesCompressed);
|
||||
address = address_fun(pubkey);
|
||||
|
||||
o.keys = {'pubkey':pubkey,
|
||||
'address':coinjs.pubkey2address(pubkey)}
|
||||
'address':address.address,
|
||||
'script':address.redeemscript}
|
||||
} else {
|
||||
// fail
|
||||
}
|
||||
|
||||
@ -1660,6 +1660,7 @@ $(document).ready(function() {
|
||||
html += '<tr>';
|
||||
html += '<td>'+i+'</td>';
|
||||
html += '<td><input type="text" class="form-control" value="'+derived.keys.address+'" readonly></td>';
|
||||
html += '<td><input type="text" class="form-control" value="'+derived.keys.script+'" readonly></td>';
|
||||
html += '<td><input type="text" class="form-control" value="'+((derived.keys.wif)?derived.keys.wif:'')+'" readonly></td>';
|
||||
html += '<td><input type="text" class="form-control" value="'+derived.keys_extended.pubkey+'" readonly></td>';
|
||||
html += '<td><input type="text" class="form-control" value="'+((derived.keys_extended.privkey)?derived.keys_extended.privkey:'')+'" readonly></td>';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user