| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module blink.test.mojom; |
| |
| import "url/mojom/url.mojom"; |
| import "third_party/blink/public/mojom/webauthn/authenticator.mojom"; |
| |
| // Application protocol that the virtual authenticator should simulate. |
| enum ClientToAuthenticatorProtocol { |
| U2F, |
| CTAP2, |
| }; |
| |
| // A specific versioned release of the CTAP2 protocol. |
| enum Ctap2Version { |
| CTAP2_0, |
| CTAP2_1, |
| }; |
| |
| // Attributes that the virtual authenticator should simulate. |
| struct VirtualAuthenticatorOptions { |
| // protocol is the client-to-authenticator protocol that the virtual |
| // authenticator simulates. |
| ClientToAuthenticatorProtocol protocol; |
| // ctap2_version indicates which minor version of CTAP2 the authenticator |
| // should simulate if |protocol| is CTAP2. It is ignored otherwise. |
| Ctap2Version ctap2_version; |
| blink.mojom.AuthenticatorTransport transport; |
| blink.mojom.AuthenticatorAttachment attachment; |
| bool has_resident_key; |
| bool has_user_verification; |
| bool is_user_present = true; |
| bool has_large_blob; |
| }; |
| |
| // Encapsulates both public (key handle) and private information associated |
| // with a single registration on a single virtual authenticator device. |
| struct RegisteredKey { |
| array<uint8> key_handle; |
| string rp_id; |
| // The EC private key in PKCS#8 format. |
| array<uint8> private_key; |
| int32 counter; |
| }; |
| |
| // Represents a stateful virtual authenticator device. |
| interface VirtualAuthenticator { |
| GetUniqueId() => (string id); |
| |
| AddRegistration(RegisteredKey key) => (bool added); |
| GetRegistrations() => (array<RegisteredKey> keys); |
| // Removes a registration identified by |key_handle|. Returns |true| if the |
| // registration was found and removed, |false| otherwise. |
| RemoveRegistration(array<uint8> key_handle) => (bool removed); |
| ClearRegistrations() => (); |
| |
| // Returns the large blob associated with |key_handle|, if any. |
| GetLargeBlob(array<uint8> key_handle) => (array<uint8>? blob); |
| // Sets or replaces the per-credential large blob associated with |key_handle|. |
| SetLargeBlob(array<uint8> key_handle, array<uint8> blob) => (bool set); |
| |
| // Sets whether the authenticator will reply to user verification requests |
| // successfully (UV = true) or not. |
| SetUserVerified(bool verified) => (); |
| }; |
| |
| // Manages a virtual environment where the Web Authentication API talks to a |
| // set of virtual authenticators instead of real physical devices. |
| interface VirtualAuthenticatorManager { |
| CreateAuthenticator(VirtualAuthenticatorOptions options) => (pending_remote<VirtualAuthenticator> authenticator); |
| GetAuthenticators() => (array<pending_remote<VirtualAuthenticator>> authenticators); |
| RemoveAuthenticator(string id) => (bool removed); |
| ClearAuthenticators() => (); |
| }; |