14#ifndef OPENVPN_SSL_SSLAPI_H
15#define OPENVPN_SSL_SSLAPI_H
48class SSLAPI :
public RC<thread_unsafe_refcount>
101 virtual SSLAPI::Ptr ssl(
const std::string *hostname,
const std::string *cache_key) = 0;
151 virtual void load_ca(
const std::string &ca_txt,
bool strict) = 0;
152 virtual void load_crl(
const std::string &crl_txt) = 0;
156 virtual void load_dh(
const std::string &dh_txt) = 0;
167 virtual void set_flags(
const unsigned int flags_arg) = 0;
181#ifdef OPENVPN_JSON_INTERNAL
182 virtual SSLConfigAPI::Ptr json_override(
const Json::Value &root,
const bool load_cert_key)
const = 0;
187 virtual std::string
validate_crl(
const std::string &crl_txt)
const = 0;
189 virtual std::string
validate_dh(
const std::string &dh_txt)
const = 0;
Reference count base class for objects tracked by RCPtr. Disallows copying and assignment.
virtual void start_handshake()=0
virtual void write_ciphertext_unbuffered(const unsigned char *data, const size_t size)=0
virtual void write_ciphertext(const BufferPtr &buf)=0
virtual const AuthCert::Ptr & auth_cert() const =0
virtual void mark_no_cache()=0
virtual bool read_ciphertext_ready() const =0
virtual bool read_cleartext_ready() const =0
virtual std::string ssl_handshake_details() const =0
virtual bool did_full_handshake()=0
virtual bool export_keying_material(const std::string &label, unsigned char *dest, size_t size)=0
virtual BufferPtr read_ciphertext()=0
virtual ssize_t write_cleartext_unbuffered(const void *data, const size_t size)=0
virtual ssize_t read_cleartext(void *data, const size_t capacity)=0
uint32_t get_tls_warnings() const
virtual void load_dh(const std::string &dh_txt)=0
virtual std::string extract_dh() const =0
virtual size_t private_key_length() const =0
virtual std::string validate_cert(const std::string &cert_txt) const =0
virtual std::string validate_dh(const std::string &dh_txt) const =0
virtual void set_tls_remote(const std::string &tls_remote_arg)=0
virtual void set_mode(const Mode &mode_arg)=0
virtual void load_private_key(const std::string &key_txt)=0
virtual std::string extract_private_key() const =0
virtual void set_remote_cert_tls(const KUParse::TLSWebType wt)=0
virtual PKType::Type private_key_type() const =0
virtual const Mode & get_mode() const =0
virtual void set_sni_name(const std::string &sni_name_arg)=0
RCPtr< SSLConfigAPI > Ptr
virtual void set_x509_track(X509Track::ConfigSet x509_track_config_arg)=0
virtual std::string extract_crl() const =0
virtual void set_frame(const Frame::Ptr &frame_arg)=0
@ LF_ALLOW_CLIENT_CERT_NOT_REQUIRED
virtual void set_cn_reject_handler(CommonNameReject *cn_reject_handler_arg)=0
std::string private_key_type_string() const
virtual void set_rng(const StrongRandomAPI::Ptr &rng_arg)=0
virtual void set_tls_version_max(const TLSVersion::Type tvm)=0
virtual void load_cert(const std::string &cert_txt)=0
virtual void load_ca(const std::string &ca_txt, bool strict)=0
virtual void set_session_ticket_handler(TLSSessionTicketBase *session_ticket_handler)=0
virtual void set_tls_version_min(const TLSVersion::Type tvm)=0
virtual void load_cert(const std::string &cert_txt, const std::string &extra_certs_txt)=0
virtual void set_local_cert_enabled(const bool v)=0
virtual void enable_legacy_algorithms(const bool v)=0
virtual void set_tls_cert_profile(const TLSCertProfile::Type type)=0
virtual std::string validate_private_key(const std::string &key_txt) const =0
virtual void set_external_pki_callback(ExternalPKIBase *external_pki_arg, const std::string &alias)=0
virtual std::string extract_ca() const =0
virtual void set_private_key_password(const std::string &pwd)=0
virtual SSLFactoryAPI::Ptr new_factory()=0
virtual void load_crl(const std::string &crl_txt)=0
virtual void set_client_session_tickets(const bool v)=0
virtual void set_flags(const unsigned int flags_arg)=0
virtual void set_debug_level(const int debug_level)=0
virtual void load(const OptionList &opt, const unsigned int lflags)=0
virtual std::string validate_cert_list(const std::string &certs_txt) const =0
virtual std::vector< std::string > extract_extra_certs() const =0
virtual void set_tls_version_min_override(const std::string &override)=0
virtual void set_tls_cert_profile_override(const std::string &override)=0
virtual std::string validate_crl(const std::string &crl_txt) const =0
virtual std::string extract_cert() const =0
virtual void set_ns_cert_type(const NSCert::Type ns_cert_type_arg)=0
virtual void set_sni_handler(SNI::HandlerBase *sni_handler)=0
virtual SSLLib::Ctx libctx()=0
OPENVPN_EXCEPTION(ssl_external_pki)
virtual const Mode & mode() const =0
virtual SSLAPI::Ptr ssl(const std::string *hostname, const std::string *cache_key)=0
OPENVPN_EXCEPTION(ssl_options_error)
virtual SSLAPI::Ptr ssl()=0
OPENVPN_EXCEPTION(ssl_context_error)
RCPtr< SSLFactoryAPI > Ptr
OPENVPN_SIMPLE_EXCEPTION(ssl_ciphertext_in_overflow)
Support deferred server-side state creation when client connects.
SSLFactoryAPI::ssl_external_pki ssl_external_pki
const std::string get_ssl_library_version()
Implementation of the base classes for random number generators.
const std::string cert_txt