1 | function asciiToUint8Array(str) { |
---|
2 | var chars = []; |
---|
3 | for (var i = 0; i < str.length; ++i) { |
---|
4 | chars.push(str.charCodeAt(i)); |
---|
5 | } |
---|
6 | return new Uint8Array(chars); |
---|
7 | } |
---|
8 | |
---|
9 | function convertStringToArrayBufferView(str) { |
---|
10 | var bytes = new Uint8Array(str.length); |
---|
11 | for (var iii = 0; iii < str.length; iii++) { |
---|
12 | bytes[iii] = str.charCodeAt(iii); |
---|
13 | } |
---|
14 | return bytes; |
---|
15 | } |
---|
16 | |
---|
17 | function buf2hex ( buffer ) { |
---|
18 | return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join(''); |
---|
19 | } |
---|
20 | |
---|
21 | function log_text(s) { |
---|
22 | var d = document.createElement("div"); |
---|
23 | d.innerHTML = s; |
---|
24 | document.getElementById('log').appendChild(d); |
---|
25 | } |
---|
26 | |
---|
27 | function debug() { |
---|
28 | window.hwcrypto.debug().then(function(response) {log_text("Debug: " + response);}); |
---|
29 | } |
---|
30 | |
---|
31 | function sign() { |
---|
32 | |
---|
33 | alert("sign()"); |
---|
34 | |
---|
35 | // Clear log |
---|
36 | document.getElementById('log').innerHTML = ''; |
---|
37 | // Timestamp |
---|
38 | log_text("sign() clicked on " + new Date().toUTCString()); |
---|
39 | |
---|
40 | // Select hash |
---|
41 | var hashtype = "SHA-256"; |
---|
42 | |
---|
43 | // Set backend if asked |
---|
44 | var backend = "autodetect"; |
---|
45 | |
---|
46 | // get language |
---|
47 | var lang = "en"; |
---|
48 | if (!window.hwcrypto.use(backend)) { |
---|
49 | log_text("Selecting backend failed."); |
---|
50 | } |
---|
51 | |
---|
52 | var hash = $("#hashvalue").val(); |
---|
53 | log_text("Signing " + hashtype + ": " + hash); |
---|
54 | |
---|
55 | // debug |
---|
56 | window.hwcrypto.debug().then(function(response) { |
---|
57 | log_text("Debug: " + response); |
---|
58 | }, function(err) { |
---|
59 | log_text("debug() failed: " + err); |
---|
60 | return; |
---|
61 | }); |
---|
62 | |
---|
63 | // Sign |
---|
64 | window.hwcrypto.getCertificate({lang: lang}).then(function(response) { |
---|
65 | var cert = response; |
---|
66 | log_text("Using certificate:\n" + hexToPem(response.hex)); |
---|
67 | window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then( |
---|
68 | function(response) { |
---|
69 | log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n")); |
---|
70 | }, |
---|
71 | function(err) { log_text("sign() failed: " + err); } |
---|
72 | ); |
---|
73 | }, |
---|
74 | function(err) { log_text("getCertificate() failed: " + err); } |
---|
75 | ); |
---|
76 | } |
---|