blob: c026a3d19176c9add62195136a92ee1f263c5e23 [file] [log] [blame]
// 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() => ();
};