You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

43 lines
1.5 KiB

$(function() {
var form = document.getElementById("add-credential-form");
var optionsBytes = Uint8Array.from(atob(form.dataset.options), c => c.charCodeAt(0));
// cbor.js expects ArrayBuffer as input when decoding
var options = CBOR.decode(optionsBytes.buffer);
function b64(arraybuffer) {
return btoa(String.fromCharCode.apply(null, new Uint8Array(arraybuffer)));
}
function requestCredentials() {
// Hide error & success messages, show the "waiting" message
$("#name-next").addClass("hide");
$("#waiting").removeClass("hide");
$("#error").addClass("hide");
$("#success").addClass("hide");
navigator.credentials.create(options).then(function(attestation) {
$("#attestation_object").val(b64(attestation.response.attestationObject));
$("#client_data_json").val(b64(attestation.response.clientDataJSON));
// Show the success message and save button
$("#waiting").addClass("hide");
$("#success").removeClass("hide");
}).catch(function(err) {
// Show the error message
$("#waiting").addClass("hide");
$("#error-text").text(err);
$("#error").removeClass("hide");
});
}
$("#name").on('keypress',function(e) {
if (e.which == 13) {
e.preventDefault();
requestCredentials();
}
});
$("#name-next").click(requestCredentials);
$("#retry").click(requestCredentials);
});