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
737
    Server::Configuration::TransportSocketFactoryContext& context) {
19
737
  absl::StatusOr<std::unique_ptr<ClientContextConfigImpl>> client_config_or_error =
20
737
      ClientContextConfigImpl::create(
21
737
          MessageUtil::downcastAndValidate<
22
737
              const envoy::extensions::transport_sockets::tls::v3::UpstreamTlsContext&>(
23
737
              message, context.messageValidationVisitor()),
24
737
          context);
25
737
  RETURN_IF_NOT_OK(client_config_or_error.status());
26
736
  return ClientSslSocketFactory::create(std::move(client_config_or_error.value()),
27
736
                                        context.serverFactoryContext().sslContextManager(),
28
736
                                        context.statsScope());
29
737
}
30

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

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

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