UID2-Client-XS

 view release on metacpan or  search on metacpan

ext/uid2-client-cpp11/lib/external/httplib.h  view on Meta::CPAN

        void set_default_headers(Headers headers);

        void set_tcp_nodelay(bool on);
        void set_socket_options(SocketOptions socket_options);

        void set_connection_timeout(time_t sec, time_t usec = 0);
        void set_read_timeout(time_t sec, time_t usec = 0);
        void set_write_timeout(time_t sec, time_t usec = 0);

        void set_basic_auth(const char* username, const char* password);
        void set_bearer_token_auth(const char* token);
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
        void set_digest_auth(const char* username, const char* password);
#endif

        void set_keep_alive(bool on);
        void set_follow_location(bool on);

        void set_compress(bool on);

        void set_decompress(bool on);

        void set_interface(const char* intf);

        void set_proxy(const char* host, int port);
        void set_proxy_basic_auth(const char* username, const char* password);
        void set_proxy_bearer_token_auth(const char* token);
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
        void set_proxy_digest_auth(const char* username, const char* password);
#endif

#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
        void enable_server_certificate_verification(bool enabled);
#endif

        void set_logger(Logger logger);

        // SSL
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
        void set_ca_cert_path(const char* ca_cert_file_path,
            const char* ca_cert_dir_path = nullptr);

        void set_ca_cert_store(X509_STORE* ca_cert_store);

        long get_openssl_verify_result() const;

        SSL_CTX* ssl_context() const;
#endif

    private:
        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_;
        std::mutex ctx_mutex_;
    };

    class SSLClient : public ClientImpl {
    public:
        explicit SSLClient(const std::string& host);

        explicit SSLClient(const std::string& host, int port);

        explicit SSLClient(const std::string& host, int port,
            const std::string& client_cert_path,
            const std::string& client_key_path);

        explicit SSLClient(const std::string& host, int port, X509* client_cert,
            EVP_PKEY* client_key);

        ~SSLClient() override;

        bool is_valid() const override;

        void set_ca_cert_path(const char* ca_cert_file_path,
            const char* ca_cert_dir_path = nullptr);

        void set_ca_cert_store(X509_STORE* ca_cert_store);

        long get_openssl_verify_result() const;

        SSL_CTX* ssl_context() const;

    private:
        bool create_and_connect_socket(Socket& socket, Error& error) override;
        void shutdown_ssl(Socket& socket, bool shutdown_gracefully) override;

        bool process_socket(const Socket& socket,
            std::function<bool(Stream& strm)> callback) override;
        bool is_ssl() const override;

        bool connect_with_proxy(Socket& sock, Response& res, bool& success,
            Error& error);
        bool initialize_ssl(Socket& socket, Error& error);

        bool load_certs();

        bool verify_host(X509* server_cert) const;
        bool verify_host_with_subject_alt_name(X509* server_cert) const;
        bool verify_host_with_common_name(X509* server_cert) const;
        bool check_host_name(const char* pattern, size_t pattern_len) const;

        SSL_CTX* ctx_;
        std::mutex ctx_mutex_;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.594 second using v1.00-cache-2.02-grep-82fe00e-cpan-f73e49a70403 )