bitaddress.org/src/ninja.vanitywallet.js
2015-07-05 17:14:49 -04:00

118 lines
No EOL
5.2 KiB
JavaScript

ninja.wallets.vanitywallet = {
isOpen: function () {
return (document.getElementById("vanitywallet").className.indexOf("selected") != -1);
},
open: function () {
document.getElementById("vanityarea").style.display = "block";
},
close: function () {
document.getElementById("vanityarea").style.display = "none";
document.getElementById("vanitystep1area").style.display = "none";
document.getElementById("vanitystep2area").style.display = "none";
document.getElementById("vanitystep1icon").setAttribute("class", "more");
document.getElementById("vanitystep2icon").setAttribute("class", "more");
},
generateKeyPair: function () {
var key = new Bitcoin.ECKey(false);
var publicKey = key.getPubKeyHex();
var privateKey = key.getBitcoinHexFormat();
document.getElementById("vanitypubkey").innerHTML = publicKey;
document.getElementById("vanityprivatekey").innerHTML = privateKey;
document.getElementById("vanityarea").style.display = "block";
document.getElementById("vanitystep1area").style.display = "none";
},
addKeys: function () {
var privateKeyWif = ninja.translator.get("vanityinvalidinputcouldnotcombinekeys");
var bitcoinAddress = ninja.translator.get("vanityinvalidinputcouldnotcombinekeys");
var publicKeyHex = ninja.translator.get("vanityinvalidinputcouldnotcombinekeys");
try {
var input1KeyString = document.getElementById("vanityinput1").value;
var input2KeyString = document.getElementById("vanityinput2").value;
// both inputs are public keys
if (ninja.publicKey.isPublicKeyHexFormat(input1KeyString) && ninja.publicKey.isPublicKeyHexFormat(input2KeyString)) {
// add both public keys together
if (document.getElementById("vanityradioadd").checked) {
var pubKeyByteArray = ninja.publicKey.getByteArrayFromAdding(input1KeyString, input2KeyString);
if (pubKeyByteArray == null) {
alert(ninja.translator.get("vanityalertinvalidinputpublickeysmatch"));
}
else {
privateKeyWif = ninja.translator.get("vanityprivatekeyonlyavailable");
bitcoinAddress = ninja.publicKey.getBitcoinAddressFromByteArray(pubKeyByteArray);
publicKeyHex = ninja.publicKey.getHexFromByteArray(pubKeyByteArray);
}
}
else {
alert(ninja.translator.get("vanityalertinvalidinputcannotmultiple"));
}
}
// one public key and one private key
else if ((ninja.publicKey.isPublicKeyHexFormat(input1KeyString) && ninja.privateKey.isPrivateKey(input2KeyString))
|| (ninja.publicKey.isPublicKeyHexFormat(input2KeyString) && ninja.privateKey.isPrivateKey(input1KeyString))
) {
privateKeyWif = ninja.translator.get("vanityprivatekeyonlyavailable");
var pubKeyHex = (ninja.publicKey.isPublicKeyHexFormat(input1KeyString)) ? input1KeyString : input2KeyString;
var ecKey = (ninja.privateKey.isPrivateKey(input1KeyString)) ? new Bitcoin.ECKey(input1KeyString) : new Bitcoin.ECKey(input2KeyString);
// add
if (document.getElementById("vanityradioadd").checked) {
var pubKeyCombined = ninja.publicKey.getByteArrayFromAdding(pubKeyHex, ecKey.getPubKeyHex());
}
// multiply
else {
var pubKeyCombined = ninja.publicKey.getByteArrayFromMultiplying(pubKeyHex, ecKey);
}
if (pubKeyCombined == null) {
alert(ninja.translator.get("vanityalertinvalidinputpublickeysmatch"));
} else {
bitcoinAddress = ninja.publicKey.getBitcoinAddressFromByteArray(pubKeyCombined);
publicKeyHex = ninja.publicKey.getHexFromByteArray(pubKeyCombined);
}
}
// both inputs are private keys
else if (ninja.privateKey.isPrivateKey(input1KeyString) && ninja.privateKey.isPrivateKey(input2KeyString)) {
var combinedPrivateKey;
// add both private keys together
if (document.getElementById("vanityradioadd").checked) {
combinedPrivateKey = ninja.privateKey.getECKeyFromAdding(input1KeyString, input2KeyString);
}
// multiply both private keys together
else {
combinedPrivateKey = ninja.privateKey.getECKeyFromMultiplying(input1KeyString, input2KeyString);
}
if (combinedPrivateKey == null) {
alert(ninja.translator.get("vanityalertinvalidinputprivatekeysmatch"));
}
else {
bitcoinAddress = combinedPrivateKey.getBitcoinAddress();
privateKeyWif = combinedPrivateKey.getBitcoinWalletImportFormat();
publicKeyHex = combinedPrivateKey.getPubKeyHex();
}
}
} catch (e) {
alert(e);
}
document.getElementById("vanityprivatekeywif").innerHTML = privateKeyWif;
document.getElementById("vanityaddress").innerHTML = bitcoinAddress;
document.getElementById("vanitypublickeyhex").innerHTML = publicKeyHex;
document.getElementById("vanitystep2area").style.display = "block";
document.getElementById("vanitystep2icon").setAttribute("class", "less");
},
openCloseStep: function (num) {
// do close
if (document.getElementById("vanitystep" + num + "area").style.display == "block") {
document.getElementById("vanitystep" + num + "area").style.display = "none";
document.getElementById("vanitystep" + num + "icon").setAttribute("class", "more");
}
// do open
else {
document.getElementById("vanitystep" + num + "area").style.display = "block";
document.getElementById("vanitystep" + num + "icon").setAttribute("class", "less");
}
}
};