1
#include "source/extensions/transport_sockets/tls/upstream_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/client_ssl_socket.h"
8
#include "source/common/tls/context_config_impl.h"
9

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

            
15
absl::StatusOr<Network::UpstreamTransportSocketFactoryPtr>
16
UpstreamSslSocketFactory::createTransportSocketFactory(
17
    const Protobuf::Message& message,
18
745
    Server::Configuration::TransportSocketFactoryContext& context) {
19
745
  absl::StatusOr<std::unique_ptr<ClientContextConfigImpl>> client_config_or_error =
20
745
      ClientContextConfigImpl::create(
21
745
          MessageUtil::downcastAndValidate<
22
745
              const envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext&>(
23
745
              message, context.messageValidationVisitor()),
24
745
          context);
25
745
  RETURN_IF_NOT_OK(client_config_or_error.status());
26
744
  return ClientSslSocketFactory::create(std::move(client_config_or_error.value()),
27
744
                                        context.serverFactoryContext().sslContextManager(),
28
744
                                        context.statsScope());
29
745
}
30

            
31
1775
ProtobufTypes::MessagePtr UpstreamSslSocketFactory::createEmptyConfigProto() {
32
1775
  return std::make_unique<envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext>();
33
1775
}
34

            
35
LEGACY_REGISTER_FACTORY(UpstreamSslSocketFactory,
36
                        Server::Configuration::UpstreamTransportSocketConfigFactory, "tls");
37

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