1
#pragma once
2

            
3
#include "envoy/config/typed_config.h"
4
#include "envoy/network/filter.h"
5
#include "envoy/network/socket.h"
6

            
7
#include "source/server/listener_stats.h"
8

            
9
#include "quiche/quic/core/crypto/proof_source.h"
10

            
11
namespace Envoy {
12
namespace Quic {
13

            
14
// A factory interface to provide quic::ProofSource.
15
class EnvoyQuicProofSourceFactoryInterface : public Config::TypedFactory {
16
public:
17
  ~EnvoyQuicProofSourceFactoryInterface() override = default;
18

            
19
1028
  std::string category() const override { return "envoy.quic.proof_source"; }
20

            
21
  virtual std::unique_ptr<quic::ProofSource>
22
  createQuicProofSource(Network::Socket& listen_socket,
23
                        Network::FilterChainManager& filter_chain_manager,
24
                        Server::ListenerStats& listener_stats, TimeSource& time_source) PURE;
25
};
26

            
27
} // namespace Quic
28
} // namespace Envoy