1 /* global u2f */ // js/vendor/u2f-api-polyfill.js
3 AJAX.registerOnload('u2f.js', function () {
4 var $inputReg = $('#u2f_registration_response');
5 if ($inputReg.length > 0) {
6 var $formReg = $inputReg.parents('form');
7 $formReg.find('input[type=submit]').hide();
8 setTimeout(function () {
9 // A magic JS function that talks to the USB device. This function will keep polling for the USB device until it finds one.
10 var request = JSON.parse($inputReg.attr('data-request'));
11 u2f.register(request.appId, [request], JSON.parse($inputReg.attr('data-signatures')), function (data) {
12 // Handle returning error data
13 if (data.errorCode && data.errorCode !== 0) {
14 if (data.errorCode === 5) {
15 Functions.ajaxShowMessage(Messages.strU2FTimeout, false);
17 Functions.ajaxShowMessage(
18 Functions.sprintf(Messages.strU2FError, data.errorCode), false
24 // Fill and submit form.
25 $inputReg.val(JSON.stringify(data));
26 $formReg.trigger('submit');
30 var $inputAuth = $('#u2f_authentication_response');
31 if ($inputAuth.length > 0) {
32 var $formAuth = $inputAuth.parents('form');
33 $formAuth.find('input[type=submit]').hide();
34 setTimeout(function () {
35 // Magic JavaScript talking to your HID
36 // appid, challenge, authenticateRequests
37 var request = JSON.parse($inputAuth.attr('data-request'));
38 u2f.sign(request[0].appId, request[0].challenge, request, function (data) {
39 // Handle returning error data
40 if (data.errorCode && data.errorCode !== 0) {
41 if (data.errorCode === 5) {
42 Functions.ajaxShowMessage(Messages.strU2FTimeout, false);
44 Functions.ajaxShowMessage(
45 Functions.sprintf(Messages.strU2FError, data.errorCode), false
51 // Fill and submit form.
52 $inputAuth.val(JSON.stringify(data));
53 $formAuth.trigger('submit');