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 )