1
#pragma once
2

            
3
#include "envoy/common/pure.h"
4
#include "envoy/config/typed_config.h"
5
#include "envoy/ssl/context_config.h"
6

            
7
#include "source/common/common/utility.h"
8
#include "source/common/tls/cert_validator/cert_validator.h"
9
#include "source/common/tls/stats.h"
10

            
11
#include "absl/strings/string_view.h"
12

            
13
namespace Envoy {
14
namespace Extensions {
15
namespace TransportSockets {
16
namespace Tls {
17

            
18
std::string getCertValidatorName(const Envoy::Ssl::CertificateValidationContextConfig* config);
19

            
20
class CertValidatorFactory : public Config::UntypedFactory {
21
public:
22
  virtual absl::StatusOr<CertValidatorPtr>
23
  createCertValidator(const Envoy::Ssl::CertificateValidationContextConfig* config, SslStats& stats,
24
                      Server::Configuration::CommonFactoryContext& context,
25
                      Stats::Scope& scope) PURE;
26

            
27
2659
  std::string category() const override { return "envoy.tls.cert_validator"; }
28
};
29

            
30
} // namespace Tls
31
} // namespace TransportSockets
32
} // namespace Extensions
33
} // namespace Envoy