1
#pragma once
2

            
3
#include "envoy/extensions/transport_sockets/tls/cert_mappers/static_name/v3/config.pb.h"
4
#include "envoy/extensions/transport_sockets/tls/cert_mappers/static_name/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 StaticName {
15

            
16
using StaticNameConfigProto =
17
    envoy::extensions::transport_sockets::tls::cert_mappers::static_name::v3::StaticName;
18

            
19
constexpr absl::string_view StaticNameExtension = "envoy.tls.certificate_mappers.static_name";
20

            
21
class StaticNameMapperFactory : public Ssl::TlsCertificateMapperConfigFactory {
22
public:
23
  absl::StatusOr<Ssl::TlsCertificateMapperFactory> createTlsCertificateMapperFactory(
24
      const Protobuf::Message& proto_config,
25
      Server::Configuration::GenericFactoryContext& factory_context) override;
26

            
27
18
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
28
18
    return std::make_unique<StaticNameConfigProto>();
29
18
  }
30

            
31
30
  std::string name() const override { return std::string(StaticNameExtension); }
32
};
33

            
34
DECLARE_FACTORY(StaticNameMapperFactory);
35

            
36
class UpstreamStaticNameMapperFactory : public Ssl::UpstreamTlsCertificateMapperConfigFactory {
37
public:
38
  absl::StatusOr<Ssl::UpstreamTlsCertificateMapperFactory> createTlsCertificateMapperFactory(
39
      const Protobuf::Message& proto_config,
40
      Server::Configuration::GenericFactoryContext& factory_context) override;
41

            
42
11
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
43
11
    return std::make_unique<StaticNameConfigProto>();
44
11
  }
45

            
46
30
  std::string name() const override { return std::string(StaticNameExtension); }
47
};
48

            
49
DECLARE_FACTORY(UpstreamStaticNameMapperFactory);
50

            
51
} // namespace StaticName
52
} // namespace CertificateMappers
53
} // namespace Tls
54
} // namespace TransportSockets
55
} // namespace Extensions
56
} // namespace Envoy