-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
162 lines (136 loc) · 6.71 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Bittylicious Trade Signer</title>
<link href="data:image/x-icon;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBAcADAsNAAwNEAAVFhkAFBceABMYHwAZGRsAFxkcABgZHAAZGRwAGhodABscHgAbHB8AHBwfABwdHwAdHR8AGx0gABwdIAAeHSAAHR4hAB4eIQAcHiIAICAhAB4gIwAhICMAISEjAB8hKAAiIiQAICIlACMiJAAgIiYAIyMlACEjKQAkJCYAJCUnACUlJwAmJScAIyUpACYnKQAoJykAJicqACUnLAAmKS0AKSksACoqLAAmKi4AKywwAC0vMwAoLzgAMjI0ADY1NQA3NjcAMzY6ADo4OAA5ODoAOzo8ADs9QQBAQUUARUJBAEBCRgA/Q0kAUEdDAENGSwBMS0wASU5TAFRUVABbVVEAV1VUAFFVWgBOVV0AVlZXAFFWXQBVWGAAU11oAGlhWwBqY1wAV2FsAGZjYgBvaGIAb2pmAG5raQBua2oAdm1mAHJtaQBxcHAAeXJuAHd2dgB1d3oAdnh9AHF5gQCCfXoAh393AHZ+hQB7f4QAiYJ8AIWCgQCIg38AioWBAImGhACIhoYAjIqHAIGJkgCCi5QAhYuTAIaOmACKkpwAn5eQAJaXmACPl6AAmZqdAKOclgCwp58ArqqmAKWqsACiqrMAvbWtAKuzugC9tq8AvbawAK23wAC5ubkAtLm9AL+7twC2ur8AxLy1ALG7wwDBvrsAx7+5AMvCuwDLwrwAyMO+AMbDwQDOxb8AvcTKAL3EzADMx8IAxsnMANXLxQDY0swA19LNANDU2ADV2d4A4NvVANrg5gDc4eYA7+njAOLr8gD07ucA9/HtAPr08AD++O8A/vjyAPn4+AD3+v4A/Pv7AP7+/wD///wA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnZ1mCSIXEygRLEF+mJ2dnZ2dZhmCXFWIOVZEAlOcnZ2dnWYbkWhbmVCdjAUDap2dnZ1mC1E8BxESYlhrLTqdnZ2dZiSddw2BjwROnUwylJ2dnWYKPzQThJ0aNVclNpWdnZ1mH5NsDU0+DHOdKUKdnZ2dZh2LZ1pdQ21jcTOKnZ2dnWYUcEiWkHqdSQBSnZudnZ1mJJ19Jy8WO3WGFYCdnZ2dZg1fQBF2dAh/hR5KnZ2dnWYhl3IOiZIQT3kgPZ2dnZ1mD2RHCDcqJm6dMEudnZ2dZhiHWV57YZ1pOAZ8nZ2dnWYbjmVvjVR4RQFgnZ2dnZ1mCiscIy4RMUaDmp2dnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" rel="icon" type="image/x-icon" />
<link href="style.css" rel="stylesheet" />
</head>
<body>
<!--
Bittylicious Trade Signer
Version: 1.0.0
Copyright (c) 2013 Bittylicious Ltd.
This is designed as an offline trade signer. No keys are sent over any
networks so this can be used without an Internet connection.
-->
<script language="JavaScript" type="text/javascript" src="cryptojs-3.1.2/components/core.js"></script>
<script language="JavaScript" type="text/javascript" src="cryptojs-3.1.2/components/x64-core.js"></script>
<script language="JavaScript" type="text/javascript" src="cryptojs-3.1.2/components/sha512.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/ext/jsbn.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/ext/jsbn2.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/ext/prng4.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/ext/rsa.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/ext/rsa2.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/ext/base64.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/rsapem-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/rsasign-1.2.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/asn1hex-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="jsrsasign/crypto-1.1.js"></script>
<script language="JavaScript" type="text/javascript" src="persist-js-0.1.0/persist.js"></script>
<a href="/"><div class="logo"></div></a>
<div class="nav">Trade Signer</div>
<div class="bodyText">
<div id="privkey_none">
<div class="title">Setup</div>
<center>
<p>Copy and paste private key here and click <em>Store</em> to store this locally:</p>
<textarea name="privkey" id="privkey" rows="10" cols="66">
</textarea>
<p><input type="submit" value="Store" onclick="storeKey();" class="modern" /></p>
</center>
</div>
<div id="privkey_ok">
<center>
<div class="title">Sign Message</div>
<p>Line to sign:</p>
<input type="textbox" name="input" id="input" value="" /><br />
<small><a href="" onclick="document.getElementById('input').value=''; document.getElementById('input').focus();">(clear)</a></small>
<p><input type="submit" value="Generate Signature" onclick="encrypt();" class="modern" /></p>
<textarea name="output" id="output" rows="8" cols="66" wrap="hard" readonly="readonly">
</textarea>
<p>Private key has been stored. <a href="" onclick="resetKey();">Click here</a> to remove key.</p>
</center>
</div>
<script>
var store;
function onload()
{
// create a new client-side persistent data store
store = new Persist.Store('Bittylicious Signer');
// Don't store in cookies - this is sensitive information
Persist.remove('cookie');
// get data back from store, and prompt user with it
store.get('privkey', function(ok, val) {
if (ok)
{
document.getElementById('privkey').value = val;
if (val && val != '')
{
document.getElementById('privkey_none').style.display="none";
document.getElementById('privkey_ok').style.display="block";
}
else
{
document.getElementById('privkey_none').style.display="block";
document.getElementById('privkey_ok').style.display="none";
}
}
});
}
function storeKey()
{
store.set('privkey', document.getElementById('privkey').value);
onload();
}
function resetKey()
{
store.set('privkey', '');
onload();
}
onload();
function encrypt()
{
try
{
// initialize
var sig = new KJUR.crypto.Signature({"alg": "SHA512withRSA", "prov": "cryptojs/jsrsa", "prvkeypem": document.getElementById('privkey').value});
}
catch (e)
{
alert("Your private key is invalid: " + e);
return;
}
// update data
commandLine = document.getElementById('input').value;
// trim
commandLine = commandLine.replace(/^\s+|\s+$/g,'').split(' ');
if (commandLine.length == 3)
{
trade = commandLine[0];
address = commandLine[1];
updateID = commandLine[2];
}
else if (commandLine.length == 5)
{
trade = commandLine[2];
address = commandLine[3];
updateID = commandLine[4];
}
else
{
alert("Invalid format for line to sign");
return;
}
json = '{"version":1,"reference":"' + trade + '","btcaddress":"' + address + '","updateID":' + (parseInt(updateID)+1) + '}';
sig.updateString(json);
// calculate signature
var sigValueHex = sig.sign()
document.getElementById('output').value=hex2b64(sigValueHex);
// Select text
document.getElementById("output").focus();
document.getElementById("output").select();
}
</script>
<!-- bodyText -->
</div>
</body>
</html>