diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_fake_proof_source.h b/source/extensions/quic_listeners/quiche/envoy_quic_fake_proof_source.h new file mode 100644 index 000000000000..a8637e0037d3 --- /dev/null +++ b/source/extensions/quic_listeners/quiche/envoy_quic_fake_proof_source.h @@ -0,0 +1,43 @@ +#pragma once + +#include "quiche/quic/core/crypto/proof_source.h" +#include "quiche/quic/platform/api/quic_reference_counted.h" + +namespace Envoy { + +class EnvoyQuicFakeProofSource : public quic::ProofSource { +public: + EnvoyQuicFakeProofSource() {} + ~EnvoyQuicFakeProofSource() override {} + + // ProofSource + void GetProof(const quic::QuicSocketAddress& server_address, const std::string& hostname, + const std::string& server_config, quic::QuicTransportVersion transport_version, + quic::QuicStringPiece chlo_hash, + std::unique_ptr callback) override { + quic::QuicReferenceCountedPointer chain = + GetCertChain(server_address, hostname); + quic::QuicCryptoProof proof; + proof.signature = "Dummy signature"; + proof.leaf_cert_scts = "Dummy timestamp"; + callback->Run(true, chain, proof, nullptr /* details */); + } + + quic::QuicReferenceCountedPointer + GetCertChain(const quic::QuicSocketAddress& server_address, + const std::string& hostname) override { + std::vector certs; + certs.push_back(kDummyCertName); + return quic::QuicReferenceCountedPointer( + new quic::ProofSource::Chain(certs)); + } + + void ComputeTlsSignature(const quic::QuicSocketAddress& server_address, + const std::string& hostname, uint16_t signature_algorithm, + quic::QuicStringPiece in, + std::unique_ptr callback) override { + callback->Run(true, "Dummy signature"); + } +}; + +} // namespace Envoy diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_fake_proof_verifier.h b/source/extensions/quic_listeners/quiche/envoy_quic_fake_proof_verifier.h new file mode 100644 index 000000000000..37114f59c6e0 --- /dev/null +++ b/source/extensions/quic_listeners/quiche/envoy_quic_fake_proof_verifier.h @@ -0,0 +1,31 @@ +#pragma once + +#include "quiche/quic/core/crypto/proof_verifier.h" + +namespace Envoy { + +class EnvoyQuicFakeProofVerifier : public quic::ProofVerifier { +public: + EnvoyQuicFakeProofVerifier() {} + ~EnvoyQuicFakeProofVerifier() override {} + + quic::QuicAsyncStatus + VerifyProof(const string& /*hostname*/, const uint16_t /*port*/, const string& /*server_config*/, + quic::QuicTransportVersion /*quic_version*/, absl::string_view /*chlo_hash*/, + const std::vector& /*certs*/, const string& /*cert_sct*/, + const string& /*signature*/, const quic::ProofVerifyContext* /*context*/, + string* /*error_details*/, std::unique_ptr* /*details*/, + std::unique_ptr /*callback*/) override { + return quic::QUIC_SUCCESS; + } + quic::QuicAsyncStatus + VerifyCertChain(const string& /*hostname*/, const std::vector& /*certs*/, + const quic::ProofVerifyContext* /*context*/, string* /*error_details*/, + std::unique_ptr* /*details*/, + std::unique_ptr /*callback*/) override { + return quic::QUIC_SUCCESS; + } + std::unique_ptr CreateDefaultContext() override { return nullptr; } +}; + +} // namespace Envoy