// Copyright 2020 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. #ifndef QUICHE_QUIC_CORE_CRYPTO_WEB_TRANSPORT_FINGERPRINT_PROOF_VERIFIER_H_ #define QUICHE_QUIC_CORE_CRYPTO_WEB_TRANSPORT_FINGERPRINT_PROOF_VERIFIER_H_ #include <vector> #include "absl/strings/string_view.h" #include "quiche/quic/core/crypto/certificate_view.h" #include "quiche/quic/core/crypto/proof_verifier.h" #include "quiche/quic/core/quic_clock.h" #include "quiche/quic/platform/api/quic_export.h" namespace quic { // Represents a fingerprint of an X.509 certificate in a format based on // https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint. // TODO(vasilvv): remove this once all consumers of this API use // WebTransportHash. struct QUICHE_EXPORT CertificateFingerprint { … }; // Represents a fingerprint of an X.509 certificate in a format based on // https://w3c.github.io/webtransport/#dictdef-webtransporthash. struct QUICHE_EXPORT WebTransportHash { … }; // WebTransportFingerprintProofVerifier verifies the server leaf certificate // against a supplied list of certificate fingerprints following the procedure // described in the WebTransport specification. The certificate is deemed // trusted if it matches a fingerprint in the list, has expiry dates that are // not too long and has not expired. Only the leaf is checked, the rest of the // chain is ignored. Reference specification: // https://wicg.github.io/web-transport/#dom-quictransportconfiguration-server_certificate_fingerprints class QUICHE_EXPORT WebTransportFingerprintProofVerifier : public ProofVerifier { … }; } // namespace quic #endif // QUICHE_QUIC_CORE_CRYPTO_WEB_TRANSPORT_FINGERPRINT_PROOF_VERIFIER_H_