chromium/device/fido/fido_types.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DEVICE_FIDO_FIDO_TYPES_H_
#define DEVICE_FIDO_FIDO_TYPES_H_

#include <cstdint>

// The definitions below are for mojo-mappable types that need to be transferred
// from Blink. Types that do not have mojo equivalents are better placed in
// fido_constants.h.

namespace device {

// ProtocolVersion is the major protocol version of an authenticator device.
enum class ProtocolVersion {};

// Ctap2Version distinguishes different minor versions of the CTAP2 protocol.
enum class Ctap2Version {};

enum class CredentialType {};

// Authenticator attachment constraint passed on from the relying party as a
// parameter for AuthenticatorSelectionCriteria. |kAny| is equivalent to the
// (optional) attachment field not being present.
// https://w3c.github.io/webauthn/#attachment
enum class AuthenticatorAttachment {};

// A constraint on whether a client-side discoverable (resident) credential
// should be created during registration.
//
// https://w3c.github.io/webauthn/#enum-residentKeyRequirement
enum class ResidentKeyRequirement {};

// User verification constraint passed on from the relying party as a parameter
// for AuthenticatorSelectionCriteria and for CtapGetAssertion request.
// https://w3c.github.io/webauthn/#enumdef-userverificationrequirement
enum class UserVerificationRequirement {};

// https://w3c.github.io/webauthn/#attestation-convey
enum class AttestationConveyancePreference : uint8_t {};

// https://w3c.github.io/webauthn#enumdef-largeblobsupport
enum class LargeBlobSupport {};

// LargeBlobSupportType enumerates the methods by which an authenticator may
// support large blobs.
enum class LargeBlobSupportType {};

// AuthenticatorType enumerates the different types of authenticators that this
// code handles.
enum class AuthenticatorType {};

}  // namespace device

#endif  // DEVICE_FIDO_FIDO_TYPES_H_