1
#pragma once
2

            
3
#include "envoy/extensions/transport_sockets/tls/cert_mappers/sni/v3/config.pb.h"
4
#include "envoy/extensions/transport_sockets/tls/cert_mappers/sni/v3/config.pb.validate.h"
5
#include "envoy/registry/registry.h"
6
#include "envoy/server/factory_context.h"
7
#include "envoy/ssl/handshaker.h"
8

            
9
namespace Envoy {
10
namespace Extensions {
11
namespace TransportSockets {
12
namespace Tls {
13
namespace CertificateMappers {
14
namespace SNI {
15

            
16
using SNIConfigProto = envoy::extensions::transport_sockets::tls::cert_mappers::sni::v3::SNI;
17
class SNIMapperFactory : public Ssl::TlsCertificateMapperConfigFactory {
18
public:
19
  absl::StatusOr<Ssl::TlsCertificateMapperFactory> createTlsCertificateMapperFactory(
20
      const Protobuf::Message& proto_config,
21
      Server::Configuration::GenericFactoryContext& factory_context) override;
22

            
23
4
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
24
4
    return std::make_unique<SNIConfigProto>();
25
4
  }
26

            
27
30
  std::string name() const override { return "envoy.tls.certificate_mappers.sni"; }
28
};
29

            
30
DECLARE_FACTORY(SNIMapperFactory);
31

            
32
} // namespace SNI
33
} // namespace CertificateMappers
34
} // namespace Tls
35
} // namespace TransportSockets
36
} // namespace Extensions
37
} // namespace Envoy