218 lines
5.4 KiB
JavaScript
218 lines
5.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
var doc, tab;
|
|
|
|
add_setup(async function () {
|
|
info("Starting about:webauthn");
|
|
tab = await BrowserTestUtils.openNewForegroundTab({
|
|
gBrowser,
|
|
opening: "about:webauthn",
|
|
waitForLoad: true,
|
|
});
|
|
|
|
doc = tab.linkedBrowser.contentDocument;
|
|
});
|
|
|
|
registerCleanupFunction(async function () {
|
|
// Close tab.
|
|
await BrowserTestUtils.removeTab(tab);
|
|
});
|
|
|
|
function send_auth_data_and_check(auth_data) {
|
|
Services.obs.notifyObservers(
|
|
null,
|
|
"about-webauthn-prompt",
|
|
JSON.stringify({ type: "selected-device", auth_info: auth_data })
|
|
);
|
|
|
|
let info_text = doc.getElementById("info-text-div");
|
|
is(info_text.hidden, true, "Start prompt not hidden");
|
|
|
|
let info_section = doc.getElementById("token-info-section");
|
|
isnot(info_section.style.display, "none", "Info section hidden");
|
|
}
|
|
|
|
add_task(async function multiple_devices() {
|
|
Services.obs.notifyObservers(
|
|
null,
|
|
"about-webauthn-prompt",
|
|
JSON.stringify({ type: "select-device" })
|
|
);
|
|
|
|
let info_text = doc.getElementById("info-text-div");
|
|
is(info_text.hidden, false, "Start prompt hidden");
|
|
let field = doc.getElementById("info-text-field");
|
|
is(
|
|
field.getAttribute("data-l10n-id"),
|
|
"about-webauthn-text-select-device",
|
|
"Field does not prompt user to touch device for selection"
|
|
);
|
|
});
|
|
|
|
add_task(async function multiple_devices() {
|
|
send_auth_data_and_check(REAL_AUTH_INFO_1);
|
|
reset_about_page(doc);
|
|
send_auth_data_and_check(REAL_AUTH_INFO_2);
|
|
reset_about_page(doc);
|
|
send_auth_data_and_check(REAL_AUTH_INFO_3);
|
|
reset_about_page(doc);
|
|
});
|
|
|
|
// Yubikey BIO
|
|
const REAL_AUTH_INFO_1 = {
|
|
versions: ["U2F_V2", "FIDO_2_0", "FIDO_2_1_PRE", "FIDO_2_1"],
|
|
extensions: [
|
|
"credProtect",
|
|
"hmac-secret",
|
|
"largeBlobKey",
|
|
"credBlob",
|
|
"minPinLength",
|
|
],
|
|
aaguid: [
|
|
216, 82, 45, 159, 87, 91, 72, 102, 136, 169, 186, 153, 250, 2, 243, 91,
|
|
],
|
|
options: {
|
|
plat: false,
|
|
rk: true,
|
|
clientPin: true,
|
|
up: true,
|
|
uv: true,
|
|
pinUvAuthToken: true,
|
|
noMcGaPermissionsWithClientPin: null,
|
|
largeBlobs: true,
|
|
ep: null,
|
|
bioEnroll: true,
|
|
userVerificationMgmtPreview: true,
|
|
uvBioEnroll: null,
|
|
authnrCfg: true,
|
|
uvAcfg: null,
|
|
credMgmt: true,
|
|
credentialMgmtPreview: true,
|
|
setMinPINLength: true,
|
|
makeCredUvNotRqd: true,
|
|
alwaysUv: false,
|
|
},
|
|
max_msg_size: 1200,
|
|
pin_protocols: [2, 1],
|
|
max_credential_count_in_list: 8,
|
|
max_credential_id_length: 128,
|
|
transports: ["usb"],
|
|
algorithms: [
|
|
{ alg: -7, type: "public-key" },
|
|
{ alg: -8, type: "public-key" },
|
|
],
|
|
max_ser_large_blob_array: 1024,
|
|
force_pin_change: false,
|
|
min_pin_length: 4,
|
|
firmware_version: 328966,
|
|
max_cred_blob_length: 32,
|
|
max_rpids_for_set_min_pin_length: 1,
|
|
preferred_platform_uv_attempts: 3,
|
|
uv_modality: 2,
|
|
certifications: null,
|
|
remaining_discoverable_credentials: 20,
|
|
vendor_prototype_config_commands: null,
|
|
};
|
|
|
|
// Yubikey 5
|
|
const REAL_AUTH_INFO_2 = {
|
|
versions: ["U2F_V2", "FIDO_2_0", "FIDO_2_1_PRE"],
|
|
extensions: ["credProtect", "hmac-secret"],
|
|
aaguid: [
|
|
47, 192, 87, 159, 129, 19, 71, 234, 177, 22, 187, 90, 141, 185, 32, 42,
|
|
],
|
|
options: {
|
|
plat: false,
|
|
rk: true,
|
|
clientPin: true,
|
|
up: true,
|
|
uv: null,
|
|
pinUvAuthToken: null,
|
|
noMcGaPermissionsWithClientPin: null,
|
|
largeBlobs: null,
|
|
ep: null,
|
|
bioEnroll: null,
|
|
userVerificationMgmtPreview: null,
|
|
uvBioEnroll: null,
|
|
authnrCfg: null,
|
|
uvAcfg: null,
|
|
credMgmt: null,
|
|
credentialMgmtPreview: true,
|
|
setMinPINLength: null,
|
|
makeCredUvNotRqd: null,
|
|
alwaysUv: null,
|
|
},
|
|
max_msg_size: 1200,
|
|
pin_protocols: [1],
|
|
max_credential_count_in_list: 8,
|
|
max_credential_id_length: 128,
|
|
transports: ["nfc", "usb"],
|
|
algorithms: [
|
|
{ alg: -7, type: "public-key" },
|
|
{ alg: -8, type: "public-key" },
|
|
],
|
|
max_ser_large_blob_array: null,
|
|
force_pin_change: null,
|
|
min_pin_length: null,
|
|
firmware_version: null,
|
|
max_cred_blob_length: null,
|
|
max_rpids_for_set_min_pin_length: null,
|
|
preferred_platform_uv_attempts: null,
|
|
uv_modality: null,
|
|
certifications: null,
|
|
remaining_discoverable_credentials: null,
|
|
vendor_prototype_config_commands: null,
|
|
};
|
|
|
|
// Nitrokey 3
|
|
const REAL_AUTH_INFO_3 = {
|
|
versions: ["U2F_V2", "FIDO_2_0", "FIDO_2_1_PRE"],
|
|
extensions: ["credProtect", "hmac-secret"],
|
|
aaguid: [
|
|
47, 192, 87, 159, 129, 19, 71, 234, 177, 22, 187, 90, 141, 185, 32, 42,
|
|
],
|
|
options: {
|
|
plat: false,
|
|
rk: true,
|
|
clientPin: true,
|
|
up: true,
|
|
uv: null,
|
|
pinUvAuthToken: null,
|
|
noMcGaPermissionsWithClientPin: null,
|
|
largeBlobs: null,
|
|
ep: null,
|
|
bioEnroll: null,
|
|
userVerificationMgmtPreview: null,
|
|
uvBioEnroll: null,
|
|
authnrCfg: null,
|
|
uvAcfg: null,
|
|
credMgmt: null,
|
|
credentialMgmtPreview: true,
|
|
setMinPINLength: null,
|
|
makeCredUvNotRqd: null,
|
|
alwaysUv: null,
|
|
},
|
|
max_msg_size: 1200,
|
|
pin_protocols: [1],
|
|
max_credential_count_in_list: 8,
|
|
max_credential_id_length: 128,
|
|
transports: ["nfc", "usb"],
|
|
algorithms: [
|
|
{ alg: -7, type: "public-key" },
|
|
{ alg: -8, type: "public-key" },
|
|
],
|
|
max_ser_large_blob_array: null,
|
|
force_pin_change: null,
|
|
min_pin_length: null,
|
|
firmware_version: null,
|
|
max_cred_blob_length: null,
|
|
max_rpids_for_set_min_pin_length: null,
|
|
preferred_platform_uv_attempts: null,
|
|
uv_modality: null,
|
|
certifications: null,
|
|
remaining_discoverable_credentials: null,
|
|
vendor_prototype_config_commands: null,
|
|
};
|