function asciiToUint8Array(str) { var chars = []; for (var i = 0; i < str.length; ++i) { chars.push(str.charCodeAt(i)); } return new Uint8Array(chars); } function convertStringToArrayBufferView(str) { var bytes = new Uint8Array(str.length); for (var iii = 0; iii < str.length; iii++) { bytes[iii] = str.charCodeAt(iii); } return bytes; } function buf2hex ( buffer ) { return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join(''); } function log_text(s) { var d = document.createElement("div"); d.innerHTML = s; document.getElementById('log').appendChild(d); } function debug() { window.hwcrypto.debug().then(function(response) {log_text("Debug: " + response);}); } function sign() { alert("sign()"); // Clear log document.getElementById('log').innerHTML = ''; // Timestamp log_text("sign() clicked on " + new Date().toUTCString()); // Select hash var hashtype = "SHA-256"; // Set backend if asked var backend = "autodetect"; // get language var lang = "en"; if (!window.hwcrypto.use(backend)) { log_text("Selecting backend failed."); } var hash = $("#hashvalue").val(); log_text("Signing " + hashtype + ": " + hash); // debug window.hwcrypto.debug().then(function(response) { log_text("Debug: " + response); }, function(err) { log_text("debug() failed: " + err); return; }); // Sign window.hwcrypto.getCertificate({lang: lang}).then(function(response) { var cert = response; log_text("Using certificate:\n" + hexToPem(response.hex)); window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then( function(response) { log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n")); }, function(err) { log_text("sign() failed: " + err); } ); }, function(err) { log_text("getCertificate() failed: " + err); } ); }