added compressed pubkey (disp only) +fixes
This commit is contained in:
parent
bdaa695478
commit
77f7d7bafc
1 changed files with 37 additions and 19 deletions
|
@ -948,13 +948,25 @@
|
|||
};
|
||||
|
||||
// patched by bitaddress.org and Casascius for use with Bitcoin.ECKey
|
||||
ec.PointFp.prototype.getEncoded = function () {
|
||||
ec.PointFp.prototype.getEncoded = function (compressed) {
|
||||
var x = this.getX().toBigInteger();
|
||||
var y = this.getY().toBigInteger();
|
||||
var len = 32; // integerToBytes will zero pad if integer is less than 32 bytes. 32 bytes length is required by the Bitcoin protocol.
|
||||
var enc = ec.integerToBytes(x, len);
|
||||
enc.unshift(0x04);
|
||||
enc = enc.concat(ec.integerToBytes(y, len));
|
||||
|
||||
// modded from old code from forum post
|
||||
if (compressed) {
|
||||
if (y.isEven()) {
|
||||
enc.unshift(0x02);
|
||||
}
|
||||
else {
|
||||
enc.unshift(0x03);
|
||||
}
|
||||
}
|
||||
else {
|
||||
enc.unshift(0x04);
|
||||
enc = enc.concat(ec.integerToBytes(y, len));
|
||||
}
|
||||
return enc;
|
||||
};
|
||||
|
||||
|
@ -3730,19 +3742,19 @@
|
|||
}
|
||||
};
|
||||
|
||||
ECKey.prototype.getPub = function () {
|
||||
if (this.pub) return this.pub;
|
||||
this.pub = ecparams.getG().multiply(this.priv).getEncoded();
|
||||
ECKey.prototype.getPub = function (compressed) {
|
||||
//if (this.pub) return this.pub;
|
||||
this.pub = ecparams.getG().multiply(this.priv).getEncoded(compressed);
|
||||
return this.pub;
|
||||
};
|
||||
|
||||
ECKey.prototype.getPubKeyHash = function () {
|
||||
if (this.pubKeyHash) return this.pubKeyHash;
|
||||
return this.pubKeyHash = Bitcoin.Util.sha256ripe160(this.getPub());
|
||||
ECKey.prototype.getPubKeyHash = function (compressed) {
|
||||
//if (this.pubKeyHash) return this.pubKeyHash;
|
||||
return this.pubKeyHash = Bitcoin.Util.sha256ripe160(this.getPub(compressed));
|
||||
};
|
||||
|
||||
ECKey.prototype.getBitcoinAddress = function () {
|
||||
var hash = this.getPubKeyHash();
|
||||
ECKey.prototype.getBitcoinAddress = function (compressed) {
|
||||
var hash = this.getPubKeyHash(compressed);
|
||||
var addr = new Bitcoin.Address(hash);
|
||||
return addr.toString();
|
||||
};
|
||||
|
@ -3817,7 +3829,7 @@
|
|||
};
|
||||
|
||||
ECKey.prototype.verify = function (hash, sig) {
|
||||
return ECDSA.verify(hash, sig, this.getPub());
|
||||
return ECDSA.verify(hash, sig, this.getPub(0));
|
||||
};
|
||||
|
||||
return ECKey;
|
||||
|
@ -4070,7 +4082,7 @@
|
|||
<div id="paperarea"></div>
|
||||
|
||||
<div id="bulkarea">
|
||||
<span class="label">Comma Separated Values:</span> <span class="format">Index,Bitcoin Address,Private Key (Wallet Import Format)</span>
|
||||
<span class="label">Comma Separated Values:</span> <span class="format">Index,Address,Private Key (WIF),Private Key (WIF compressed)</span>
|
||||
<textarea rows="20" cols="88" id="bulktextarea"></textarea>
|
||||
</div>
|
||||
|
||||
|
@ -4085,6 +4097,10 @@
|
|||
<span class="label">Bitcoin Address (33 or 34 characters, starts with a '1'):</span>
|
||||
<span class="output" id="detailaddress"></span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="label">Bitcoin Address (compressed 0.6+, 33 or 34 characters, starts with a '1'):</span>
|
||||
<span class="output" id="detailaddresscomp"></span>
|
||||
</div>
|
||||
<br />
|
||||
<div class="item">
|
||||
<span class="label">Public Key (130 characters [0-9A-F]):</span>
|
||||
|
@ -4193,7 +4209,7 @@
|
|||
idPostFix = idPostFix || "";
|
||||
try {
|
||||
var key = new Bitcoin.ECKey(false);
|
||||
var bitcoinAddress = key.getBitcoinAddress();
|
||||
var bitcoinAddress = key.getBitcoinAddress(0);
|
||||
var privateKeyWif = key.getBitcoinWalletImportFormat();
|
||||
}
|
||||
catch (e) {
|
||||
|
@ -4417,7 +4433,7 @@
|
|||
var key = new Bitcoin.ECKey(false);
|
||||
|
||||
bulkWallet.csv.push((bulkWallet.csvRowLimit - bulkWallet.csvRowsRemaining + bulkWallet.csvStartIndex)
|
||||
+ ",\"" + key.getBitcoinAddress() + "\",\"" + key.toString("wif") + "\",\"" + key.toString("wifcomp")
|
||||
+ ",\"" + key.getBitcoinAddress(0) + "\",\"" + key.toString("wif") + "\",\"" + key.toString("wifcomp")
|
||||
//+ "\",\"" + key.getBitcoinHexFormat() + "\",\"" + key.toString("base64") // uncomment this line to add different private key formats to the CSV
|
||||
+ "\"");
|
||||
|
||||
|
@ -4652,12 +4668,13 @@
|
|||
}
|
||||
|
||||
if (btcKey != undefined) {
|
||||
var pubKey = Crypto.util.bytesToHex(btcKey.getPub()).toUpperCase();
|
||||
var pubKey = Crypto.util.bytesToHex(btcKey.getPub(0)).toUpperCase();
|
||||
var halfWayIndex = Math.floor(pubKey.length / 2);
|
||||
var pubKeyFirstHalf = pubKey.substr(0, halfWayIndex);
|
||||
var pubKeySecondHalf = pubKey.substr(halfWayIndex, pubKey.length - halfWayIndex);
|
||||
document.getElementById("detailpubkey").innerHTML = pubKeyFirstHalf + "<br />" + pubKeySecondHalf;
|
||||
document.getElementById("detailaddress").innerHTML = btcKey.getBitcoinAddress();
|
||||
document.getElementById("detailaddress").innerHTML = btcKey.getBitcoinAddress(0);
|
||||
document.getElementById("detailaddresscomp").innerHTML = btcKey.getBitcoinAddress(1);
|
||||
document.getElementById("detailprivwif").innerHTML = btcKey.getBitcoinWalletImportFormat();
|
||||
document.getElementById("detailprivwifcomp").innerHTML = btcKey.getBitcoinWalletImportFormatComp();
|
||||
document.getElementById("detailprivhex").innerHTML = btcKey.toString().toUpperCase();
|
||||
|
@ -4666,12 +4683,12 @@
|
|||
document.getElementById("detailqrcodeprivate").innerHTML = "";
|
||||
// show QR codes
|
||||
try {
|
||||
document.getElementById("detailqrcodepublic").appendChild(ninja.qrCode.createCanvas(btcKey.getBitcoinAddress()));
|
||||
document.getElementById("detailqrcodepublic").appendChild(ninja.qrCode.createCanvas(btcKey.getBitcoinAddress(0)));
|
||||
document.getElementById("detailqrcodeprivate").appendChild(ninja.qrCode.createCanvas(btcKey.getBitcoinWalletImportFormat()));
|
||||
}
|
||||
catch (e) {
|
||||
// for browsers that do not support canvas (IE8)
|
||||
document.getElementById("detailqrcodepublic").innerHTML = ninja.qrCode.createTableHtml(btcKey.getBitcoinAddress());
|
||||
document.getElementById("detailqrcodepublic").innerHTML = ninja.qrCode.createTableHtml(btcKey.getBitcoinAddress(0));
|
||||
document.getElementById("detailqrcodeprivate").innerHTML = ninja.qrCode.createTableHtml(btcKey.getBitcoinWalletImportFormat());
|
||||
}
|
||||
|
||||
|
@ -4681,6 +4698,7 @@
|
|||
clear: function () {
|
||||
document.getElementById("detailpubkey").innerHTML = "";
|
||||
document.getElementById("detailaddress").innerHTML = "";
|
||||
document.getElementById("detailaddresscomp").innerHTML = "";
|
||||
document.getElementById("detailprivwif").innerHTML = "";
|
||||
document.getElementById("detailprivwifcomp").innerHTML = "";
|
||||
document.getElementById("detailprivhex").innerHTML = "";
|
||||
|
|
Loading…
Reference in a new issue