1
#pragma once
2

            
3
#include "source/common/common/logger.h"
4

            
5
#include "absl/strings/str_cat.h"
6
#include "quiche/quic/core/crypto/proof_verifier.h"
7
#include "quiche/quic/core/quic_versions.h"
8

            
9
namespace Envoy {
10
namespace Quic {
11

            
12
// A partial implementation of quic::ProofVerifier which does signature
13
// verification.
14
class EnvoyQuicProofVerifierBase : public quic::ProofVerifier,
15
                                   protected Logger::Loggable<Logger::Id::quic> {
16
public:
17
1783
  ~EnvoyQuicProofVerifierBase() override = default;
18

            
19
  // quic::ProofVerifier
20
  quic::QuicAsyncStatus
21
  VerifyProof(const std::string& hostname, const uint16_t port, const std::string& server_config,
22
              quic::QuicTransportVersion /*quic_version*/, absl::string_view chlo_hash,
23
              const std::vector<std::string>& certs, const std::string& cert_sct,
24
              const std::string& signature, const quic::ProofVerifyContext* context,
25
              std::string* error_details, std::unique_ptr<quic::ProofVerifyDetails>* details,
26
              std::unique_ptr<quic::ProofVerifierCallback> callback) override;
27

            
28
1
  std::unique_ptr<quic::ProofVerifyContext> CreateDefaultContext() override { return nullptr; }
29
};
30

            
31
} // namespace Quic
32
} // namespace Envoy