/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. * * The origin of this IDL file is * https://w3c.github.io/webauthn/ */ /***** Interfaces to Data *****/ [SecureContext, Pref="security.webauth.webauthn"] interface PublicKeyCredential : Credential { [SameObject] readonly attribute ArrayBuffer rawId; [SameObject] readonly attribute AuthenticatorResponse response; AuthenticationExtensionsClientOutputs getClientExtensionResults(); }; [SecureContext] partial interface PublicKeyCredential { static Promise isUserVerifyingPlatformAuthenticatorAvailable(); }; [SecureContext, Pref="security.webauth.webauthn"] interface AuthenticatorResponse { [SameObject] readonly attribute ArrayBuffer clientDataJSON; }; [SecureContext, Pref="security.webauth.webauthn"] interface AuthenticatorAttestationResponse : AuthenticatorResponse { [SameObject] readonly attribute ArrayBuffer attestationObject; }; [SecureContext, Pref="security.webauth.webauthn"] interface AuthenticatorAssertionResponse : AuthenticatorResponse { [SameObject] readonly attribute ArrayBuffer authenticatorData; [SameObject] readonly attribute ArrayBuffer signature; [SameObject] readonly attribute ArrayBuffer? userHandle; }; dictionary PublicKeyCredentialParameters { required PublicKeyCredentialType type; required COSEAlgorithmIdentifier alg; }; dictionary PublicKeyCredentialCreationOptions { required PublicKeyCredentialRpEntity rp; required PublicKeyCredentialUserEntity user; required BufferSource challenge; required sequence pubKeyCredParams; unsigned long timeout; sequence excludeCredentials = []; AuthenticatorSelectionCriteria authenticatorSelection; AttestationConveyancePreference attestation = "none"; AuthenticationExtensionsClientInputs extensions; }; dictionary PublicKeyCredentialEntity { required DOMString name; USVString icon; }; dictionary PublicKeyCredentialRpEntity : PublicKeyCredentialEntity { DOMString id; }; dictionary PublicKeyCredentialUserEntity : PublicKeyCredentialEntity { required BufferSource id; required DOMString displayName; }; dictionary AuthenticatorSelectionCriteria { AuthenticatorAttachment authenticatorAttachment; boolean requireResidentKey = false; UserVerificationRequirement userVerification = "preferred"; }; enum AuthenticatorAttachment { "platform", // Platform attachment "cross-platform" // Cross-platform attachment }; enum AttestationConveyancePreference { "none", "indirect", "direct" }; enum UserVerificationRequirement { "required", "preferred", "discouraged" }; dictionary PublicKeyCredentialRequestOptions { required BufferSource challenge; unsigned long timeout; USVString rpId; sequence allowCredentials = []; UserVerificationRequirement userVerification = "preferred"; AuthenticationExtensionsClientInputs extensions; }; // TODO - Use partial dictionaries when bug 1436329 is fixed. dictionary AuthenticationExtensionsClientInputs { // FIDO AppID Extension (appid) // USVString appid; }; // TODO - Use partial dictionaries when bug 1436329 is fixed. dictionary AuthenticationExtensionsClientOutputs { // FIDO AppID Extension (appid) // boolean appid; }; typedef record AuthenticationExtensionsAuthenticatorInputs; dictionary CollectedClientData { required DOMString type; required DOMString challenge; required DOMString origin; required DOMString hashAlgorithm; DOMString tokenBindingId; AuthenticationExtensionsClientInputs clientExtensions; AuthenticationExtensionsAuthenticatorInputs authenticatorExtensions; }; enum PublicKeyCredentialType { "public-key" }; dictionary PublicKeyCredentialDescriptor { required PublicKeyCredentialType type; required BufferSource id; sequence transports; }; enum AuthenticatorTransport { "usb", "nfc", "ble" }; typedef long COSEAlgorithmIdentifier; typedef sequence AuthenticatorSelectionList; typedef BufferSource AAGUID; /* // FIDO AppID Extension (appid) // partial dictionary AuthenticationExtensionsClientInputs { USVString appid; }; // FIDO AppID Extension (appid) // partial dictionary AuthenticationExtensionsClientOutputs { boolean appid; }; */