UID2-Client-XS
view release on metacpan or search on metacpan
ext/uid2-client-cpp11/lib/external/httplib.h view on Meta::CPAN
std::unique_ptr<ClientImpl> cli_;
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
bool is_ssl_ = false;
#endif
};
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
class SSLServer : public Server {
public:
SSLServer(const char* cert_path, const char* private_key_path,
const char* client_ca_cert_file_path = nullptr,
const char* client_ca_cert_dir_path = nullptr);
SSLServer(X509* cert, EVP_PKEY* private_key,
X509_STORE* client_ca_cert_store = nullptr);
~SSLServer() override;
bool is_valid() const override;
private:
bool process_and_close_socket(socket_t sock) override;
SSL_CTX* ctx_;
ext/uid2-client-cpp11/lib/external/httplib.h view on Meta::CPAN
detail::get_remote_ip_and_port(sock_, ip, port);
}
inline socket_t SSLSocketStream::socket() const { return sock_; }
static SSLInit sslinit_;
} // namespace detail
// SSL HTTP server implementation
inline SSLServer::SSLServer(const char* cert_path, const char* private_key_path,
const char* client_ca_cert_file_path,
const char* client_ca_cert_dir_path) {
ctx_ = SSL_CTX_new(SSLv23_server_method());
if (ctx_) {
SSL_CTX_set_options(ctx_,
SSL_OP_ALL | SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 |
SSL_OP_NO_COMPRESSION |
SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION);
// auto ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
// SSL_CTX_set_tmp_ecdh(ctx_, ecdh);
// EC_KEY_free(ecdh);
if (SSL_CTX_use_certificate_chain_file(ctx_, cert_path) != 1 ||
SSL_CTX_use_PrivateKey_file(ctx_, private_key_path, SSL_FILETYPE_PEM) !=
1) {
SSL_CTX_free(ctx_);
ctx_ = nullptr;
}
else if (client_ca_cert_file_path || client_ca_cert_dir_path) {
// if (client_ca_cert_file_path) {
// auto list = SSL_load_client_CA_file(client_ca_cert_file_path);
// SSL_CTX_set_client_CA_list(ctx_, list);
// }
ext/uid2-client-cpp11/lib/external/httplib.h view on Meta::CPAN
SSL_CTX_set_verify(
ctx_,
SSL_VERIFY_PEER |
SSL_VERIFY_FAIL_IF_NO_PEER_CERT, // SSL_VERIFY_CLIENT_ONCE,
nullptr);
}
}
}
inline SSLServer::SSLServer(X509* cert, EVP_PKEY* private_key,
X509_STORE* client_ca_cert_store) {
ctx_ = SSL_CTX_new(SSLv23_server_method());
if (ctx_) {
SSL_CTX_set_options(ctx_,
SSL_OP_ALL | SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 |
SSL_OP_NO_COMPRESSION |
SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION);
if (SSL_CTX_use_certificate(ctx_, cert) != 1 ||
SSL_CTX_use_PrivateKey(ctx_, private_key) != 1) {
SSL_CTX_free(ctx_);
ctx_ = nullptr;
}
else if (client_ca_cert_store) {
SSL_CTX_set_cert_store(ctx_, client_ca_cert_store);
SSL_CTX_set_verify(
ctx_,
SSL_VERIFY_PEER |
( run in 1.128 second using v1.01-cache-2.11-cpan-a5abf4f5562 )