#include "device/fido/cable/cable_discovery_data.h"
#include <cstring>
#include "base/check_op.h"
#include "base/i18n/string_compare.h"
#include "base/ranges/algorithm.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
#include "components/cbor/values.h"
#include "crypto/random.h"
#include "device/fido/cable/v2_handshake.h"
#include "device/fido/fido_parsing_utils.h"
#include "third_party/boringssl/src/include/openssl/aes.h"
#include "third_party/boringssl/src/include/openssl/digest.h"
#include "third_party/boringssl/src/include/openssl/ec.h"
#include "third_party/boringssl/src/include/openssl/hkdf.h"
#include "third_party/boringssl/src/include/openssl/mem.h"
#include "third_party/boringssl/src/include/openssl/obj.h"
#include "third_party/icu/source/common/unicode/locid.h"
#include "third_party/icu/source/i18n/unicode/coll.h"
namespace device {
CableDiscoveryData::CableDiscoveryData() = default;
CableDiscoveryData::CableDiscoveryData(
CableDiscoveryData::Version version,
const CableEidArray& client_eid,
const CableEidArray& authenticator_eid,
const CableSessionPreKeyArray& session_pre_key)
: … { … }
CableDiscoveryData::CableDiscoveryData(const CableDiscoveryData& data) =
default;
CableDiscoveryData& CableDiscoveryData::operator=(
const CableDiscoveryData& other) = default;
CableDiscoveryData::~CableDiscoveryData() = default;
bool CableDiscoveryData::operator==(const CableDiscoveryData& other) const { … }
bool CableDiscoveryData::MatchV1(const CableEidArray& eid) const { … }
CableDiscoveryData::V2Data::V2Data(std::vector<uint8_t> server_link_data_in,
std::vector<uint8_t> experiments_in)
: … { … }
CableDiscoveryData::V2Data::V2Data(const V2Data&) = default;
CableDiscoveryData::V2Data::~V2Data() = default;
bool CableDiscoveryData::V2Data::operator==(const V2Data& other) const { … }
namespace cablev2 {
Pairing::NameComparator::NameComparator(const icu::Locale* locale) { … }
Pairing::NameComparator::NameComparator(NameComparator&&) = default;
Pairing::NameComparator::~NameComparator() = default;
bool Pairing::NameComparator::operator()(const std::unique_ptr<Pairing>& a,
const std::unique_ptr<Pairing>& b) { … }
Pairing::Pairing() = default;
Pairing::~Pairing() = default;
std::optional<std::unique_ptr<Pairing>> Pairing::Parse(
const cbor::Value& cbor,
tunnelserver::KnownDomainID domain,
base::span<const uint8_t, kQRSeedSize> local_identity_seed,
base::span<const uint8_t, 32> handshake_hash) { … }
bool Pairing::CompareByMostRecentFirst(const std::unique_ptr<Pairing>& a,
const std::unique_ptr<Pairing>& b) { … }
bool Pairing::CompareByLeastStableChannelFirst(
const std::unique_ptr<Pairing>& a,
const std::unique_ptr<Pairing>& b) { … }
bool Pairing::CompareByPublicKey(const std::unique_ptr<Pairing>& a,
const std::unique_ptr<Pairing>& b) { … }
Pairing::NameComparator Pairing::CompareByName(const icu::Locale* locale) { … }
bool Pairing::EqualPublicKeys(const std::unique_ptr<Pairing>& a,
const std::unique_ptr<Pairing>& b) { … }
Pairing::Pairing(const Pairing&) = default;
Pairing& Pairing::operator=(const Pairing&) = default;
}
}