Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ultraviolet
GitHub Repository: ultraviolet/bitaddress.org
Path: blob/master/src/ninja.vanitywallet.js
248 views
1
ninja.wallets.vanitywallet = {
2
isOpen: function () {
3
return (document.getElementById("vanitywallet").className.indexOf("selected") != -1);
4
},
5
6
open: function () {
7
document.getElementById("vanityarea").style.display = "block";
8
},
9
10
close: function () {
11
document.getElementById("vanityarea").style.display = "none";
12
document.getElementById("vanitystep1area").style.display = "none";
13
document.getElementById("vanitystep2area").style.display = "none";
14
document.getElementById("vanitystep1icon").setAttribute("class", "more");
15
document.getElementById("vanitystep2icon").setAttribute("class", "more");
16
},
17
18
generateKeyPair: function () {
19
var key = new Bitcoin.ECKey(false);
20
var publicKey = key.getPubKeyHex();
21
var privateKey = key.getBitcoinHexFormat();
22
document.getElementById("vanitypubkey").innerHTML = publicKey;
23
document.getElementById("vanityprivatekey").innerHTML = privateKey;
24
document.getElementById("vanityarea").style.display = "block";
25
document.getElementById("vanitystep1area").style.display = "none";
26
},
27
28
addKeys: function () {
29
var privateKeyWif = ninja.translator.get("vanityinvalidinputcouldnotcombinekeys");
30
var bitcoinAddress = ninja.translator.get("vanityinvalidinputcouldnotcombinekeys");
31
var publicKeyHex = ninja.translator.get("vanityinvalidinputcouldnotcombinekeys");
32
try {
33
var input1KeyString = document.getElementById("vanityinput1").value;
34
var input2KeyString = document.getElementById("vanityinput2").value;
35
36
// both inputs are public keys
37
if (ninja.publicKey.isPublicKeyHexFormat(input1KeyString) && ninja.publicKey.isPublicKeyHexFormat(input2KeyString)) {
38
// add both public keys together
39
if (document.getElementById("vanityradioadd").checked) {
40
var pubKeyByteArray = ninja.publicKey.getByteArrayFromAdding(input1KeyString, input2KeyString);
41
if (pubKeyByteArray == null) {
42
alert(ninja.translator.get("vanityalertinvalidinputpublickeysmatch"));
43
}
44
else {
45
privateKeyWif = ninja.translator.get("vanityprivatekeyonlyavailable");
46
bitcoinAddress = ninja.publicKey.getBitcoinAddressFromByteArray(pubKeyByteArray);
47
publicKeyHex = ninja.publicKey.getHexFromByteArray(pubKeyByteArray);
48
}
49
}
50
else {
51
alert(ninja.translator.get("vanityalertinvalidinputcannotmultiple"));
52
}
53
}
54
// one public key and one private key
55
else if ((ninja.publicKey.isPublicKeyHexFormat(input1KeyString) && ninja.privateKey.isPrivateKey(input2KeyString))
56
|| (ninja.publicKey.isPublicKeyHexFormat(input2KeyString) && ninja.privateKey.isPrivateKey(input1KeyString))
57
) {
58
privateKeyWif = ninja.translator.get("vanityprivatekeyonlyavailable");
59
var pubKeyHex = (ninja.publicKey.isPublicKeyHexFormat(input1KeyString)) ? input1KeyString : input2KeyString;
60
var ecKey = (ninja.privateKey.isPrivateKey(input1KeyString)) ? new Bitcoin.ECKey(input1KeyString) : new Bitcoin.ECKey(input2KeyString);
61
// add
62
if (document.getElementById("vanityradioadd").checked) {
63
var pubKeyCombined = ninja.publicKey.getByteArrayFromAdding(pubKeyHex, ecKey.getPubKeyHex());
64
}
65
// multiply
66
else {
67
var pubKeyCombined = ninja.publicKey.getByteArrayFromMultiplying(pubKeyHex, ecKey);
68
}
69
if (pubKeyCombined == null) {
70
alert(ninja.translator.get("vanityalertinvalidinputpublickeysmatch"));
71
} else {
72
bitcoinAddress = ninja.publicKey.getBitcoinAddressFromByteArray(pubKeyCombined);
73
publicKeyHex = ninja.publicKey.getHexFromByteArray(pubKeyCombined);
74
}
75
}
76
// both inputs are private keys
77
else if (ninja.privateKey.isPrivateKey(input1KeyString) && ninja.privateKey.isPrivateKey(input2KeyString)) {
78
var combinedPrivateKey;
79
// add both private keys together
80
if (document.getElementById("vanityradioadd").checked) {
81
combinedPrivateKey = ninja.privateKey.getECKeyFromAdding(input1KeyString, input2KeyString);
82
}
83
// multiply both private keys together
84
else {
85
combinedPrivateKey = ninja.privateKey.getECKeyFromMultiplying(input1KeyString, input2KeyString);
86
}
87
if (combinedPrivateKey == null) {
88
alert(ninja.translator.get("vanityalertinvalidinputprivatekeysmatch"));
89
}
90
else {
91
bitcoinAddress = combinedPrivateKey.getBitcoinAddress();
92
privateKeyWif = combinedPrivateKey.getBitcoinWalletImportFormat();
93
publicKeyHex = combinedPrivateKey.getPubKeyHex();
94
}
95
}
96
} catch (e) {
97
alert(e);
98
}
99
document.getElementById("vanityprivatekeywif").innerHTML = privateKeyWif;
100
document.getElementById("vanityaddress").innerHTML = bitcoinAddress;
101
document.getElementById("vanitypublickeyhex").innerHTML = publicKeyHex;
102
document.getElementById("vanitystep2area").style.display = "block";
103
document.getElementById("vanitystep2icon").setAttribute("class", "less");
104
},
105
106
openCloseStep: function (num) {
107
// do close
108
if (document.getElementById("vanitystep" + num + "area").style.display == "block") {
109
document.getElementById("vanitystep" + num + "area").style.display = "none";
110
document.getElementById("vanitystep" + num + "icon").setAttribute("class", "more");
111
}
112
// do open
113
else {
114
document.getElementById("vanitystep" + num + "area").style.display = "block";
115
document.getElementById("vanitystep" + num + "icon").setAttribute("class", "less");
116
}
117
}
118
};
119