LCOV - code coverage report
Current view: top level - source/common/quic - envoy_quic_proof_source_base.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 2 4 50.0 %
Date: 2024-01-05 06:35:25 Functions: 2 4 50.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <string>
       4             : 
       5             : #include "envoy/network/filter.h"
       6             : 
       7             : #include "source/common/common/assert.h"
       8             : #include "source/common/common/logger.h"
       9             : 
      10             : #include "absl/strings/str_cat.h"
      11             : #include "openssl/ssl.h"
      12             : #include "quiche/quic/core/crypto/crypto_protocol.h"
      13             : #include "quiche/quic/core/crypto/proof_source.h"
      14             : #include "quiche/quic/core/quic_versions.h"
      15             : #include "quiche/quic/platform/api/quic_socket_address.h"
      16             : 
      17             : namespace Envoy {
      18             : namespace Quic {
      19             : 
      20             : // A ProofSource::Detail implementation which retains filter chain.
      21             : class EnvoyQuicProofSourceDetails : public quic::ProofSource::Details {
      22             : public:
      23             :   explicit EnvoyQuicProofSourceDetails(const Network::FilterChain& filter_chain)
      24           0 :       : filter_chain_(filter_chain) {}
      25             : 
      26           0 :   const Network::FilterChain& filterChain() const { return filter_chain_; }
      27             : 
      28             : private:
      29             :   const Network::FilterChain& filter_chain_;
      30             : };
      31             : 
      32             : // A partial implementation of quic::ProofSource which chooses a cipher suite according to the leaf
      33             : // cert to sign in GetProof().
      34             : class EnvoyQuicProofSourceBase : public quic::ProofSource,
      35             :                                  protected Logger::Loggable<Logger::Id::quic> {
      36             : public:
      37           1 :   ~EnvoyQuicProofSourceBase() override = default;
      38             : 
      39             :   // quic::ProofSource
      40             :   void GetProof(const quic::QuicSocketAddress& server_address,
      41             :                 const quic::QuicSocketAddress& client_address, const std::string& hostname,
      42             :                 const std::string& server_config, quic::QuicTransportVersion /*transport_version*/,
      43             :                 absl::string_view chlo_hash,
      44             :                 std::unique_ptr<quic::ProofSource::Callback> callback) override;
      45             : 
      46           1 :   TicketCrypter* GetTicketCrypter() override { return nullptr; }
      47             : 
      48             :   void ComputeTlsSignature(const quic::QuicSocketAddress& server_address,
      49             :                            const quic::QuicSocketAddress& client_address,
      50             :                            const std::string& hostname, uint16_t signature_algorithm,
      51             :                            absl::string_view in,
      52             :                            std::unique_ptr<quic::ProofSource::SignatureCallback> callback) override;
      53             :   absl::InlinedVector<uint16_t, 8> SupportedTlsSignatureAlgorithms() const override;
      54             : 
      55             : protected:
      56             :   virtual void signPayload(const quic::QuicSocketAddress& server_address,
      57             :                            const quic::QuicSocketAddress& client_address,
      58             :                            const std::string& hostname, uint16_t signature_algorithm,
      59             :                            absl::string_view in,
      60             :                            std::unique_ptr<quic::ProofSource::SignatureCallback> callback) PURE;
      61             : };
      62             : 
      63             : } // namespace Quic
      64             : } // namespace Envoy

Generated by: LCOV version 1.15