1
#include "source/extensions/transport_sockets/tls/downstream_config.h"
2

            
3
#include "envoy/extensions/transport_sockets/tls/v3/cert.pb.h"
4
#include "envoy/extensions/transport_sockets/tls/v3/tls.pb.validate.h"
5

            
6
#include "source/common/protobuf/utility.h"
7
#include "source/common/tls/server_context_config_impl.h"
8
#include "source/common/tls/server_ssl_socket.h"
9

            
10
namespace Envoy {
11
namespace Extensions {
12
namespace TransportSockets {
13
namespace Tls {
14

            
15
absl::StatusOr<Network::DownstreamTransportSocketFactoryPtr>
16
DownstreamSslSocketFactory::createTransportSocketFactory(
17
    const Protobuf::Message& message, Server::Configuration::TransportSocketFactoryContext& context,
18
376
    const std::vector<std::string>& server_names) {
19
376
  absl::StatusOr<std::unique_ptr<ServerContextConfigImpl>> server_config_or_error =
20
376
      ServerContextConfigImpl::create(
21
376
          MessageUtil::downcastAndValidate<
22
376
              const envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext&>(
23
376
              message, context.messageValidationVisitor()),
24
376
          context, server_names, false);
25
376
  RETURN_IF_NOT_OK(server_config_or_error.status());
26
367
  return ServerSslSocketFactory::create(std::move(server_config_or_error.value()),
27
367
                                        context.serverFactoryContext().sslContextManager(),
28
367
                                        context.statsScope());
29
376
}
30

            
31
1324
ProtobufTypes::MessagePtr DownstreamSslSocketFactory::createEmptyConfigProto() {
32
1324
  return std::make_unique<envoy::extensions::transport_sockets::tls::v3::DownstreamTlsContext>();
33
1324
}
34

            
35
LEGACY_REGISTER_FACTORY(DownstreamSslSocketFactory,
36
                        Server::Configuration::DownstreamTransportSocketConfigFactory, "tls");
37

            
38
} // namespace Tls
39
} // namespace TransportSockets
40
} // namespace Extensions
41
} // namespace Envoy