// Copyright 2018 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_CABLE_CABLE_DISCOVERY_DATA_H_ #define DEVICE_FIDO_CABLE_CABLE_DISCOVERY_DATA_H_ #include <stdint.h> #include <array> #include <memory> #include <optional> #include <string> #include <vector> #include "base/component_export.h" #include "base/containers/span.h" #include "base/time/time.h" #include "device/fido/cable/v2_constants.h" #include "device/fido/fido_constants.h" #include "third_party/abseil-cpp/absl/types/variant.h" #include "third_party/icu/source/common/unicode/uversion.h" namespace cbor { class Value; } // third_party/icu/source/common/unicode/uversion.h will set namespace icu. namespace U_ICU_NAMESPACE { class Collator; class Locale; } // namespace U_ICU_NAMESPACE namespace device { constexpr size_t kCableEphemeralIdSize = …; constexpr size_t kCableSessionPreKeySize = …; constexpr size_t kCableNonceSize = …; CableEidArray; CableSessionPreKeyArray; // CableNonce is a nonce used in BLE handshaking. CableNonce; // CableEidGeneratorKey is an AES-256 key that is used to encrypt a 64-bit nonce // and 64-bits of zeros, resulting in a BLE-advertised EID. CableEidGeneratorKey; // CablePskGeneratorKey is HKDF input keying material that is used to // generate a Noise PSK given the nonce decrypted from an EID. CablePskGeneratorKey; CableTunnelIDGeneratorKey; // CableAuthenticatorIdentityKey is a P-256 public value used to authenticate a // paired phone. CableAuthenticatorIdentityKey; // Encapsulates information required to discover Cable device per single // credential. When multiple credentials are enrolled to a single account // (i.e. more than one phone has been enrolled to an user account as a // security key), then FidoCableDiscovery must advertise for all of the client // EID received from the relying party. // TODO(hongjunchoi): Add discovery data required for MakeCredential request. // See: https://crbug.com/837088 struct COMPONENT_EXPORT(DEVICE_FIDO) CableDiscoveryData { … }; namespace cablev2 { // Pairing represents information previously received from a caBLEv2 // authenticator that enables future interactions to skip scanning a QR code. struct COMPONENT_EXPORT(DEVICE_FIDO) Pairing { … }; } // namespace cablev2 } // namespace device #endif // DEVICE_FIDO_CABLE_CABLE_DISCOVERY_DATA_H_