17#ifndef Foundation_MemoryStream_INCLUDED
18#define Foundation_MemoryStream_INCLUDED
21#include "Poco/Bugcheck.h"
22#include "Poco/Foundation.h"
23#include "Poco/StreamUtil.h"
34template <
typename ch,
typename tr>
45 typedef std::basic_streambuf<ch, tr>
Base;
83 if (
this->
gptr() == 0)
113 if (
this->
pptr() == 0)
151 return static_cast<
std::streamsize>(
this->pptr() -
this->pbase());
#define poco_check_ptr(ptr)
#define poco_unexpected()
#define poco_assert(cond)
#define poco_assert_dbg(cond)
#define POCO_EXTERNAL_OPENSSL
#define POCO_THREAD_STACK_SIZE
#define POCO_DECLARE_EXCEPTION(API, CLS, BASE)
#define POCO_DECLARE_EXCEPTION_CODE(API, CLS, BASE, CODE)
#define POCO_DO_JOIN2(X, Y)
#define POCO_DO_JOIN(X, Y)
Net_API Poco::BinaryReader & operator>>(Poco::BinaryReader &reader, Poco::Net::IPAddress &value)
#define OPENSSL_VERSION_PREREQ(maj, min)
RSAPaddingMode
The padding mode used for RSA public key encryption.
@ RSA_PADDING_PKCS1_OAEP
PKCS #1 v1.5 padding. This currently is the most widely used mode.
#define POCO_EXTERNAL_OPENSSL_SLPRO
Net_API Poco::BinaryReader & operator>>(Poco::BinaryReader &reader, Poco::Net::SocketAddress &value)
void ASN1_STRING_clear_free(ASN1_STRING *a)
#define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name)
int UTF8_getc(const unsigned char *str, int len, unsigned long *val)
ASN1_INTEGER * BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai)
#define ASN1_STRFLGS_ESC_QUOTE
void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags)
ASN1_TYPE * ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t)
int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str)
int ASN1_STRING_set_default_mask_asc(const char *p)
ASN1_STRING * ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in, int inlen, int inform, int nid)
const ASN1_ITEM * ASN1_ITEM_lookup(const char *name)
int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, int ctype_nid, int econt_nid, STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it)
#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname)
#define B_ASN1_PRINTABLESTRING
#define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name)
#define B_ASN1_NUMERICSTRING
ASN1_GENERALIZEDTIME * ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, time_t t, int offset_day, long offset_sec)
#define ASN1_STRFLGS_UTF8_CONVERT
int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v)
void ASN1_PCTX_free(ASN1_PCTX *p)
void ASN1_STRING_length_set(ASN1_STRING *x, int n)
unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p)
const ASN1_ITEM * ASN1_SCTX_get_item(ASN1_SCTX *p)
int ASN1_TIME_set_string(ASN1_TIME *s, const char *str)
#define DECLARE_ASN1_FUNCTIONS_name(type, name)
int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, int inform, unsigned long mask)
#define DECLARE_ASN1_PRINT_FUNCTION(stname)
int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num)
int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b)
ASN1_ENUMERATED * BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai)
int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a)
int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags)
#define ASN1_STRFLGS_ESC_CTRL
#define TYPEDEF_D2I2D_OF(type)
ASN1_VALUE * ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, long len, const ASN1_ITEM *it)
int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
#define B_ASN1_UTF8STRING
void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags)
int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, const char *hdr, const ASN1_ITEM *it)
long ASN1_INTEGER_get(const ASN1_INTEGER *a)
int ASN1_TIME_normalize(ASN1_TIME *s)
unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p)
#define TYPEDEF_I2D_OF(type)
int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a)
BIO * BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it)
#define DECLARE_ASN1_NDEF_FUNCTION(name)
int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
#define ASN1_STRFLGS_ESC_MSB
int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a)
ASN1_TIME * ASN1_TIME_adj(ASN1_TIME *s, time_t t, int offset_day, long offset_sec)
int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in)
int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long)
int ASN1_check_infinite_end(unsigned char **p, long len)
int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s)
int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t)
int ASN1_INTEGER_set(ASN1_INTEGER *a, long v)
int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a)
#define ASN1_i2d_bio_of_const(type, i2d, out, x)
void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data)
int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, const unsigned char *flags, int flags_len)
int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a)
int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len)
unsigned long ASN1_tag2bit(int tag)
int UTF8_putc(unsigned char *str, int len, unsigned long value)
ASN1_SCTX * ASN1_SCTX_new(int(*scan_cb)(ASN1_SCTX *ctx))
int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
int ASN1_TIME_check(const ASN1_TIME *t)
void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags)
int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str)
int ASN1_UTCTIME_check(const ASN1_UTCTIME *a)
void ASN1_STRING_TABLE_cleanup(void)
int ASN1_object_size(int constructed, int length, int tag)
int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n)
int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off)
struct ASN1_TEMPLATE_st ASN1_TEMPLATE
ASN1_UTCTIME * ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v)
#define ASN1_ITEM_rptr(ref)
int ASN1_TIME_diff(int *pday, int *psec, const ASN1_TIME *from, const ASN1_TIME *to)
struct ASN1_TLC_st ASN1_TLC
BIGNUM * ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn)
void * ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x)
#define V_ASN1_PRIMITIVE_TAG
#define ASN1_d2i_bio_of(type, xnew, d2i, in, x)
#define CHECKED_D2I_OF(type, d2i)
ASN1_GENERALIZEDTIME * ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, time_t t)
BIGNUM * ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn)
int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data, int len)
ASN1_TYPE * ASN1_generate_v3(const char *str, X509V3_CTX *cnf)
int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value)
#define CHECKED_NEW_OF(type, xnew)
#define DECLARE_ASN1_FUNCTIONS(type)
#define ASN1_STRFLGS_DUMP_UNKNOWN
ASN1_VALUE * SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it)
void ASN1_put_object(unsigned char **pp, int constructed, int length, int tag, int xclass)
int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a)
void * ASN1_SCTX_get_app_data(ASN1_SCTX *p)
int ASN1_STRING_type(const ASN1_STRING *x)
int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r)
#define CHECKED_I2D_OF(type, i2d)
#define ASN1_dup_of(type, i2d, d2i, x)
int ASN1_str2mask(const char *str, unsigned long *pmask)
int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it)
int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm)
ASN1_VALUE * ASN1_item_new(const ASN1_ITEM *it)
int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, int dump)
void * ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x)
int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a)
ASN1_GENERALIZEDTIME * ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, ASN1_GENERALIZEDTIME **out)
ASN1_OBJECT * d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, long length)
void * ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it)
const char * ASN1_tag2str(int tag)
#define B_ASN1_BIT_STRING
int SMIME_crlf_copy(BIO *in, BIO *out, int flags)
int ASN1_put_eoc(unsigned char **pp)
ASN1_STRING * ASN1_STRING_type_new(int type)
void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value)
void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags)
int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, const ASN1_OCTET_STRING *b)
unsigned long ASN1_STRING_get_default_mask(void)
int ASN1_PRINTABLE_type(const unsigned char *s, int max)
#define ASN1_STRFLGS_RFC2253
ASN1_OCTET_STRING * ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a)
void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it)
int ASN1_const_check_infinite_end(const unsigned char **p, long len)
unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p)
int SMIME_text(BIO *in, BIO *out)
void ASN1_add_oid_module(void)
ASN1_INTEGER * d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, long length)
int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a)
void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags)
int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r)
#define TYPEDEF_D2I_OF(type)
int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x)
int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, BIT_STRING_BITNAME *tbl)
int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl)
int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a)
struct ASN1_VALUE_st ASN1_VALUE
void ASN1_SCTX_free(ASN1_SCTX *p)
void * ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x)
#define CHECKED_PTR_OF(type, p)
int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y)
int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, int *pclass, long omax)
int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x)
int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)
int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r)
int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x)
void ASN1_STRING_free(ASN1_STRING *a)
void * ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x)
ASN1_TYPE * ASN1_generate_nconf(const char *str, CONF *nconf)
unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p)
int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp)
int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a)
#define B_ASN1_UNIVERSALSTRING
ASN1_OBJECT * ASN1_OBJECT_new(void)
int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type)
int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a)
#define CHECKED_PPTR_OF(type, p)
int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len)
ASN1_STRING * ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct)
int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, BIT_STRING_BITNAME *tbl, int indent)
void * ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x)
ASN1_UTCTIME * ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, int offset_day, long offset_sec)
#define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
ASN1_STRING * ASN1_STRING_dup(const ASN1_STRING *a)
const unsigned char * ASN1_STRING_get0_data(const ASN1_STRING *x)
ASN1_INTEGER * ASN1_INTEGER_dup(const ASN1_INTEGER *x)
int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, int len)
ASN1_PCTX * ASN1_PCTX_new(void)
int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x)
unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p)
const ASN1_ITEM * ASN1_ITEM_get(size_t i)
unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p)
int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length)
void ASN1_OBJECT_free(ASN1_OBJECT *a)
int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str)
#define ASN1_STRFLGS_ESC_2253
ASN1_STRING * ASN1_STRING_new(void)
#define B_ASN1_VISIBLESTRING
int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, const ASN1_ITEM *it)
#define DECLARE_ASN1_ALLOC_FUNCTIONS(type)
int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it)
#define B_ASN1_TELETEXSTRING
void ASN1_add_stable_module(void)
void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len)
#define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name)
int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, unsigned char *buf, int off)
int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent)
#define DECLARE_ASN1_ITEM(name)
int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, int inform, unsigned long mask, long minsize, long maxsize)
#define ASN1_i2d_bio_of(type, i2d, out, x)
int ASN1_STRING_length(const ASN1_STRING *x)
int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, const ASN1_ITEM *it, const ASN1_PCTX *pctx)
void * ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t)
ASN1_OBJECT * ASN1_OBJECT_create(int nid, unsigned char *data, int len, const char *sn, const char *ln)
int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len)
#define ASN1_STRFLGS_DUMP_DER
void ASN1_STRING_set_default_mask(unsigned long mask)
const ASN1_TEMPLATE * ASN1_SCTX_get_template(ASN1_SCTX *p)
#define B_ASN1_GENERALIZEDTIME
#define STABLE_FLAGS_MALLOC
void * ASN1_item_dup(const ASN1_ITEM *it, void *x)
ASN1_STRING_TABLE * ASN1_STRING_TABLE_get(int nid)
int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b)
int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str)
const BIO_METHOD * BIO_f_asn1(void)
int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t)
int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags)
long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a)
int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value)
int ERR_load_ASN1_strings(void)
int ASYNC_init_thread(size_t max_size, size_t init_size)
ASYNC_WAIT_CTX * ASYNC_get_wait_ctx(ASYNC_JOB *job)
struct async_wait_ctx_st ASYNC_WAIT_CTX
void ASYNC_block_pause(void)
int ASYNC_is_capable(void)
void ASYNC_unblock_pause(void)
void ASYNC_cleanup_thread(void)
struct async_job_st ASYNC_JOB
ASYNC_JOB * ASYNC_get_current_job(void)
int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, int(*func)(void *), void *args, size_t size)
int ASYNC_pause_job(void)
int ERR_load_ASYNC_strings(void)
#define BIO_C_SET_WRITE_BUF_SIZE
#define BIO_C_GET_READ_REQUEST
int(*)(BIO *, char *, size_t, size_t *) BIO_meth_get_read_ex(const BIO_METHOD *biom)
#define BIO_C_GET_CIPHER_STATUS
#define BIO_C_MAKE_BIO_PAIR
#define BIO_C_SET_BUFF_SIZE
#define BIO_C_SET_BUFF_READ_DATA
int(*)(BIO *, char *, int) BIO_meth_get_read(const BIO_METHOD *biom)
#define BIO_TYPE_DESCRIPTOR
#define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT
#define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD
#define BIO_TYPE_SOURCE_SINK
#define BIO_C_DO_STATE_MACHINE
#define BIO_C_GET_WRITE_BUF_SIZE
#define BIO_CTRL_SET_CLOSE
#define BIO_C_SET_CONNECT_MODE
int(*)(BIO *, const char *) BIO_meth_get_puts(const BIO_METHOD *biom)
#define BIO_FLAGS_IO_SPECIAL
int(*)(BIO *) BIO_meth_get_destroy(const BIO_METHOD *biom)
#define BIO_CTRL_WPENDING
int(*)(BIO *) BIO_meth_get_create(const BIO_METHOD *bion)
#define BIO_CTRL_SET_CALLBACK
#define BIO_C_SET_CONNECT
#define BIO_C_GET_WRITE_GUARANTEE
#define BIO_do_handshake(b)
#define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP
#define BIO_C_SET_BIND_MODE
#define BIO_C_GET_BIND_MODE
#define ossl_bio__attr__(x)
#define BIO_C_GET_SSL_NUM_RENEGOTIATES
#define BIO_C_GET_BUF_MEM_PTR
#define BIO_C_SET_FILE_PTR
#define BIO_CTRL_DGRAM_SET_PEER
#define BIO_C_GET_CONNECT
#define BIO_C_DESTROY_BIO_PAIR
#define BIO_SOCK_REUSEADDR
#define BIO_C_SET_SSL_RENEGOTIATE_BYTES
#define BIO_C_GET_BUFF_NUM_LINES
#define BIO_CTRL_DGRAM_GET_PEER
#define BIO_CTRL_GET_CLOSE
#define BIO_C_SET_BUF_MEM_EOF_RETURN
#define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP
#define BIO_C_SHUTDOWN_WR
#define BIO_C_SET_FILENAME
#define BIO_CTRL_DGRAM_CONNECT
#define BIO_CTRL_DGRAM_SET_CONNECTED
#define BIO_C_GET_CIPHER_CTX
#define BIO_C_GET_FILE_PTR
int(*)(BIO *, char *, int) BIO_meth_get_gets(const BIO_METHOD *biom)
#define BIO_C_SET_BUF_MEM
#define BIO_FLAGS_SHOULD_RETRY
long(*)(BIO *, int, BIO_info_cb *) BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)
#define BIO_CTRL_GET_CALLBACK
int ERR_load_BIO_strings(void)
void BN_GENCB_set(BN_GENCB *gencb, int(*callback)(int, int, BN_GENCB *), void *cb_arg)
int BN_GENCB_call(BN_GENCB *cb, int a, int b)
BN_GENCB * BN_GENCB_new(void)
int BN_get_flags(const BIGNUM *b, int n)
void BN_set_flags(BIGNUM *b, int n)
void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags)
void * BN_GENCB_get_arg(BN_GENCB *cb)
void BN_GENCB_free(BN_GENCB *cb)
void BN_GENCB_set_old(BN_GENCB *gencb, void(*callback)(int, int, void *), void *cb_arg)
int ERR_load_BN_strings(void)
int ERR_load_BUF_strings(void)
virtual std::unique_ptr< ArkApi::ICommands > & GetCommands()=0
void WriteRequest(std::function< void(bool, std::string)> callback, bool success, std::string result)
std::string GetResponse(Poco::Net::HTTPClientSession *session, Poco::Net::HTTPResponse &response)
Poco::Net::HTTPRequest ConstructRequest(const std::string &url, Poco::Net::HTTPClientSession *&session, const std::vector< std::string > &headers, const std::string &request_type)
std::vector< RequestData > RequestsVec_
Requests(Requests &&)=delete
ARK_API bool CreateGetRequest(const std::string &url, const std::function< void(bool, std::string)> &callback, std::vector< std::string > headers={})
Creates an async GET Request that runs in another thread but calls the callback from the main thread.
ARK_API bool CreatePostRequest(const std::string &url, const std::function< void(bool, std::string)> &callback, const std::vector< std::string > &post_ids, const std::vector< std::string > &post_data, std::vector< std::string > headers={})
Creates an async POST Request that runs in another thread but calls the callback from the main thread...
Requests & operator=(Requests &&)=delete
ARK_API bool CreateDeleteRequest(const std::string &url, const std::function< void(bool, std::string)> &callback, std::vector< std::string > headers={})
Creates an async DELETE Request that runs in another thread but calls the callback from the main thre...
Requests & operator=(const Requests &)=delete
ARK_API bool CreatePostRequest(const std::string &url, const std::function< void(bool, std::string)> &callback, const std::string &post_data, std::vector< std::string > headers={})
Creates an async POST Request with application/x-www-form-urlencoded content type that runs in anothe...
static ARK_API Requests & Get()
ARK_API bool CreatePostRequest(const std::string &url, const std::function< void(bool, std::string)> &callback, const std::string &post_data, const std::string &content_type, std::vector< std::string > headers={})
Creates an async POST Request that runs in another thread but calls the callback from the main thread...
std::unique_ptr< impl > pimpl
Requests(const Requests &)=delete
virtual void AddOnTickCallback(const FString &id, const std::function< void(float)> &callback)=0
Added function will be called every frame.
virtual bool RemoveOnTickCallback(const FString &id)=0
Removes a on-tick callback.
static std::shared_ptr< spdlog::logger > & GetLog()
virtual void disable()=0
Returns a deep copy of the AbstractDelegate.
AbstractDelegate(const AbstractDelegate &)
virtual ~AbstractDelegate()
virtual const AbstractDelegate * unwrap() const
Disables the delegate, which is done prior to removal.
virtual AbstractDelegate * clone() const =0
Compares the AbstractDelegate with the other one for equality.
virtual bool notify(const void *sender)=0
virtual bool equals(const AbstractDelegate &other) const =0
Base class for Delegate and Expire.
virtual AbstractDelegate * clone() const =0
Compares the AbstractDelegate with the other one for equality.
AbstractDelegate(const AbstractDelegate &)
virtual bool equals(const AbstractDelegate &other) const =0
virtual void disable()=0
Returns a deep copy of the AbstractDelegate.
virtual ~AbstractDelegate()
virtual bool notify(const void *sender, TArgs &arguments)=0
virtual const AbstractDelegate * unwrap() const
Disables the delegate, which is done prior to removal.
void operator-=(const TDelegate &aDelegate)
void executeAsyncImpl(const NotifyAsyncParams &par)
bool empty() const
Checks if any delegates are registered at the delegate.
void notify(const void *pSender)
void operator+=(const TDelegate &aDelegate)
void clear()
Removes all delegates.
AbstractEvent(const TStrategy &strat)
bool _enabled
The strategy used to notify observers.
DelegateHandle add(const TDelegate &aDelegate)
ActiveResult< void > notifyAsync(const void *pSender)
AbstractEvent & operator=(const AbstractEvent &other)
AbstractEvent(const AbstractEvent &other)
void remove(DelegateHandle delegateHandle)
TDelegate * DelegateHandle
void operator()()
Shortcut for notify(args).
void operator()(const void *pSender)
Shortcut for notify(pSender, args);.
void enable()
Enables the event.
ActiveMethod< void, NotifyAsyncParams, AbstractEvent > _executeAsync
void clear()
Removes all delegates.
void notify(const void *pSender, TArgs &args)
AbstractEvent & operator=(const AbstractEvent &other)
void remove(DelegateHandle delegateHandle)
void operator+=(const TDelegate &aDelegate)
bool isEnabled() const
Returns true if event is enabled.
ActiveMethod< TArgs, NotifyAsyncParams, AbstractEvent > _executeAsync
ActiveResult< TArgs > notifyAsync(const void *pSender, const TArgs &args)
bool empty() const
Checks if any delegates are registered at the delegate.
AbstractEvent(const AbstractEvent &other)
void operator()(TArgs &args)
Shortcut for notify(args).
bool hasDelegates() const
Returns true if there are registered delegates.
bool _enabled
The strategy used to notify observers.
TDelegate * DelegateHandle
TArgs executeAsyncImpl(const NotifyAsyncParams &par)
DelegateHandle add(const TDelegate &aDelegate)
AbstractEvent(const TStrategy &strat)
void operator()(const void *pSender, TArgs &args)
Shortcut for notify(pSender, args);.
void operator-=(const TDelegate &aDelegate)
void enable()
Enables the event.
ActiveMethod & operator=(const ActiveMethod &other)
ActiveMethod(const ActiveMethod &other)
ActiveMethod(OwnerType *pOwner, Callback method)
ActiveRunnable< ResultType, void, OwnerType > ActiveRunnableType
void swap(ActiveMethod &other)
ActiveResult< ResultType > ActiveResultType
ActiveResultType operator()(void)
Invokes the ActiveMethod.
void swap(ActiveMethod &other)
ActiveMethod(OwnerType *pOwner, Callback method)
ActiveResultType operator()(const ArgType &arg)
Invokes the ActiveMethod.
ActiveRunnable< ResultType, ArgType, OwnerType > ActiveRunnableType
ActiveResult< ResultType > ActiveResultType
ActiveMethod(const ActiveMethod &other)
ActiveMethod & operator=(const ActiveMethod &other)
ActiveResultHolder< void > ActiveResultHolderType
void swap(ActiveResult &result)
bool available() const
Returns true if a result is available.
ActiveResult & operator=(const ActiveResult &result)
Assignment operator.
ActiveResult(const ActiveResult &result)
Copy constructor.
Exception * exception() const
void wait()
Pauses the caller until the result becomes available.
std::string error() const
ActiveResultHolderType * _pHolder
~ActiveResult()
Destroys the result.
ActiveResult(ActiveResultHolderType *pHolder)
bool tryWait(long milliseconds)
void error(const Exception &exc)
Sets the failed flag and the exception message.
void wait(long milliseconds)
void wait()
Pauses the caller until the result becomes available.
void notify()
Notifies the invoking thread that the result became available.
void error(const Exception &exc)
Sets the exception.
bool tryWait(long milliseconds)
std::string error() const
Exception * exception() const
void wait(long milliseconds)
bool tryWait(long milliseconds)
std::string error() const
void wait(long milliseconds)
void wait()
Pauses the caller until the result becomes available.
void notify()
Notifies the invoking thread that the result became available.
void error(const Exception &exc)
Sets the exception.
Exception * exception() const
ResultType & data()
Returns a reference to the actual result.
void data(ResultType *pData)
bool tryWait(long milliseconds)
bool available() const
Returns true if a result is available.
void data(ResultType *pValue)
Exception * exception() const
ActiveResult & operator=(const ActiveResult &result)
Assignment operator.
void swap(ActiveResult &result)
ResultType & data() const
Returns a reference to the result data.
void wait(long milliseconds)
ActiveResultHolderType * _pHolder
void error(const Exception &exc)
Sets the failed flag and the exception message.
~ActiveResult()
Destroys the result.
ActiveResultHolder< ResultType > ActiveResultHolderType
void wait()
Pauses the caller until the result becomes available.
ActiveResult(ActiveResultHolderType *pHolder)
std::string error() const
ActiveResult(const ActiveResult &result)
Copy constructor.
ActiveResult< ResultType > ActiveResultType
ActiveRunnable(OwnerType *pOwner, Callback method, const ActiveResultType &result)
ActiveResult< void > ActiveResultType
ActiveRunnable(OwnerType *pOwner, Callback method, const ArgType &arg, const ActiveResultType &result)
void(OwnerType::* Callback)(const ArgType &)
void(OwnerType::* Callback)()
ActiveRunnable(OwnerType *pOwner, Callback method, const ActiveResultType &result)
ActiveResult< void > ActiveResultType
The base class for all ActiveRunnable instantiations.
ActiveResult< ResultType > ActiveResultType
ActiveRunnable(OwnerType *pOwner, Callback method, const ArgType &arg, const ActiveResultType &result)
static void start(OwnerType *, ActiveRunnableBase::Ptr pRunnable)
friend ValueType & RefAnyCast(Any &)
friend const ValueType & RefAnyCast(const Any &)
friend ValueType * UnsafeAnyCast(Any *)
friend ValueType * AnyCast(Any *)
friend ValueType AnyCast(Any &)
static bool isAscii(int ch)
static bool isAlpha(int ch)
Returns true iff the given character is a punctuation character.
static const int CHARACTER_PROPERTIES[128]
static bool isPrintable(int ch)
static bool isUpper(int ch)
static int toUpper(int ch)
static int toLower(int ch)
Returns true iff the given character is printable.
static bool isHexDigit(int ch)
Returns true iff the given character is a digit.
static bool isLower(int ch)
Returns true iff the given character is an alphabetic character.
CharacterProperties
ASCII character properties.
static bool isPunct(int ch)
Returns true iff the given character is a hexadecimal digit.
static bool isAlphaNumeric(int ch)
Returns true iff the given character is an alphabetic character.
static bool hasProperties(int ch, int properties)
static int properties(int ch)
static bool isDigit(int ch)
Returns true iff the given character is a whitespace.
static bool hasSomeProperties(int ch, int properties)
static bool isSpace(int ch)
ValueType operator--()
Increments the counter and returns the previous value.
ValueType operator++()
Returns the value of the counter.
ValueType operator++(int)
Increments the counter and returns the result.
AtomicCounter(ValueType initialValue)
Creates a new AtomicCounter and initializes it to zero.
operator ValueType() const
Assigns a value to the counter.
ValueType operator--(int)
Decrements the counter and returns the result.
ValueType value() const
Converts the AtomicCounter to ValueType.
AtomicCounter & operator=(const AtomicCounter &counter)
Destroys the AtomicCounter.
AtomicCounter & operator=(ValueType value)
Assigns the value of another AtomicCounter.
AtomicCounter()
The underlying integer type.
bool operator!() const
Decrements the counter and returns the previous value.
AtomicCounter(const AtomicCounter &counter)
~AtomicCounter()
Creates the counter by copying another one.
std::atomic< int > _counter
Returns true if the counter is zero, false otherwise.
AutoPtr(C *ptr, bool shared)
const C & operator*() const
bool operator!=(C *ptr) const
bool operator!=(const AutoPtr &ptr) const
AutoPtr & operator=(const AutoPtr &ptr)
bool operator>=(const AutoPtr &ptr) const
bool operator<(C *ptr) const
AutoPtr & operator=(const AutoPtr< Other > &ptr)
bool operator>(const C *ptr) const
bool operator>(const AutoPtr &ptr) const
void reset(const AutoPtr &ptr)
bool operator!=(const C *ptr) const
bool operator<(const AutoPtr &ptr) const
bool operator>=(C *ptr) const
void reset(C *ptr, bool shared)
bool operator<=(const AutoPtr &ptr) const
AutoPtr & operator=(AutoPtr &&ptr) noexcept
AutoPtr & assign(const AutoPtr< Other > &ptr)
AutoPtr< Other > cast() const
AutoPtr & assign(const AutoPtr &ptr)
AutoPtr & operator=(C *ptr)
AutoPtr(const AutoPtr &ptr)
bool operator==(const AutoPtr &ptr) const
AutoPtr(AutoPtr &&ptr) noexcept
bool operator!=(std::nullptr_t ptr) const
bool operator==(C *ptr) const
bool operator<(const C *ptr) const
AutoPtr(const AutoPtr< Other > &ptr)
const C * operator->() const
void reset(const AutoPtr< Other > &ptr)
bool operator<=(C *ptr) const
AutoPtr & assign(C *ptr, bool shared)
AutoPtr< Other > unsafeCast() const
bool operator==(std::nullptr_t ptr) const
bool operator>(C *ptr) const
operator const C *() const
bool operator==(const C *ptr) const
bool operator>=(const C *ptr) const
bool operator<=(const C *ptr) const
BasicEvent & operator=(const BasicEvent &e)
BasicEvent(const BasicEvent &e)
BasicFIFOBuffer(const T *pBuffer, std::size_t size, bool notify=false)
bool isEOF() const
Returns true if EOF flag has been set and buffer is empty.
void drain(std::size_t length=0)
~BasicFIFOBuffer()
Destroys the FIFOBuffer.
bool isFull() const
Returns true is buffer is full, false otherwise.
Mutex & mutex()
Returns reference to mutex.
std::size_t read(T *pBuffer, std::size_t length)
void notify(std::size_t usedBefore)
bool isEmpty() const
Returns true is buffer is empty, false otherwise.
std::size_t peek(T *pBuffer, std::size_t length) const
bool getNotify() const
Returns true if notifications are enabled, false otherwise.
const Buffer< T > & buffer() const
Returns const reference to the underlying buffer.
Poco::BasicEvent< bool > readable
void advance(std::size_t length)
T * begin()
Returns the pointer to the beginning of the buffer.
std::size_t available() const
Returns the size of the available portion of the buffer.
std::size_t write(const T *pBuffer, std::size_t length)
std::size_t write(const Buffer< T > &buffer, std::size_t length=0)
const T & operator[](std::size_t index) const
void setEOF(bool eof=true)
BasicFIFOBuffer(std::size_t size, bool notify=false)
void setError(bool error=true)
void resize(std::size_t newSize, bool preserveContent=true)
void setNotify(bool notify=true)
Enables/disables notifications.
std::size_t used() const
Returns the size of the used portion of the buffer.
BasicFIFOBuffer(const BasicFIFOBuffer &)
BasicFIFOBuffer & operator=(const BasicFIFOBuffer &)
void copy(const T *ptr, std::size_t length)
Poco::BasicEvent< bool > writable
T & operator[](std::size_t index)
bool hasEOF() const
Returns true if EOF flag has been set.
T * next()
Returns the pointer to the next available position in the buffer.
std::size_t read(Poco::Buffer< T > &buffer, std::size_t length=0)
std::size_t size() const
Returns the size of the buffer.
std::size_t peek(Poco::Buffer< T > &buffer, std::size_t length=0) const
BasicFIFOBuffer(T *pBuffer, std::size_t size, bool notify=false)
A convenient wrapper for using Buffer and MemoryStream with BinaryReader.
const Buffer< T > & data() const
BasicMemoryBinaryReader(const Buffer< T > &data, TextEncoding &encoding, StreamByteOrder byteOrder=NATIVE_BYTE_ORDER)
~BasicMemoryBinaryReader()
MemoryInputStream & stream()
BasicMemoryBinaryReader(const Buffer< T > &data, StreamByteOrder byteOrder=NATIVE_BYTE_ORDER)
const MemoryInputStream & stream() const
const Buffer< T > & _data
std::streamsize charsWritten() const
std::basic_streambuf< ch, tr > Base
virtual pos_type seekoff(off_type off, std::ios_base::seekdir way, std::ios_base::openmode which=std::ios_base::in|std::ios_base::out)
std::basic_ios< ch, tr > IOS
virtual int_type overflow(int_type)
BasicMemoryStreamBuf & operator=(const BasicMemoryStreamBuf &)
std::streamsize _bufferSize
virtual int_type underflow()
BasicMemoryStreamBuf(char_type *pBuffer, std::streamsize bufferSize)
BasicMemoryStreamBuf(const BasicMemoryStreamBuf &)
BinaryReader & operator>>(float &value)
void readBOM()
Reads length bytes of raw data into buffer.
BinaryReader(std::istream &istr, TextEncoding &encoding, StreamByteOrder byteOrder=NATIVE_BYTE_ORDER)
Creates the BinaryReader.
TextConverter * _pTextConverter
BinaryReader & operator>>(unsigned short &value)
std::streamsize available() const
Sets the stream to throw exception on specified state (default failbit and badbit);.
BinaryReader & operator>>(unsigned long &value)
BinaryReader & operator>>(int &value)
BinaryReader & operator>>(signed char &value)
BinaryReader & operator>>(double &value)
BinaryReader(std::istream &istr, StreamByteOrder byteOrder=NATIVE_BYTE_ORDER)
bool bad()
Returns _istr.fail();.
bool fail()
Returns _istr.good();.
BinaryReader & operator>>(long &value)
std::istream & _istr
Returns the number of available bytes in the stream.
BinaryReader & operator>>(bool &value)
Destroys the BinaryReader.
BinaryReader & operator>>(unsigned int &value)
void readRaw(char *buffer, std::streamsize length)
Reads length bytes of raw data into value.
@ NETWORK_BYTE_ORDER
big-endian (network) byte-order
@ UNSPECIFIED_BYTE_ORDER
little-endian byte-order
@ BIG_ENDIAN_BYTE_ORDER
the host's native byte-order
@ LITTLE_ENDIAN_BYTE_ORDER
big-endian (network) byte-order
BinaryReader & operator>>(short &value)
StreamByteOrder byteOrder() const
Returns the underlying stream.
void setExceptions(std::ios_base::iostate st=(std::istream::failbit|std::istream::badbit))
BinaryReader & operator>>(char &value)
void read7BitEncoded(UInt32 &value)
BinaryReader & operator>>(unsigned char &value)
std::istream & stream() const
Returns _istr.eof();.
bool eof()
Returns _istr.bad();.
Buffer(const Buffer &other)
~Buffer()
Destroys the Buffer.
const T * begin() const
Returns a pointer to the beginning of the buffer.
Buffer(T *pMem, std::size_t length)
bool operator==(const Buffer &other) const
Compare operator.
std::size_t sizeBytes() const
Returns the used size of the buffer in bytes.
T & operator[](std::size_t index)
Buffer(const T *pMem, std::size_t length)
T * begin()
Returns a pointer to the beginning of the buffer.
Buffer & operator=(const Buffer &other)
Assignment operator.
std::size_t capacityBytes() const
Returns the allocated memory size in bytes.
std::size_t capacity() const
Returns the allocated memory size in elements.
void setCapacity(std::size_t newCapacity, bool preserveContent=true)
const T * end() const
Returns a pointer to the end of the buffer.
void assign(const T *buf, std::size_t sz)
Buffer(Buffer &&other) noexcept
bool operator!=(const Buffer &other) const
Compare operator.
void resize(std::size_t newCapacity, bool preserveContent=true)
const T & operator[](std::size_t index) const
void append(const T *buf, std::size_t sz)
Resizes this buffer and appends the argument buffer.
std::size_t size() const
Returns the used size of the buffer in elements.
void clear()
Sets the contents of the buffer to zero.
Buffer(std::size_t length)
bool empty() const
Return true if buffer is empty.
Buffer & operator=(Buffer &&other) noexcept
Move assignment operator.
void append(const Buffer &buf)
Resizes this buffer and appends the argument buffer.
void append(T val)
Resizes this buffer by one element and appends the argument value.
T * end()
Returns a pointer to end of the buffer.
void swap(Buffer &other)
Swaps the buffer with another one.
static std::string what(const char *msg, const char *file, int line, const char *text=0)
static void bugcheck(const char *msg, const char *file, int line)
static void nullPointer(const char *ptr, const char *file, int line)
static void debugger(const char *msg, const char *file, int line)
static void debugger(const char *file, int line)
static void bugcheck(const char *file, int line)
static void assertion(const char *cond, const char *file, int line, const char *text=0)
static void unexpected(const char *file, int line)
~EVPPKey()
Assignment move operator.
bool operator!=(const EVPPKey &other) const
void duplicate(EVP_PKEY *pEVPPKey)
static EVP_PKEY * duplicate(const EVP_PKEY *pFromKey, EVP_PKEY **pToKey)
Returns pointer to the OpenSSL EVP_PKEY structure.
void newECKey(const char *group)
EVPPKey(const char *ecCurveName)
EVPPKey & operator=(EVPPKey &&other) noexcept
Assignment operator.
void setKey(RSAKey *pKey)
EVPPKey(EVP_PKEY *pEVPPKey)
bool isSupported(int type) const
Retuns the EVPPKey type NID.
EVPPKey(const EVPPKey &other)
void setKey(EC_KEY *pKey)
EVPPKey()
Duplicates pFromKey into *pToKey and returns.
EVPPKey(EVPPKey &&other) noexcept
Copy constructor.
static int passCB(char *buf, int size, int, void *pass)
operator EVP_PKEY *()
Returns const pointer to the OpenSSL EVP_PKEY structure.
void *(* EVP_PKEY_get_Key_fn)(EVP_PKEY *)
static int type(const EVP_PKEY *pEVPPKey)
operator const EVP_PKEY *() const
Returns true if OpenSSL type is supported.
EVPPKey & operator=(const EVPPKey &other)
Move constructor.
bool operator==(const EVPPKey &other) const
Destroys the EVPPKey.
virtual ~KeyPair()
Move assignment.
const std::string & name() const
Returns the impl object.
KeyPairImpl::Ptr _pImpl
Returns key pair type.
Type type() const
Returns key pair name.
KeyPair & operator=(const KeyPair &other)
Move constructor.
KeyPair(KeyPair &&other) noexcept
Copy constructor.
KeyPairImpl::Ptr impl() const
KeyPair(KeyPairImpl::Ptr pKeyPairImpl=0)
KeyPair(const KeyPair &other)
Extracts the RSA public key from the given certificate.
KeyPair & operator=(KeyPair &&other) noexcept
Assignment.
virtual int size() const
Destroys the KeyPair.
const std::string & name() const
virtual int size() const =0
Destroys the KeyPairImpl.
OpenSSLInitializer _openSSLInitializer
virtual ~KeyPairImpl()
Create KeyPairImpl with specified type and name.
KeyPairImpl()
Returns key pair type.
Type type() const
Returns key pair name.
const char * name() const noexcept
OpenSSLException(const OpenSSLException &exc)
const char * className() const noexcept
OpenSSLException(int code=0)
Poco::Exception * clone() const
~OpenSSLException() noexcept
OpenSSLException & operator=(const OpenSSLException &exc)
static struct CRYPTO_dynlock_value * dynlockCreate(const char *file, int line)
static void uninitialize()
Initializes the OpenSSL machinery.
static void initialize()
Automatically shut down OpenSSL on exit.
~OpenSSLInitializer()
Automatically initialize OpenSSL on startup.
static void lock(int mode, int n, const char *file, int line)
static unsigned long id()
static Poco::AtomicCounter _rc
static void enableFIPSMode(bool enabled)
static Poco::FastMutex * _mutexes
static void dynlock(int mode, struct CRYPTO_dynlock_value *lock, const char *file, int line)
static bool isFIPSEnabled()
Shuts down the OpenSSL machinery.
static void dynlockDestroy(struct CRYPTO_dynlock_value *lock, const char *file, int line)
RSAKey(KeyLength keyLength, Exponent exp)
Extracts the RSA private key from the given certificate.
RSAKeyImpl::ByteVec modulus() const
Move assignment.
RSAKeyImpl::ByteVec encryptionExponent() const
Returns the RSA modulus.
RSAKey(const PKCS12Container &cert)
Extracts the RSA public key from the given certificate.
RSAKey(const X509Certificate &cert)
Constructs ECKeyImpl by extracting the EC key.
RSAKey(RSAKey &&other) noexcept
Copy constructor.
RSAKey(const EVPPKey &key)
RSAKeyImpl::Ptr impl() const
Returns the RSA decryption exponent.
RSAKey & operator=(RSAKey &&other) noexcept
Assignment.
RSAKey & operator=(const RSAKey &other)
Destroys the RSAKey.
RSAKey(const RSAKey &other)
~RSAKey()
Move constructor.
RSAKeyImpl::ByteVec decryptionExponent() const
Returns the RSA encryption exponent.
int size() const
Returns the OpenSSL RSA object.
RSAKeyImpl(const PKCS12Container &cert)
Extracts the RSA public key from the given certificate.
RSAKeyImpl(const EVPPKey &key)
RSAKeyImpl(int keyLength, unsigned long exponent)
Extracts the EC private key from the given certificate.
ByteVec decryptionExponent() const
Returns the RSA encryption exponent.
ByteVec encryptionExponent() const
Returns the RSA modulus.
RSA * getRSA()
Destroys the RSAKeyImpl.
static ByteVec convertToByteVec(const BIGNUM *bn)
const RSA * getRSA() const
Returns the OpenSSL RSA object.
ByteVec modulus() const
Returns the RSA modulus size.
RSAKeyImpl(const X509Certificate &cert)
Constructs ECKeyImpl by extracting the EC key.
This class represents a X509 Certificate.
void swap(X509Certificate &cert)
Move assignment.
std::string subjectName(NID nid) const
Returns the certificate subject's distinguished name.
bool equals(const X509Certificate &otherCertificate) const
const X509 * certificate() const
Poco::DateTime expiresOn() const
Returns the date and time the certificate is valid from.
X509Certificate(X509 *pCert, bool shared)
@ NID_PKCS9_EMAIL_ADDRESS
@ NID_ORGANIZATION_UNIT_NAME
std::string issuerName(NID nid) const
Returns the certificate issuer's distinguished name.
const std::string & subjectName() const
X509Certificate(const X509Certificate &cert)
const std::string & serialNumber() const
Returns the version of the certificate.
X509Certificate & operator=(const X509Certificate &cert)
Creates the certificate by moving another one.
X509 * dup() const
Returns the underlying OpenSSL certificate.
~X509Certificate()
Exchanges the certificate with another one.
bool issuedBy(const X509Certificate &issuerCertificate) const
const std::string & issuerName() const
X509Certificate(X509 *pCert)
long version() const
Destroys the X509Certificate.
X509Certificate(X509Certificate &&cert) noexcept
Creates the certificate by copying another one.
void load(std::istream &stream)
Writes the list of certificates to the specified PEM file.
std::string signatureAlgorithm() const
void print(std::ostream &out) const
Returns the certificate signature algorithm long name.
Poco::DateTime validFrom() const
X509Certificate(std::istream &istr)
std::string commonName() const
void save(std::ostream &stream) const
OpenSSLInitializer _openSSLInitializer
std::string _serialNumber
X509Certificate & operator=(X509Certificate &&cert) noexcept
Assigns a certificate.
void swap(DateTime &dateTime)
bool operator<=(const DateTime &dateTime) const
DateTime & operator-=(const Timespan &span)
int millisecond() const
Returns the second (0 to 59).
static bool isValid(int year, int month, int day, int hour=0, int minute=0, int second=0, int millisecond=0, int microsecond=0)
bool operator!=(const DateTime &dateTime) const
static bool isLeapYear(int year)
Converts a UTC time into a local time, by applying the given time zone differential.
void makeUTC(int tzd)
Converts DateTime to tm struct.
DateTime(double julianDay)
int microsecond() const
Returns the millisecond (0 to 999)
Timestamp::UtcTimeVal utcTime() const
Returns the date and time expressed as a Timestamp.
Months
Symbolic names for month numbers (1 to 12).
bool operator<(const DateTime &dateTime) const
DateTime & operator=(double julianDay)
Assigns a Timestamp.
bool operator>(const DateTime &dateTime) const
bool operator>=(const DateTime &dateTime) const
bool isPM() const
Returns true if hour < 12;.
int hourAMPM() const
Returns the hour (0 to 23).
double julianDay() const
Returns the microsecond (0 to 999)
static double toJulianDay(int year, int month, int day, int hour=0, int minute=0, int second=0, int millisecond=0, int microsecond=0)
Computes the Julian day for an UTC time.
DaysOfWeek
Symbolic names for week day numbers (0 to 6).
DateTime & operator=(const DateTime &dateTime)
Destroys the DateTime.
void makeLocal(int tzd)
Converts a local time into UTC, by applying the given time zone differential.
DateTime(const Timestamp ×tamp)
Creates a DateTime from tm struct.
static double toJulianDay(Timestamp::UtcTimeVal utcTime)
Timespan operator-(const DateTime &dateTime) const
DateTime operator-(const Timespan &span) const
DateTime & operator+=(const Timespan &span)
static Timestamp::UtcTimeVal toUtcTime(double julianDay)
Timestamp timestamp() const
Returns the julian day for the date and time.
int week(int firstDayOfWeek=MONDAY) const
Returns the month (1 to 12).
int second() const
Returns the minute (0 to 59).
~DateTime()
Copy constructor. Creates the DateTime from another one.
bool operator==(const DateTime &dateTime) const
int year() const
Swaps the DateTime with another one.
static int daysOfMonth(int year, int month)
void computeGregorian(double julianDay)
Computes the UTC time for a Julian day.
int dayOfWeek() const
Returns the day within the month (1 to 31).
DateTime & assign(int year, int month, int day, int hour=0, int minute=0, int second=0, int millisecond=0, int microseconds=0)
Assigns a Julian day.
void checkLimit(short &lower, short &higher, short limit)
Extracts the daytime (hours, minutes, seconds, etc.) from the stored utcTime.
DateTime(const DateTime &dateTime)
Timestamp::UtcTimeVal _utcTime
utility functions used to correct the overflow in computeGregorian
int month() const
Returns the year.
DateTime(int year, int month, int day, int hour=0, int minute=0, int second=0, int millisecond=0, int microsecond=0)
DateTime(const tm &tmStruct)
Creates a DateTime for the current date and time.
DateTime(Timestamp::UtcTimeVal utcTime, Timestamp::TimeDiff diff)
Creates a DateTime for the given Julian day.
DateTime & operator=(const Timestamp ×tamp)
Assigns another DateTime.
DateTime operator+(const Timespan &span) const
int minute() const
Returns true if hour >= 12.
bool isAM() const
Returns the hour (0 to 12).
DefaultStrategy(const DefaultStrategy &s)
bool empty() const
Removes all delegates from the strategy.
DefaultStrategy & operator=(const DefaultStrategy &s)
void remove(const TDelegate &delegate)
Adds a delegate to the strategy.
DelegateHandle add(const TDelegate &delegate)
Sends a notification to all registered delegates.
void notify(const void *sender)
void remove(DelegateHandle delegateHandle)
DelegateHandle add(const TDelegate &delegate)
Sends a notification to all registered delegates.
void remove(const TDelegate &delegate)
Adds a delegate to the strategy.
bool empty() const
Removes all delegates from the strategy.
void remove(DelegateHandle delegateHandle)
DefaultStrategy(const DefaultStrategy &s)
DefaultStrategy & operator=(const DefaultStrategy &s)
void notify(const void *sender, TArgs &arguments)
virtual void updateImpl(const void *data, std::size_t length)=0
virtual const Digest & digest()=0
DigestEngine & operator=(const DigestEngine &)
virtual std::size_t digestLength() const =0
Updates the digest with the given data.
DigestEngine(const DigestEngine &)
void update(const void *data, std::size_t length)
virtual void reset()=0
Returns the length of the digest in bytes.
bool tryWait(long milliseconds)
Event & operator=(const Event &)
void wait(long milliseconds)
Waits for the event to become signalled.
@ EVENT_AUTORESET
Manual reset event.
~Event()
Please use Event::Event(EventType) instead.
void set()
Destroys the event.
Event(EventType type=EVENT_AUTORESET)
Event(const Event &)
Resets the event to unsignalled state.
bool waitImpl(long milliseconds)
Exception(const Exception &exc)
virtual const char * what() const noexcept
Returns the name of the exception class.
const std::string & message() const
void message(const std::string &msg)
Standard constructor.
Exception(const std::string &msg, const Exception &nested, int code=0)
Creates an exception.
std::string _msg
Sets the extended message for the exception.
Exception(const std::string &msg, const std::string &arg, int code=0)
Creates an exception.
const Exception * nested() const
virtual Exception * clone() const
Exception & operator=(const Exception &exc)
Destroys the exception and deletes the nested exception.
virtual void rethrow() const
void extendedMessage(const std::string &arg)
Sets the message for the exception.
virtual const char * name() const noexcept
Assignment operator.
int code() const
Returns the message text.
~Exception() noexcept
Copy constructor.
std::string displayText() const
Returns the exception code if defined.
Exception(const std::string &msg, int code=0)
virtual const char * className() const noexcept
Returns a static string describing the exception.
bool tryLock(long milliseconds)
~FastMutex()
creates the Mutex.
void lock()
destroys the Mutex.
FastMutex(const FastMutex &)
void lock(long milliseconds)
FastMutex & operator=(const FastMutex &)
MemoryStreamBuf _buf
Returns a pointer to the underlying streambuf.
MemoryIOS(char *pBuffer, std::streamsize bufferSize)
MemoryStreamBuf * rdbuf()
Destroys the stream.
~MemoryIOS()
Creates the basic stream.
An input stream for reading from a memory area.
std::streamsize charsWritten() const
Destroys the MemoryInputStream.
MemoryOutputStream(char *pBuffer, std::streamsize bufferSize)
bool tryLock(long milliseconds)
void lock(long milliseconds)
void lock()
destroys the Mutex.
Mutex & operator=(const Mutex &)
~Mutex()
creates the Mutex.
bool tryLockImpl(long milliseconds)
void init(const Params ¶ms)
void setSessionCacheSize(std::size_t size)
Returns true iff the session cache is enabled.
std::size_t getSessionCacheSize() const
Context::VerificationMode verificationMode() const
Returns true iff the context is for use by a server.
void requireMinimumProtocol(Protocols protocol)
void enableExtendedCertificateVerification(bool flag=true)
void setInvalidCertificateHandler(InvalidCertificateHandlerPtr pInvalidCertificageHandler)
Usage _usage
Create a SSL_CTX object according to Context configuration.
Usage usage() const
Returns the underlying OpenSSL SSL Context object.
SSL_CTX * sslContext() const
long getSessionTimeout() const
void usePrivateKey(const Poco::Crypto::RSAKey &key)
Add one trusted certification authority to be used by the Context.
void enableSessionCache(bool flag=true)
Returns the verification mode.
void addCertificateAuthority(const Poco::Crypto::X509Certificate &certificate)
Adds a certificate for certificate chain validation.
void usePrivateKey(const Poco::Crypto::EVPPKey &pkey)
bool extendedCertificateVerificationEnabled() const
bool isForServerUse() const
void addChainCertificate(const Poco::Crypto::X509Certificate &certificate)
bool _ocspStaplingResponseVerification
bool ocspStaplingResponseVerificationEnabled() const
bool _extendedCertificateVerification
@ SERVER_USE
DEPRECATED. Context is used by a client.
@ TLSV1_2_CLIENT_USE
DEPRECATED. Context is used by a server requiring TLSv1.1 (OpenSSL 1.0.0 or newer).
@ TLSV1_CLIENT_USE
DEPRECATED. Context is used by a server.
@ TLSV1_3_SERVER_USE
DEPRECATED. Context is used by a client requiring TLSv1.3 (OpenSSL 1.1.1 or newer).
@ CLIENT_USE
Context is used by a client for TLSv1 or higher. Use requireMinimumProtocol() or disableProtocols() t...
@ TLSV1_2_SERVER_USE
DEPRECATED. Context is used by a client requiring TLSv1.2 (OpenSSL 1.0.1 or newer).
@ TLSV1_SERVER_USE
DEPRECATED. Context is used by a client requiring TLSv1.
@ TLSV1_3_CLIENT_USE
DEPRECATED. Context is used by a server requiring TLSv1.2 (OpenSSL 1.0.1 or newer).
@ TLS_SERVER_USE
Context is used by a client for TLSv1 or higher. Use requireMinimumProtocol() or disableProtocols() t...
@ TLSV1_1_CLIENT_USE
DEPRECATED. Context is used by a server requiring TLSv1.
@ TLSV1_1_SERVER_USE
DEPRECATED. Context is used by a client requiring TLSv1.1 (OpenSSL 1.0.0 or newer).
void useCertificate(const Poco::Crypto::X509Certificate &certificate)
Destroys the Context.
void preferServerCiphers()
Context(Usage usage, const Params ¶ms)
InvalidCertificateHandlerPtr _pInvalidCertificateHandler
void setSessionTimeout(long seconds)
InvalidCertificateHandlerPtr getInvalidCertificateHandler() const
void disableStatelessSessionResumption()
bool sessionCacheEnabled() const
void disableProtocols(int protocols)
void parse(std::string::const_iterator first, std::string::const_iterator last)
HTTPAuthenticationParams()
virtual ~HTTPAuthenticationParams()
See fromResponse() documentation.
HTTPAuthenticationParams(const HTTPRequest &request)
See fromAuthInfo() documentation.
HTTPAuthenticationParams & operator=(const HTTPAuthenticationParams &authParams)
Destroys the HTTPAuthenticationParams.
static const std::string WWW_AUTHENTICATE
const std::string & getRealm() const
Sets the "realm" parameter to the provided string.
void fromRequest(const HTTPRequest &request)
static const std::string NTLM
static const std::string PROXY_AUTHENTICATE
static const std::string REALM
std::string toString() const
HTTPBasicCredentials(const HTTPBasicCredentials &)
HTTPBasicCredentials & operator=(const HTTPBasicCredentials &)
HTTPBasicCredentials(const HTTPRequest &request)
Creates a HTTPBasicCredentials object with the given username and password.
const std::string & getPassword() const
Sets the password.
static const std::string SCHEME
Adds proxy authentication information to the given HTTPRequest.
const std::string & getUsername() const
Sets the username.
void authenticate(HTTPRequest &request) const
Returns true if both username and password are empty, otherwise false.
bool empty() const
Returns the password.
void clear()
Destroys the HTTPBasicCredentials.
void proxyAuthenticate(HTTPRequest &request) const
Adds authentication information to the given HTTPRequest.
void proxyAuthenticateDigest(HTTPRequest &request)
HTTPClientSession(const SocketAddress &address)
Poco::Timespan _keepAliveTimeout
StreamSocket proxyConnect()
const std::string & getHost() const
virtual void proxyAuthenticate(HTTPRequest &request)
Checks if we can reuse a persistent connection.
static ProxyConfig _globalProxyConfig
@ DEFAULT_KEEP_ALIVE_TIMEOUT
@ PROXY_AUTH_HTTP_BASIC
No proxy authentication.
@ PROXY_AUTH_HTTP_DIGEST
HTTP Basic proxy authentication (default, if username and password are supplied)
@ PROXY_AUTH_NTLM
HTTP Digest proxy authentication.
HTTPClientSession(const StreamSocket &socket)
Creates an unconnected HTTPClientSession.
std::ostream & sendRequestImpl(const HTTPRequest &request)
Tries to re-connect if keep-alive is on.
const ProxyConfig & getProxyConfig() const
Sets the proxy configuration.
const std::string & getProxyHost() const
Sets the port number of the proxy server.
virtual std::istream & receiveResponse(HTTPResponse &response)
Poco::SharedPtr< std::ostream > _pRequestStream
virtual bool peekResponse(HTTPResponse &response)
virtual std::ostream & sendRequest(HTTPRequest &request)
Returns the connection timeout for HTTP connections.
void proxyAuthenticateImpl(HTTPRequest &request, const ProxyConfig &proxyConfig)
virtual bool mustReconnect() const
void proxyAuthenticateNTLM(HTTPRequest &request)
Initiates a HTTP Digest authentication handshake with the proxy.
const std::string & getProxyUsername() const
Poco::SharedPtr< std::istream > _pResponseStream
void setProxyConfig(const ProxyConfig &config)
Returns the password for proxy authentication.
void setKeepAliveTimeout(const Poco::Timespan &timeout)
Returns the global proxy configuration.
const Poco::Timespan & getKeepAliveTimeout() const
Sets the connection timeout for HTTP connections.
static void setGlobalProxyConfig(const ProxyConfig &config)
Returns the proxy configuration.
HTTPDigestCredentials _proxyDigestCreds
const std::string & getProxyPassword() const
bool _ntlmProxyAuthenticated
void setProxyPort(Poco::UInt16 port)
Sets the host name of the proxy server.
int write(const char *buffer, std::streamsize length)
Connects the underlying socket to the HTTP server.
HTTPNTLMCredentials _proxyNTLMCreds
static const ProxyConfig & getGlobalProxyConfig()
void sendChallengeRequest(const HTTPRequest &request, HTTPResponse &response)
Initiates a HTTP NTLM authentication handshake with the proxy.
virtual ~HTTPClientSession()
Creates a HTTPClientSession using the given host, port and proxy configuration.
Poco::Timestamp _lastRequest
Poco::UInt16 getPort() const
HTTPClientSession & operator=(const HTTPClientSession &)
virtual bool secure() const
Poco::UInt16 getProxyPort() const
Returns the proxy host name.
void setPort(Poco::UInt16 port)
Returns the host name of the target HTTP server.
HTTPBasicCredentials _proxyBasicCreds
HTTPClientSession(const HTTPClientSession &)
virtual std::string proxyRequestPrefix() const
Sends the given HTTPRequest over an existing connection.
static const std::string QOP_PARAM
void updateAuthParams(const HTTPRequest &request)
static const std::string AUTH_PARAM
HTTPAuthenticationParams _requestAuthParams
static const std::string URI_PARAM
void authenticate(HTTPRequest &request, const HTTPAuthenticationParams &responseAuthParams)
HTTPDigestCredentials & operator=(const HTTPDigestCredentials &)
static const std::string SCHEME
Creates a random nonce string.
void proxyAuthenticate(HTTPRequest &request, const HTTPAuthenticationParams &responseAuthParams)
static const std::string ALGORITHM_PARAM
bool empty() const
Returns the password.
bool verifyAuthParams(const HTTPRequest &request, const HTTPAuthenticationParams ¶ms) const
HTTPDigestCredentials(const HTTPDigestCredentials &)
static const std::string NONCE_PARAM
static std::string createNonce()
static const std::string CNONCE_PARAM
void updateProxyAuthInfo(HTTPRequest &request)
void authenticate(HTTPRequest &request, const HTTPResponse &response)
Returns true if both username and password are empty, otherwise false.
static const std::string DEFAULT_ALGORITHM
bool verifyAuthInfo(const HTTPRequest &request) const
static const std::string DEFAULT_QOP
static const std::string OPAQUE_PARAM
const std::string & getUsername() const
Sets the username.
static const std::string REALM_PARAM
static Poco::FastMutex _nonceMutex
std::map< std::string, int > NonceCounterMap
static const std::string USERNAME_PARAM
void reset()
Destroys the HTTPDigestCredentials.
static const std::string NC_PARAM
const std::string & getPassword() const
Sets the password.
void createAuthParams(const HTTPRequest &request, const HTTPAuthenticationParams &responseAuthParams)
void proxyAuthenticate(HTTPRequest &request, const HTTPResponse &response)
static const std::string RESPONSE_PARAM
~HTTPDigestCredentials()
Creates a HTTPDigestCredentials object with the given username and password.
void updateAuthInfo(HTTPRequest &request)
static const std::string HTTP_1_1
void setContentLength(std::streamsize length)
Returns the HTTP version for this message.
void updateProxyAuthInfo(HTTPRequest &request)
HTTPNTLMCredentials & operator=(const HTTPNTLMCredentials &)
bool empty() const
Returns the password.
static const std::string SCHEME
const std::string & getHost() const
~HTTPNTLMCredentials()
Creates a HTTPNTLMCredentials object with the given username, password and target host.
HTTPNTLMCredentials(const HTTPNTLMCredentials &)
Poco::SharedPtr< NTLMContext > _pNTLMContext
const std::string & getUsername() const
Sets the username.
void proxyAuthenticate(HTTPRequest &request, const HTTPResponse &response)
void reset()
Destroys the HTTPNTLMCredentials.
const std::string & getPassword() const
Sets the password.
void authenticate(HTTPRequest &request, const HTTPResponse &response)
Returns the target host.
void updateAuthInfo(HTTPRequest &request)
HTTPRequest(const std::string &method, const std::string &uri, const std::string &version)
Creates a HTTP/1.0 request with the given method and URI.
static const std::string HTTP_GET
static const std::string HTTP_DELETE
static const std::string HTTP_POST
const std::string & getReason() const
Sets the HTTP reason phrase.
HTTPResponse(HTTPStatus status)
HTTPStatus getStatus() const
HTTPSClientSession(const std::string &host, Poco::UInt16 port, Context::Ptr pContext, Session::Ptr pSession)
std::string proxyRequestPrefix() const
Sends the given HTTPRequest over an existing connection.
HTTPSClientSession(Context::Ptr pContext, Session::Ptr pSession)
Session::Ptr sslSession()
HTTPSClientSession(Context::Ptr pContext)
Creates a HTTPSClientSession using the given host and port.
void proxyAuthenticate(HTTPRequest &request)
Checks if we can reuse a persistent connection.
int read(char *buffer, std::streamsize length)
HTTPSClientSession(const HTTPSClientSession &)
void connect(const SocketAddress &address)
Refills the internal buffer.
HTTPSClientSession(const SecureStreamSocket &socket, Session::Ptr pSession)
X509Certificate serverCertificate()
HTTPSClientSession & operator=(const HTTPSClientSession &)
HTTPSClientSession(const std::string &host, Poco::UInt16 port=HTTPS_PORT)
HTTPSClientSession(const SecureStreamSocket &socket)
Creates an unconnected HTTPSClientSession.
HTTPSClientSession(const std::string &host, Poco::UInt16 port, Context::Ptr pContext)
void clearException()
Stores a clone of the exception.
void setKeepAlive(bool keepAlive)
void attachSessionData(const Poco::Any &data)
virtual int write(const char *buffer, std::streamsize length)
HTTPSession & operator=(const HTTPSession &)
HTTPSession(const HTTPSession &)
StreamSocket detachSocket()
@ HTTP_DEFAULT_CONNECTION_TIMEOUT
void setTimeout(const Poco::Timespan &connectionTimeout, const Poco::Timespan &sendTimeout, const Poco::Timespan &receiveTimeout)
Sets the timeout for the HTTP session.
int receive(char *buffer, int length)
Writes data to the socket.
void setException(const Poco::Exception &exc)
Closes the underlying socket.
Poco::Timespan _connectionTimeout
Poco::Timespan getTimeout() const
Sets different timeouts for the HTTP session.
bool getKeepAlive() const
Poco::Exception * _pException
virtual int read(char *buffer, std::streamsize length)
void drainBuffer(Poco::Buffer< char > &buffer)
Returns a reference to the underlying socket.
Poco::Timespan _sendTimeout
HTTPSession(const StreamSocket &socket, bool keepAlive)
virtual void abort()
Returns true if the underlying socket is connected.
void refill()
Returns the number of bytes in the buffer.
bool connected() const
Returns the timeout for the HTTP session.
HTTPSession(const StreamSocket &socket)
const Poco::Any & sessionData() const
void setTimeout(const Poco::Timespan &timeout)
void attachSocket(const StreamSocket &socket)
int buffered() const
Reads up to length bytes.
const Poco::Exception * networkException() const
virtual void connect(const SocketAddress &address)
Refills the internal buffer.
Poco::Timespan _receiveTimeout
IPAddress(const struct sockaddr &sockaddr)
Creates an IPAddress mask with the given length of prefix.
IPAddress(unsigned prefix, Family family)
void mask(const IPAddress &mask)
Returns the prefix length.
bool isOrgLocalMC() const
bool operator!=(const IPAddress &addr) const
void mask(const IPAddress &mask, const IPAddress &set)
const void * addr() const
Returns the length in bytes of the internal socket address structure.
IPAddress(const void *addr, poco_socklen_t length, Poco::UInt32 scope)
~IPAddress()
Same for struct sock_addr on POSIX.
bool operator==(const IPAddress &addr) const
bool operator>=(const IPAddress &addr) const
Poco::AutoPtr< Impl > Ptr
IPAddress operator&(const IPAddress &addr) const
void newIPv4(const void *hostAddr)
IPAddress operator~() const
bool isNodeLocalMC() const
int af() const
Returns the internal address structure.
bool isIPv4Mapped() const
bool isLinkLocalMC() const
bool operator<=(const IPAddress &addr) const
IPAddress(const IPAddress &addr)
Creates a wildcard (zero) IPv4 IPAddress.
bool isSiteLocalMC() const
std::string toString() const
IPAddress & operator=(const IPAddress &addr)
Destroys the IPAddress.
bool isWellKnownMC() const
bool operator<(const IPAddress &addr) const
IPAddress(Family family)
Creates an IPAddress by copying another one.
Family family() const
Assigns an IPAddress.
poco_socklen_t length() const
static IPAddress broadcast()
Returns a wildcard IPv4 or IPv6 address (0.0.0.0).
IPAddress operator|(const IPAddress &addr) const
bool isIPv4Compatible() const
void newIPv4(unsigned prefix)
IPAddress operator^(const IPAddress &addr) const
IPAddress(const void *addr, poco_socklen_t length)
unsigned prefixLength() const
Returns the address family (AF_INET or AF_INET6) of the address.
static IPAddress wildcard(Family family=IPv4)
Poco::UInt32 scope() const
Returns the address family (IPv4 or IPv6) of the address.
bool operator>(const IPAddress &addr) const
virtual std::string toString() const =0
virtual bool isBroadcast() const =0
virtual bool isSiteLocalMC() const =0
virtual bool isIPv4Mapped() const =0
virtual bool isWildcard() const =0
IPAddressImpl & operator=(const IPAddressImpl &)
virtual Family family() const =0
IPAddressImpl(const IPAddressImpl &)
virtual bool isOrgLocalMC() const =0
virtual bool isWellKnownMC() const =0
virtual bool isSiteLocal() const =0
virtual Poco::UInt32 scope() const =0
virtual unsigned prefixLength() const =0
virtual bool isNodeLocalMC() const =0
virtual bool isGlobalMC() const =0
virtual IPAddressImpl * clone() const =0
virtual bool isIPv4Compatible() const =0
virtual bool isLinkLocalMC() const =0
virtual void mask(const IPAddressImpl *pMask, const IPAddressImpl *pSet)=0
virtual bool isLinkLocal() const =0
virtual poco_socklen_t length() const =0
virtual int af() const =0
virtual bool isLoopback() const =0
virtual const void * addr() const =0
virtual bool isMulticast() const =0
IPv4AddressImpl operator^(const IPv4AddressImpl &addr) const
bool isLinkLocalMC() const
IPv4AddressImpl & operator=(const IPv4AddressImpl &)
bool isSiteLocalMC() const
bool isWellKnownMC() const
std::string toString() const
void mask(const IPAddressImpl *pMask, const IPAddressImpl *pSet)
IPv4AddressImpl(const IPv4AddressImpl &addr)
bool isNodeLocalMC() const
IPv4AddressImpl(const void *addr)
IPv4AddressImpl operator~() const
bool isIPv4Mapped() const
IPAddressImpl * clone() const
IPv4AddressImpl operator&(const IPv4AddressImpl &addr) const
poco_socklen_t length() const
bool operator!=(const IPv4AddressImpl &addr) const
bool isOrgLocalMC() const
Poco::UInt32 scope() const
bool isIPv4Compatible() const
unsigned prefixLength() const
IPv4AddressImpl operator|(const IPv4AddressImpl &addr) const
const void * addr() const
bool operator==(const IPv4AddressImpl &addr) const
IPv4AddressImpl(unsigned prefix)
IPv4SocketAddressImpl(const void *addr, UInt16 port)
const struct sockaddr * addr() const
std::string toString() const
IPv4SocketAddressImpl(const struct sockaddr_in *addr)
poco_socklen_t length() const
SocketAddressImpl(const SocketAddressImpl &)
virtual Family family() const =0
virtual poco_socklen_t length() const =0
virtual std::string toString() const =0
SocketAddressImpl & operator=(const SocketAddressImpl &)
virtual ~SocketAddressImpl()
virtual const struct sockaddr * addr() const =0
virtual UInt16 port() const =0
virtual int af() const =0
virtual IPAddress host() const =0
bool _handleErrorsOnServerSide
InvalidCertificateHandler(bool handleErrorsOnServerSide)
virtual void onInvalidCertificate(const void *pSender, VerificationErrorArgs &errorCert)=0
Destroys the InvalidCertificateHandler.
virtual ~InvalidCertificateHandler()
An opaque context class for working with SSPI NTLM authentication.
NTLMContext(NTLMContextImpl *pImpl)
NTLMContext & operator=(const NTLMContext &)
NTLMContext(const NTLMContext &)
static std::vector< unsigned char > formatNegotiateMessage(const NegotiateMessage &message)
Creates the NTLMv2 response by creating the "blob" and prepending its HMAC-MD5, using the ntlm2Hash a...
static std::vector< unsigned char > createNonce()
static const std::string NTLMSSP
Decodes the given base64-encoded string.
static void readBufferDesc(Poco::BinaryReader &reader, BufferDesc &desc)
Creates the NTLM Type 3 Authenticate message used for sending the response to the challenge.
static std::vector< unsigned char > formatAuthenticateMessage(const AuthenticateMessage &message)
@ NTLM_FLAG_NEGOTIATE_TARGET
@ NTLM_FLAG_NEGOTIATE_128
@ NTLM_FLAG_NEGOTIATE_LOCAL
@ NTLM_FLAG_TARGET_SERVER
@ NTLM_FLAG_REQUEST_TARGET
@ NTLM_FLAG_NEGOTIATE_NTLM
@ NTLM_FLAG_WORKST_SUPPLIED
@ NTLM_FLAG_NEGOTIATE_OEM
@ NTLM_FLAG_DOMAIN_SUPPLIED
@ NTLM_FLAG_TARGET_DOMAIN
@ NTLM_FLAG_NEGOTIATE_UNICODE
@ NTLM_FLAG_NEGOTIATE_ALWAYS_SIGN
@ NTLM_FLAG_NEGOTIATE_NTLM2_KEY
static bool parseChallengeMessage(const unsigned char *buffer, std::size_t size, ChallengeMessage &message)
Creates the NTLM Type 1 Negotiate message used for initiating NTLM authentication from the client.
@ NTLM_MESSAGE_TYPE_NEGOTIATE
@ NTLM_MESSAGE_TYPE_AUTHENTICATE
@ NTLM_MESSAGE_TYPE_CHALLENGE
static Poco::UInt64 createTimestamp()
Creates an 8-byte client nonce for NTLM authentication.
static void writeBufferDesc(Poco::BinaryWriter &writer, const BufferDesc &desc)
Reads a buffer descriptor.
void swap(NameValueCollection &nvc)
Moves the name-value pairs of another NameValueCollection to this one.
void clear()
Removes all name-value pairs with the given name.
NameValueCollection & operator=(const NameValueCollection &nvc)
Destroys the NameValueCollection.
NameValueCollection(const NameValueCollection &nvc)
Creates an empty NameValueCollection.
ConstIterator begin() const
virtual ~NameValueCollection()
Creates a NameValueCollection by moving another one.
std::size_t size() const
Returns true iff the header does not have any content.
NameValueCollection(NameValueCollection &&nvc) noexcept
Creates a NameValueCollection by copying another one.
ConstIterator end() const
NameValueCollection & operator=(NameValueCollection &&nvc) noexcept
Assigns the name-value pairs of another NameValueCollection to this one.
HeaderMap _map
Removes all name-value pairs and their values.
RejectCertificateHandler(bool handleErrorsOnServerSide)
void initializeClient(PrivateKeyPassphraseHandlerPtr ptrPassphraseHandler, InvalidCertificateHandlerPtr ptrHandler, Context::Ptr ptrContext)
static SSLManager & instance()
static const std::string SERVICE_SMTP
static std::vector< unsigned char > negotiate(NTLMContext &context)
static const std::string SERVICE_HTTP
Creates the NTLM Type 3 Authenticate message used for sending the response to the challenge.
bool operator<(const SocketAddress &socketAddress) const
Returns the address family of the host's address.
SocketAddress & operator=(const SocketAddress &socketAddress)
Destroys the SocketAddress.
SocketAddress(const SocketAddress &addr)
SocketAddress(const IPAddress &hostAddress, Poco::UInt16 portNumber)
Poco::AutoPtr< Impl > Ptr
Poco::UInt16 port() const
Returns the host IP address.
void newIPv4(const IPAddress &hostAddress, Poco::UInt16 portNumber)
int af() const
Returns a pointer to the internal native socket address.
IPAddress host() const
Assigns another SocketAddress.
Family family() const
Returns a string representation of the address.
SocketAddress(Family family)
Creates a wildcard (all zero) IPv4 SocketAddress.
void newIPv4(const sockaddr_in *)
std::string toString() const
Returns the address family (AF_INET or AF_INET6) of the address.
poco_socklen_t length() const
Returns the port number.
SocketAddress(Poco::UInt16 port)
Creates a SocketAddress from an IP address and given port number.
~SocketAddress()
Creates a SocketAddress from a native socket address.
bool operator!=(const SocketAddress &socketAddress) const
const struct sockaddr * addr() const
Returns the length of the internal native socket address.
bool operator==(const SocketAddress &socketAddress) const
void init(const IPAddress &hostAddress, Poco::UInt16 portNumber)
SocketAddress(const struct sockaddr *addr, poco_socklen_t length)
Creates a SocketAddress by copying another one.
SocketAddress(Family family, Poco::UInt16 port)
poco_socket_t sockfd() const
bool getNoDelay() const
Sets the value of the TCP_NODELAY socket option.
int getSendBufferSize() const
Sets the size of the send buffer.
bool getOOBInline() const
Sets the value of the SO_OOBINLINE socket option.
bool operator<=(const Socket &socket) const
Compares the SocketImpl pointers.
void setReceiveBufferSize(int size)
void getOption(int level, int option, Poco::Timespan &value) const
void getOption(int level, int option, IPAddress &value) const
void setLinger(bool on, int seconds)
Socket & operator=(const Socket &socket)
bool getReuseAddress() const
Sets the value of the SO_REUSEADDR socket option.
Socket(const Socket &socket)
Creates an uninitialized socket.
bool operator>=(const Socket &socket) const
Compares the SocketImpl pointers.
void setOption(int level, int option, const Poco::Timespan &value)
bool operator==(const Socket &socket) const
void setOption(int level, int option, unsigned char value)
void init(int af)
Returns true if the system supports IPv6.
void setOption(int level, int option, int value)
bool getKeepAlive() const
Sets the value of the SO_KEEPALIVE socket option.
void setSendBufferSize(int size)
SocketAddress address() const
SelectMode
The mode argument to poll() and select().
SocketAddress peerAddress() const
Returns the IP address and port number of the socket.
bool secure() const
Returns the SocketImpl for this socket.
bool operator<(const Socket &socket) const
void setSendTimeout(const Poco::Timespan &timeout)
SocketImpl * _pImpl
Returns the socket descriptor for this socket.
void getOption(int level, int option, unsigned &value) const
void setKeepAlive(bool flag)
Returns the value of the TCP_NODELAY socket option.
void setOption(int level, int option, unsigned value)
void setOption(int level, int option, const IPAddress &value)
void getOption(int level, int option, unsigned char &value) const
static bool supportsIPv4()
void setReceiveTimeout(const Poco::Timespan &timeout)
bool operator>(const Socket &socket) const
Compares the SocketImpl pointers.
void getLinger(bool &on, int &seconds) const
Sets the value of the SO_LINGER socket option.
void setReuseAddress(bool flag)
Returns the value of the SO_KEEPALIVE socket option.
int getReceiveBufferSize() const
Sets the size of the receive buffer.
Poco::Timespan getReceiveTimeout() const
void setOOBInline(bool flag)
void close()
Compares the SocketImpl pointers.
void setBlocking(bool flag)
Returns the value of the SO_OOBINLINE socket option.
bool getReusePort() const
void getOption(int level, int option, int &value) const
bool poll(const Poco::Timespan &timeout, int mode) const
static SocketBuf makeBuffer(void *buffer, std::size_t length)
bool operator!=(const Socket &socket) const
static SocketBufVec makeBufVec(std::size_t size, std::size_t bufLen)
Poco::Timespan getSendTimeout() const
Sets the send timeout for the socket.
Socket(SocketImpl *pImpl)
SocketImpl * impl() const
Returns the IP address and port number of the peer socket.
void setReusePort(bool flag)
Returns the value of the SO_REUSEADDR socket option.
static bool supportsIPv6()
Returns true if the system supports IPv4.
void setNoDelay(bool flag)
Returns the value of the SO_LINGER socket option.
virtual bool secure() const
virtual void listen(int backlog=64)
virtual void sendUrgent(unsigned char data)
virtual void shutdownReceive()
Close the socket.
virtual int receiveBytes(void *buffer, int length, int flags=0)
virtual int sendTo(const void *buffer, int length, const SocketAddress &address, int flags=0)
virtual Poco::Timespan getReceiveTimeout()
virtual Poco::Timespan getSendTimeout()
Sets the send timeout for the socket.
virtual void getRawOption(int level, int option, void *value, poco_socklen_t &length)
virtual void connectNB(const SocketAddress &address)
void getOption(int level, int option, unsigned char &value)
static void error(int code)
Throws an appropriate exception for the last error.
void setOption(int level, int option, const IPAddress &value)
bool getBroadcast()
Sets the value of the SO_BROADCAST socket option.
virtual void setReceiveBufferSize(int size)
void setOption(int level, int option, int value)
Returns the IP address and port number of the peer socket.
virtual void setRawOption(int level, int option, const void *value, poco_socklen_t length)
virtual void setBlocking(bool flag)
Returns the value of the SO_BROADCAST socket option.
virtual SocketImpl * acceptConnection(SocketAddress &clientAddr)
poco_socket_t sockfd() const
Returns the value of the SO_ERROR socket option.
virtual bool getBlocking() const
SocketImpl()
Returns true iff the underlying socket is initialized.
virtual void bind(const SocketAddress &address, bool reuseAddress=false)
bool getKeepAlive()
Sets the value of the SO_KEEPALIVE socket option.
void checkBrokenTimeout(SelectMode mode)
Allows subclasses to set the socket manually, iff no valid socket is set yet.
bool getOOBInline()
Sets the value of the SO_OOBINLINE socket option.
virtual int getReceiveBufferSize()
Sets the size of the receive buffer.
void setReusePort(bool flag)
Returns the value of the SO_REUSEADDR socket option.
virtual void bind6(const SocketAddress &address, bool reuseAddress, bool reusePort, bool ipV6Only)
virtual void setReceiveTimeout(const Poco::Timespan &timeout)
virtual int getSendBufferSize()
Sets the size of the send buffer.
virtual SocketAddress peerAddress()
Returns the IP address and port number of the socket.
void reset(poco_socket_t fd=POCO_INVALID_SOCKET)
virtual void bind6(const SocketAddress &address, bool reuseAddress=false, bool ipV6Only=false)
bool getReuseAddress()
Sets the value of the SO_REUSEADDR socket option.
void getOption(int level, int option, Poco::Timespan &value)
int receiveFrom(void *buffer, int length, struct sockaddr **ppSA, poco_socklen_t **ppSALen, int flags=0)
void setNoDelay(bool flag)
Returns the value of the SO_LINGER socket option.
virtual void setSendTimeout(const Poco::Timespan &timeout)
SocketImpl(const SocketImpl &)
Throws an appropriate exception for the given error code.
virtual void init(int af)
virtual bool poll(const Poco::Timespan &timeout, int mode)
bool initialized() const
A wrapper for the ioctl system call.
static void error()
Returns the last error code.
virtual ~SocketImpl()
Creates a SocketImpl using the given native socket.
virtual int receiveBytes(Poco::Buffer< char > &buffer, int flags=0, const Poco::Timespan &timeout=100000)
virtual void connect(const SocketAddress &address)
virtual void bind(const SocketAddress &address, bool reuseAddress, bool reusePort)
void setBroadcast(bool flag)
Returns the value of the SO_OOBINLINE socket option.
void getOption(int level, int option, IPAddress &value)
void ioctl(poco_ioctl_request_t request, int &arg)
virtual int receiveFrom(void *buffer, int length, SocketAddress &address, int flags=0)
SocketImpl(poco_socket_t sockfd)
Creates a SocketImpl.
void ioctl(poco_ioctl_request_t request, void *arg)
A wrapper for the ioctl system call.
virtual int sendBytes(const void *buffer, int length, int flags=0)
void getOption(int level, int option, int &value)
void setOption(int level, int option, const Poco::Timespan &value)
bool getNoDelay()
Sets the value of the TCP_NODELAY socket option.
SocketImpl & operator=(const SocketImpl &)
void setOption(int level, int option, unsigned char value)
Poco::Timespan _recvTimeout
void setLinger(bool on, int seconds)
virtual void shutdownSend()
Shuts down the receiving part of the socket connection.
void setReuseAddress(bool flag)
Returns the value of the SO_KEEPALIVE socket option.
void getOption(int level, int option, unsigned &value)
Poco::Timespan _sndTimeout
virtual void connect(const SocketAddress &address, const Poco::Timespan &timeout)
virtual void shutdown()
Shuts down the sending part of the socket connection.
void getLinger(bool &on, int &seconds)
Sets the value of the SO_LINGER socket option.
void initSocket(int af, int type, int proto=0)
virtual SocketAddress address()
void setOOBInline(bool flag)
void setOption(int level, int option, unsigned value)
void setKeepAlive(bool flag)
Returns the value of the TCP_NODELAY socket option.
virtual void setSendBufferSize(int size)
StreamSocket(SocketImpl *pImpl)
void shutdown()
Shuts down the sending part of the socket connection.
StreamSocket & operator=(const Socket &socket)
Destroys the StreamSocket.
int receiveBytes(void *buffer, int length, int flags=0)
void connectNB(const SocketAddress &address)
void connect(const SocketAddress &address)
int receiveBytes(Poco::Buffer< char > &buffer, int flags=0, const Poco::Timespan &timeout=100000)
int sendBytes(const void *buffer, int length, int flags=0)
StreamSocket(SocketAddress::Family family)
void sendUrgent(unsigned char data)
StreamSocket(const Socket &socket)
int sendBytes(Poco::FIFOBuffer &buffer)
int receiveBytes(Poco::FIFOBuffer &buffer)
void connect(const SocketAddress &address, const Poco::Timespan &timeout)
void shutdownSend()
Shuts down the receiving part of the socket connection.
StreamSocket(const SocketAddress &address)
static std::string convertCertificateError(long errCode)
static std::string getLastError()
Converts an SSL certificate handling error code into an error message.
static void clearErrorStack()
Returns the last error from the error stack.
A utility class for certificate error handling.
virtual ~NotificationStrategy()
virtual bool empty() const =0
Removes all delegates from the strategy.
virtual void remove(const TDelegate &delegate)=0
Adds a delegate to the strategy.
virtual DelegateHandle add(const TDelegate &delegate)=0
Sends a notification to all registered delegates.
virtual void remove(DelegateHandle delegateHandle)=0
virtual void notify(const void *sender)=0
virtual void remove(const TDelegate &delegate)=0
Adds a delegate to the strategy.
virtual void remove(DelegateHandle delegateHandle)=0
virtual void notify(const void *sender, TArgs &arguments)=0
virtual ~NotificationStrategy()
virtual DelegateHandle add(const TDelegate &delegate)=0
Sends a notification to all registered delegates.
virtual bool empty() const =0
Removes all delegates from the strategy.
void unlock()
Does nothing.
void lock(long)
Does nothing.
NullMutex()
Creates the NullMutex.
bool tryLock()
Does nothing and always returns true.
~NullMutex()
Destroys the NullMutex.
bool tryLock(long)
Does nothing and always returns true.
This stream discards all characters written to it.
int referenceCount() const
virtual ~RefCountedObject()
Returns the reference count.
void release() const noexcept
Increments the object's reference count.
RefCountedObject & operator=(const RefCountedObject &)
RefCountedObject(const RefCountedObject &)
Destroys the RefCountedObject.
Simple ReferenceCounter object, does not delete itself when count reaches 0.
int referenceCount() const
The release policy for SharedPtr holding arrays.
static void release(C *pObj) noexcept
static void release(C *pObj) noexcept
ScopedLock(M &mutex, long milliseconds)
ScopedLock(const ScopedLock &)
ScopedLock & operator=(const ScopedLock &)
ScopedLockWithUnlock(M &mutex)
ScopedLockWithUnlock & operator=(const ScopedLockWithUnlock &)
ScopedLockWithUnlock(const ScopedLockWithUnlock &)
ScopedLockWithUnlock(M &mutex, long milliseconds)
bool operator!=(const SharedPtr &ptr) const
SharedPtr(SharedPtr &&ptr) noexcept
SharedPtr & operator=(SharedPtr &&ptr) noexcept
SharedPtr< Other, RC, RP > cast() const
bool operator<=(C *ptr) const
bool operator<(const C *ptr) const
bool operator<=(const C *ptr) const
bool operator>=(C *ptr) const
void swap(SharedPtr &ptr)
SharedPtr(const SharedPtr< Other, RC, OtherRP > &ptr)
void reset(const SharedPtr< Other, RC, OtherRP > &ptr)
bool operator==(const SharedPtr &ptr) const
bool operator>=(const C *ptr) const
bool operator!=(const C *ptr) const
bool operator>(C *ptr) const
bool operator>(const C *ptr) const
void reset(const SharedPtr &ptr)
bool operator==(C *ptr) const
bool operator<=(const SharedPtr &ptr) const
bool operator!=(C *ptr) const
bool operator>=(const SharedPtr &ptr) const
bool operator==(std::nullptr_t ptr) const
SharedPtr(const SharedPtr &ptr)
SharedPtr(RC *pCounter, C *ptr)
SharedPtr< Other, RC, RP > unsafeCast() const
SharedPtr & assign(const SharedPtr &ptr)
SharedPtr & operator=(const SharedPtr &ptr)
operator const C *() const
SharedPtr & assign(C *ptr)
const C & operator*() const
const C * operator->() const
int referenceCount() const
SharedPtr & assign(const SharedPtr< Other, RC, OtherRP > &ptr)
bool operator==(const C *ptr) const
bool operator>(const SharedPtr &ptr) const
SharedPtr & operator=(const SharedPtr< Other, RC, OtherRP > &ptr)
bool operator<(const SharedPtr &ptr) const
SharedPtr & operator=(C *ptr)
bool operator<(C *ptr) const
bool operator!=(std::nullptr_t ptr) const
void reset()
Deletes the singleton object.
static std::streamsize copyStream(std::istream &istr, std::ostream &ostr, std::size_t bufferSize=8192)
static std::streamsize copyToString(std::istream &istr, std::string &str, std::size_t bufferSize=8192)
static std::streamsize copyStreamUnbuffered(std::istream &istr, std::ostream &ostr)
Creates and returns a unique id for a thread.
FunctorRunnable(const Functor &functor)
FunctorRunnable(Functor &&functor)
void startFunc(const Functor &fn)
Starts the thread with the given target and parameter.
void start(Poco::SharedPtr< Runnable > pTarget)
std::string makeName()
Clears the thread's local storage.
void start(Callable target, void *pData=0)
void setOSPriority(int prio, int policy=POLICY_DEFAULT)
Returns the thread's priority.
static bool trySleep(long milliseconds)
Returns true if the thread is running.
void setStackSize(int size)
Priority
Thread priorities.
@ PRIO_HIGHEST
A higher than normal thread priority.
@ PRIO_LOW
The lowest thread priority.
@ PRIO_HIGH
The normal thread priority.
@ PRIO_NORMAL
A lower than normal thread priority.
std::string getName() const
Returns the name of the thread.
Thread & operator=(const Thread &)
void join(long milliseconds)
bool tryJoin(long milliseconds)
void startFunc(Functor &&fn)
Starts the thread with the given functor object or lambda.
int id() const
Destroys the thread.
static int uniqueId()
Creates a unique name for a thread.
void clearTLS()
Returns a reference to the thread's local storage.
static int getMaxOSPriority(int policy=POLICY_DEFAULT)
~Thread()
Creates a named thread. Call start() to start it.
static void sleep(long milliseconds)
static Thread * current()
Yields cpu to other threads.
int getOSPriority() const
ThreadLocalStorage * _pTLS
TID tid() const
Returns the unique thread ID of the thread.
Priority getPriority() const
std::string name() const
Returns the native thread ID of the thread.
void start(Runnable &target)
void setPriority(Priority prio)
Sets the name of the thread.
static int getMinOSPriority(int policy=POLICY_DEFAULT)
ThreadLocalStorage & tls()
Returns the native thread ID for the current thread.
void setStackSizeImpl(int size)
void setOSPriorityImpl(int prio, int policy=0)
int getOSPriorityImpl() const
static TIDImpl currentTidImpl()
static int getMaxOSPriorityImpl(int policy)
static void sleepImpl(long milliseconds)
int getStackSizeImpl() const
bool isRunningImpl() const
static int getMinOSPriorityImpl(int policy)
static ThreadImpl * currentImpl()
void startWithPriority(Thread::Priority priority, Runnable &target)
void start(Runnable &target)
Returns the number available threads.
const std::string & name() const
ThreadPool & operator=(const ThreadPool &pool)
static ThreadPool & defaultPool()
ThreadPool(int minCapacity=2, int maxCapacity=16, int idleTime=60, int stackSize=POCO_THREAD_STACK_SIZE)
int used() const
Returns the stack size used to create new threads.
PooledThread * getThread()
PooledThread * createThread()
int allocated() const
Returns the number of currently used threads.
void setStackSize(int stackSize)
Returns the maximum capacity of threads.
ThreadPool(const ThreadPool &pool)
std::vector< PooledThread * > ThreadVec
int available() const
Returns the number of currently allocated threads.
A class that represents time spans up to microsecond resolution.
Timespan(const Timespan ×pan)
Creates a Timespan.
int totalMinutes() const
Returns the number of minutes (0 to 59).
static const TimeDiff SECONDS
The number of microseconds in a millisecond.
bool operator>=(TimeDiff microSeconds) const
bool operator>(TimeDiff microSeconds) const
int seconds() const
Returns the total number of minutes.
Timespan(int days, int hours, int minutes, int seconds, int microSeconds)
Timespan & operator=(TimeDiff microseconds)
Assignment operator.
Timespan operator-(TimeDiff microSeconds) const
bool operator<=(const Timespan &ts) const
static const TimeDiff HOURS
The number of microseconds in a minute.
Timespan & assign(long seconds, long microseconds)
Assigns a new span.
bool operator==(const Timespan &ts) const
Swaps the Timespan with another one.
void swap(Timespan ×pan)
bool operator==(TimeDiff microSeconds) const
TimeDiff _span
The number of microseconds in a day.
Timespan & operator-=(TimeDiff microSeconds)
Timespan(long seconds, long microseconds)
Creates a Timespan.
TimeDiff totalMicroseconds() const
int totalHours() const
Returns the number of hours (0 to 23).
Timespan & operator=(const Timespan ×pan)
Destroys the Timespan.
int totalSeconds() const
Returns the number of seconds (0 to 59).
TimeDiff totalMilliseconds() const
Returns the number of milliseconds (0 to 999).
Timespan & operator-=(const Timespan &d)
bool operator>=(const Timespan &ts) const
int hours() const
Returns the number of days.
Timespan(TimeDiff microseconds)
Creates a zero Timespan.
int minutes() const
Returns the total number of hours.
bool operator!=(const Timespan &ts) const
Timespan operator+(TimeDiff microSeconds) const
bool operator>(const Timespan &ts) const
bool operator<(TimeDiff microSeconds) const
static const TimeDiff DAYS
The number of microseconds in a hour.
int microseconds() const
Returns the total number of milliseconds.
int milliseconds() const
Returns the total number of seconds.
Timespan & operator+=(TimeDiff microSeconds)
static const TimeDiff MINUTES
The number of microseconds in a second.
~Timespan()
Creates a Timespan from another one.
Timespan & operator+=(const Timespan &d)
static const TimeDiff MILLISECONDS
Returns the total number of microseconds.
bool operator<(const Timespan &ts) const
Timespan operator-(const Timespan &d) const
Timespan & assign(int days, int hours, int minutes, int seconds, int microSeconds)
Assignment operator.
Timespan operator+(const Timespan &d) const
bool operator<=(TimeDiff microSeconds) const
bool operator!=(TimeDiff microSeconds) const
Timestamp & operator=(const Timestamp &other)
Destroys the timestamp.
Timestamp & operator+=(TimeDiff d)
Timestamp & operator-=(TimeDiff d)
Timestamp(TimeVal tv)
Creates a timestamp with the current time.
Timestamp & operator=(TimeVal tv)
bool isElapsed(TimeDiff interval) const
static const TimeVal TIMEVAL_MIN
Difference between two TimeVal values in microseconds.
TimeVal epochMicroseconds() const
static Timestamp fromUtcTime(UtcTimeVal val)
Creates a timestamp from a std::time_t.
static TimeDiff resolution()
bool operator<=(const Timestamp &ts) const
Timestamp operator+(const Timespan &span) const
std::time_t epochTime() const
~Timestamp()
Copy constructor.
Timestamp operator-(const Timespan &span) const
bool operator==(const Timestamp &ts) const
Updates the Timestamp with the current time.
bool operator>=(const Timestamp &ts) const
Timestamp & operator-=(const Timespan &span)
UtcTimeVal utcTime() const
Timestamp operator+(TimeDiff d) const
bool operator<(const Timestamp &ts) const
static Timestamp fromEpochTime(std::time_t t)
Timestamp()
Maximum timestamp value.
bool operator!=(const Timestamp &ts) const
static const TimeVal TIMEVAL_MAX
Minimum timestamp value.
TimeDiff operator-(const Timestamp &ts) const
Timestamp & operator+=(const Timespan &span)
bool operator>(const Timestamp &ts) const
Timestamp(const Timestamp &other)
void swap(Timestamp ×tamp)
Timestamp operator-(TimeDiff d) const
void update()
Swaps the Timestamp with another one.
const std::string & getHost() const
Sets the user-info part of the URI.
const std::string & getScheme() const
URI(const std::string &uri)
Creates an empty URI.
unsigned short getPort() const
Sets the host part of the URI.
std::string getPathAndQuery() const
Returns the encoded path, query and fragment parts of the URI.
int COMP_CTX_get_type(const COMP_CTX *comp)
int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, unsigned char *in, int ilen)
int COMP_get_type(const COMP_METHOD *meth)
int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, unsigned char *in, int ilen)
const COMP_METHOD * COMP_CTX_get_method(const COMP_CTX *ctx)
const char * COMP_get_name(const COMP_METHOD *meth)
COMP_CTX * COMP_CTX_new(COMP_METHOD *meth)
void COMP_CTX_free(COMP_CTX *ctx)
COMP_METHOD * COMP_zlib(void)
int ERR_load_COMP_strings(void)
int ERR_load_CRYPTO_strings(void)
const char * CTLOG_get0_name(const CTLOG *log)
void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs)
int SCT_get_signature_nid(const SCT *sct)
int CTLOG_new_from_base64(CTLOG **ct_log, const char *pkey_base64, const char *name)
sct_validation_status_t SCT_get_validation_status(const SCT *sct)
void SCT_LIST_free(STACK_OF(SCT) *a)
__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type)
X509 * CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx)
X509 * CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx)
const CTLOG_STORE * CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx)
uint64_t SCT_get_timestamp(const SCT *sct)
SCT * SCT_new_from_base64(unsigned char version, const char *logid_base64, ct_log_entry_type_t entry_type, uint64_t timestamp, const char *extensions_base64, const char *signature_base64)
const CTLOG * CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, const uint8_t *log_id, size_t log_id_len)
const unsigned char ** pp
const char * SCT_validation_status_string(const SCT *sct)
void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms)
__owur int i2o_SCT(const SCT *sct, unsigned char **out)
size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext)
__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp)
SCT * o2i_SCT(SCT **psct, const unsigned char **in, size_t len)
__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file)
size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id)
__owur int SCT_set_version(SCT *sct, sct_version_t version)
void CTLOG_STORE_free(CTLOG_STORE *store)
__owur int SCT_set_source(SCT *sct, sct_source_t source)
void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len)
void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, CTLOG_STORE *log_store)
CTLOG * CTLOG_new(EVP_PKEY *public_key, const char *name)
int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer)
__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store)
size_t SCT_get0_signature(const SCT *sct, unsigned char **sig)
__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx)
void SCT_set_timestamp(SCT *sct, uint64_t timestamp)
__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len)
ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct)
uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx)
sct_source_t SCT_get_source(const SCT *sct)
EVP_PKEY * CTLOG_get0_public_key(const CTLOG *log)
@ SCT_VALIDATION_STATUS_UNKNOWN_VERSION
@ SCT_VALIDATION_STATUS_UNVERIFIED
@ SCT_VALIDATION_STATUS_INVALID
@ SCT_VALIDATION_STATUS_NOT_SET
@ SCT_VALIDATION_STATUS_UNKNOWN_LOG
@ SCT_VALIDATION_STATUS_VALID
__owur int SCT_set_signature_nid(SCT *sct, int nid)
void CTLOG_free(CTLOG *log)
int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert)
sct_version_t SCT_get_version(const SCT *sct)
__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, size_t ext_len)
@ CT_LOG_ENTRY_TYPE_PRECERT
@ CT_LOG_ENTRY_TYPE_NOT_SET
void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, size_t *log_id_len)
__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp)
@ SCT_SOURCE_X509V3_EXTENSION
@ SCT_SOURCE_TLS_EXTENSION
@ SCT_SOURCE_OCSP_STAPLED_RESPONSE
__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, size_t log_id_len)
CT_POLICY_EVAL_CTX * CT_POLICY_EVAL_CTX_new(void)
const unsigned char size_t len
void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, const char *separator, const CTLOG_STORE *logs)
void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx)
CTLOG_STORE * CTLOG_STORE_new(void)
void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len)
__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, CT_POLICY_EVAL_CTX *ctx)
__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, size_t sig_len)
int ERR_load_CT_strings(void)
const BIGNUM * DH_get0_p(const DH *dh)
int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes)
#define EVP_PKEY_CTRL_DH_KDF_OUTLEN
int i2d_DHxparams(const DH *a, unsigned char **pp)
const BIGNUM * DH_get0_priv_key(const DH *dh)
#define EVP_PKEY_CTRL_DH_PAD
int DH_check_params(const DH *dh, int *ret)
const DH_METHOD * DH_get_default_method(void)
const char * DH_meth_get0_name(const DH_METHOD *dhm)
int i2d_DHparams(const DH *a, unsigned char **pp)
int(*)(unsigned char *key, const BIGNUM *pub_key, DH *dh) DH_meth_get_compute_key(const DH_METHOD *dhm)
int DHparams_print_fp(FILE *fp, const DH *x)
DH * d2i_DHparams(DH **a, const unsigned char **pp, long length)
DH * DH_new_method(ENGINE *engine)
int DH_set_method(DH *dh, const DH_METHOD *meth)
DH * DH_get_2048_224(void)
#define EVP_PKEY_CTRL_DH_KDF_TYPE
int DH_KDF_X9_42(unsigned char *out, size_t outlen, const unsigned char *Z, size_t Zlen, ASN1_OBJECT *key_oid, const unsigned char *ukm, size_t ukmlen, const EVP_MD *md)
int DH_meth_set_compute_key(DH_METHOD *dhm, int(*compute_key)(unsigned char *key, const BIGNUM *pub_key, DH *dh))
#define EVP_PKEY_CTRL_GET_DH_KDF_MD
int(*)(DH *) DH_meth_get_finish(const DH_METHOD *dhm)
int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key)
#define EVP_PKEY_CTRL_DH_KDF_OID
int DH_meth_get_flags(const DH_METHOD *dhm)
void DH_clear_flags(DH *dh, int flags)
int DH_set_ex_data(DH *d, int idx, void *arg)
int DH_test_flags(const DH *dh, int flags)
#define EVP_PKEY_CTRL_GET_DH_KDF_UKM
#define EVP_PKEY_CTRL_DH_NID
int(*)(DH *) DH_meth_get_init(const DH_METHOD *dhm)
void DH_set_default_method(const DH_METHOD *meth)
void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
int DH_security_bits(const DH *dh)
const DH_METHOD * DH_OpenSSL(void)
void DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
DH * DH_new_by_nid(int nid)
int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
int DH_meth_set_init(DH_METHOD *dhm, int(*init)(DH *))
DH * DH_get_2048_256(void)
DH * DH_get_1024_160(void)
int DH_meth_set_generate_key(DH_METHOD *dhm, int(*generate_key)(DH *))
int DH_bits(const DH *dh)
int DH_meth_set_generate_params(DH_METHOD *dhm, int(*generate_params)(DH *, int, int, BN_GENCB *))
void * DH_get_ex_data(DH *d, int idx)
ENGINE * DH_get0_engine(DH *d)
int DHparams_print(BIO *bp, const DH *x)
const BIGNUM * DH_get0_q(const DH *dh)
int DH_get_nid(const DH *dh)
#define EVP_PKEY_CTRL_GET_DH_KDF_OID
int DH_meth_set_bn_mod_exp(DH_METHOD *dhm, int(*bn_mod_exp)(const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *))
int DH_size(const DH *dh)
int DH_meth_set1_name(DH_METHOD *dhm, const char *name)
int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data)
DH * d2i_DHxparams(DH **a, const unsigned char **pp, long length)
#define EVP_PKEY_CTRL_DH_KDF_MD
int DH_meth_set_finish(DH_METHOD *dhm, int(*finish)(DH *))
#define DH_CHECK_P_NOT_SAFE_PRIME
int(*)(DH *, int, int, BN_GENCB *) DH_meth_get_generate_params(const DH_METHOD *dhm)
void DH_meth_free(DH_METHOD *dhm)
#define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR
int DH_generate_key(DH *dh)
DH_METHOD * DH_meth_new(const char *name, int flags)
#define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE
int(*)(const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *) DH_meth_get_bn_mod_exp(const DH_METHOD *dhm)
int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
#define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN
const BIGNUM * DH_get0_pub_key(const DH *dh)
long DH_get_length(const DH *dh)
int(*)(DH *) DH_meth_get_generate_key(const DH_METHOD *dhm)
int DH_set_length(DH *dh, long length)
#define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN
#define EVP_PKEY_CTRL_DH_KDF_UKM
int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh)
#define EVP_PKEY_CTRL_DH_RFC5114
void DH_set_flags(DH *dh, int flags)
#define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN
int DH_check(const DH *dh, int *codes)
void * DH_meth_get0_app_data(const DH_METHOD *dhm)
const BIGNUM * DH_get0_g(const DH *dh)
int DH_meth_set_flags(DH_METHOD *dhm, int flags)
DH_METHOD * DH_meth_dup(const DH_METHOD *dhm)
int DH_check_params_ex(const DH *dh)
int DH_check_ex(const DH *dh)
int ERR_load_DH_strings(void)
void DSA_meth_free(DSA_METHOD *dsam)
DSA_METHOD * DSA_meth_new(const char *name, int flags)
int DSA_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, DSA *dsa)
int(*)(DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *) DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)
int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp)
const BIGNUM * DSA_get0_pub_key(const DSA *d)
int DSA_meth_set_verify(DSA_METHOD *dsam, int(*verify)(const unsigned char *, int, DSA_SIG *, DSA *))
DSA_SIG * DSA_SIG_new(void)
int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key)
int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp)
DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
int DSA_bits(const DSA *d)
int(*)(const unsigned char *, int, DSA_SIG *, DSA *) DSA_meth_get_verify(const DSA_METHOD *dsam)
int DSA_verify(int type, const unsigned char *dgst, int dgst_len, const unsigned char *sigbuf, int siglen, DSA *dsa)
int DSA_meth_set_keygen(DSA_METHOD *dsam, int(*keygen)(DSA *))
int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name)
int(*)(DSA *) DSA_meth_get_init(const DSA_METHOD *dsam)
int const unsigned char int seed_len
int DSA_size(const DSA *)
void DSA_set_default_method(const DSA_METHOD *)
DSA * DSA_new_method(ENGINE *engine)
int const unsigned char * seed
const DSA_METHOD * DSA_get_method(DSA *d)
int DSA_meth_set_flags(DSA_METHOD *dsam, int flags)
void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
DSA_METHOD * DSA_meth_dup(const DSA_METHOD *dsam)
DSA * d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length)
int DSA_meth_set_paramgen(DSA_METHOD *dsam, int(*paramgen)(DSA *, int, const unsigned char *, int, int *, unsigned long *, BN_GENCB *))
int(*)(DSA *) DSA_meth_get_keygen(const DSA_METHOD *dsam)
void DSA_clear_flags(DSA *d, int flags)
int DSA_security_bits(const DSA *d)
int(*)(DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *) DSA_meth_get_mod_exp(const DSA_METHOD *dsam)
#define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS
DH * DSA_dup_DH(const DSA *r)
int DSAparams_print_fp(FILE *fp, const DSA *x)
int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, int(*bn_mod_exp)(DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *))
#define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS
const BIGNUM * DSA_get0_q(const DSA *d)
const BIGNUM * DSA_get0_g(const DSA *d)
int DSA_meth_set_sign(DSA_METHOD *dsam, DSA_SIG *(*sign)(const unsigned char *, int, DSA *))
int const unsigned char int int unsigned long * h_ret
DSA * d2i_DSAparams(DSA **a, const unsigned char **pp, long length)
int DSA_meth_set_finish(DSA_METHOD *dsam, int(*finish)(DSA *))
void * DSA_get_ex_data(DSA *d, int idx)
void DSA_SIG_free(DSA_SIG *a)
int DSAparams_print(BIO *bp, const DSA *x)
DSA * d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length)
int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g)
int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data)
int DSA_meth_set_mod_exp(DSA_METHOD *dsam, int(*mod_exp)(DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *))
const BIGNUM * DSA_get0_priv_key(const DSA *d)
int(*)(DSA *, BN_CTX *, BIGNUM **, BIGNUM **) DSA_meth_get_sign_setup(const DSA_METHOD *dsam)
const BIGNUM * DSA_get0_p(const DSA *d)
int DSA_meth_set_sign_setup(DSA_METHOD *dsam, int(*sign_setup)(DSA *, BN_CTX *, BIGNUM **, BIGNUM **))
const char * DSA_meth_get0_name(const DSA_METHOD *dsam)
void DSA_set_flags(DSA *d, int flags)
const DSA_METHOD * DSA_OpenSSL(void)
int i2d_DSAPublicKey(const DSA *a, unsigned char **pp)
int DSA_generate_key(DSA *a)
void * DSA_meth_get0_app_data(const DSA_METHOD *dsam)
int const unsigned char int int * counter_ret
int DSA_meth_get_flags(const DSA_METHOD *dsam)
struct DSA_SIG_st DSA_SIG
int const unsigned char int int unsigned long BN_GENCB * cb
int DSA_print(BIO *bp, const DSA *x, int off)
void DSA_get0_key(const DSA *d, const BIGNUM **pub_key, const BIGNUM **priv_key)
int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s)
int(*)(DSA *) DSA_meth_get_finish(const DSA_METHOD *dsam)
int DSA_set_method(DSA *dsa, const DSA_METHOD *)
int DSA_meth_set_init(DSA_METHOD *dsam, int(*init)(DSA *))
int DSA_test_flags(const DSA *d, int flags)
ENGINE * DSA_get0_engine(DSA *d)
int DSA_set_ex_data(DSA *d, int idx, void *arg)
int DSA_print_fp(FILE *bp, const DSA *x, int off)
#define EVP_PKEY_CTRL_DSA_PARAMGEN_MD
DSA_SIG * d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length)
const DSA_METHOD * DSA_get_default_method(void)
void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
int i2d_DSAparams(const DSA *a, unsigned char **pp)
int(*)(DSA *, int, const unsigned char *, int, int *, unsigned long *, BN_GENCB *) DSA_meth_get_paramgen(const DSA_METHOD *dsam)
DSA * DSAparams_dup(DSA *x)
int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, unsigned int *siglen, DSA *dsa)
int ERR_load_DSA_strings(void)
int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, unsigned int *k2, unsigned int *k3)
unsigned EC_KEY_get_enc_flags(const EC_KEY *key)
int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp)
int EC_curve_nist2nid(const char *name)
ECDSA_SIG * d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len)
ECDSA_SIG * ECDSA_SIG_new(void)
EC_GROUP * EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params)
void EC_GROUP_clear_free(EC_GROUP *group)
size_t EC_KEY_priv2oct(const EC_KEY *key, unsigned char *buf, size_t len)
const EC_METHOD * EC_GFp_mont_method(void)
void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, int(*ckey)(unsigned char **psec, size_t *pseclen, const EC_POINT *pub_key, const EC_KEY *ecdh))
const EC_POINT * EC_KEY_get0_public_key(const EC_KEY *key)
int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, EC_POINT *points[], BN_CTX *ctx)
size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, point_conversion_form_t form, unsigned char **pbuf, BN_CTX *ctx)
int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
EC_POINT const BIGNUM const BIGNUM BN_CTX *ctx EC_POINT const BIGNUM int BN_CTX *ctx size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, point_conversion_form_t form, unsigned char *buf, size_t len, BN_CTX *ctx)
size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf)
EC_KEY * d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len)
struct ecpk_parameters_st ECPKPARAMETERS
int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, int(**pinit)(EC_KEY *key), void(**pfinish)(EC_KEY *key), int(**pcopy)(EC_KEY *dest, const EC_KEY *src), int(**pset_group)(EC_KEY *key, const EC_GROUP *grp), int(**pset_private)(EC_KEY *key, const BIGNUM *priv_key), int(**pset_public)(EC_KEY *key, const EC_POINT *pub_key))
BIGNUM BIGNUM BIGNUM BN_CTX *ctx BIGNUM BIGNUM BIGNUM BN_CTX *ctx int EC_GROUP_get_degree(const EC_GROUP *group)
void EC_KEY_set_default_method(const EC_KEY_METHOD *meth)
int EC_KEY_up_ref(EC_KEY *key)
void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, int(*init)(EC_KEY *key), void(*finish)(EC_KEY *key), int(*copy)(EC_KEY *dest, const EC_KEY *src), int(*set_group)(EC_KEY *key, const EC_GROUP *grp), int(*set_private)(EC_KEY *key, const BIGNUM *priv_key), int(*set_public)(EC_KEY *key, const EC_POINT *pub_key))
void EC_KEY_METHOD_free(EC_KEY_METHOD *meth)
int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, unsigned char *sig, unsigned int *siglen, EC_KEY *eckey)
ENGINE * EC_KEY_get0_engine(const EC_KEY *eckey)
#define EVP_PKEY_CTRL_EC_KDF_TYPE
BN_MONT_CTX * EC_GROUP_get_mont_data(const EC_GROUP *group)
#define EVP_PKEY_CTRL_GET1_ID_LEN
int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num, const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx)
int EC_GROUP_order_bits(const EC_GROUP *group)
const BIGNUM * EC_GROUP_get0_order(const EC_GROUP *group)
EC_KEY * o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len)
EC_GROUP * EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
const BIGNUM * ECDSA_SIG_get0_r(const ECDSA_SIG *sig)
void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, int(**psign)(int type, const unsigned char *dgst, int dlen, unsigned char *sig, unsigned int *siglen, const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey), int(**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp), ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, int dgst_len, const BIGNUM *in_kinv, const BIGNUM *in_r, EC_KEY *eckey))
int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out)
#define EVP_PKEY_CTRL_GET1_ID
const EC_METHOD * EC_GFp_nist_method(void)
const BIGNUM * EC_GROUP_get0_cofactor(const EC_GROUP *group)
void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform)
int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group)
const EC_KEY_METHOD * EC_KEY_OpenSSL(void)
#define EVP_PKEY_ECDH_KDF_X9_63
void EC_KEY_clear_flags(EC_KEY *key, int flags)
EC_KEY * EC_KEY_new_by_curve_name(int nid)
int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p, const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *ctx)
#define EVP_PKEY_CTRL_EC_PARAM_ENC
int ECParameters_print_fp(FILE *fp, const EC_KEY *key)
unsigned char * EC_GROUP_get0_seed(const EC_GROUP *x)
EC_KEY * EC_KEY_copy(EC_KEY *dst, const EC_KEY *src)
int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, const unsigned char *buf, size_t len, BN_CTX *ctx)
const BIGNUM * EC_KEY_get0_private_key(const EC_KEY *key)
ECDSA_SIG * ECDSA_do_sign(const unsigned char *dgst, int dgst_len, EC_KEY *eckey)
const BIGNUM * ECDSA_SIG_get0_s(const ECDSA_SIG *sig)
int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y)
const EC_GROUP * EC_KEY_get0_group(const EC_KEY *key)
int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx)
struct ec_parameters_st ECPARAMETERS
void EC_GROUP_set_point_conversion_form(EC_GROUP *group, point_conversion_form_t form)
int ECParameters_print(BIO *bp, const EC_KEY *key)
int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out)
#define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN
const EC_POINT * EC_GROUP_get0_generator(const EC_GROUP *group)
int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, unsigned char *sig, unsigned int *siglen, const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey)
#define EVP_PKEY_CTRL_EC_KDF_MD
int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src)
ECDSA_SIG * ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey)
int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor)
int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off)
int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx)
int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx)
size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems)
int EC_KEY_get_flags(const EC_KEY *key)
#define EVP_PKEY_CTRL_EC_KDF_OUTLEN
int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth)
int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx)
void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag)
int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx)
char * EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, point_conversion_form_t form, BN_CTX *)
void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, int(**pck)(unsigned char **psec, size_t *pseclen, const EC_POINT *pub_key, const EC_KEY *ecdh))
EC_GROUP * d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len)
void EC_GROUP_set_curve_name(EC_GROUP *group, int nid)
const char * EC_curve_nid2nist(int nid)
int EC_KEY_generate_key(EC_KEY *key)
#define EVP_PKEY_CTRL_EC_ECDH_COFACTOR
struct ECDSA_SIG_st ECDSA_SIG
EC_GROUP * EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
EC_GROUP * EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params)
int EC_GROUP_get_asn1_flag(const EC_GROUP *group)
int EC_KEY_decoded_from_explicit_params(const EC_KEY *key)
EC_POINT * EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, EC_POINT *, BN_CTX *)
const EC_METHOD * EC_GFp_simple_method(void)
int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off)
int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src)
void EC_GROUP_free(EC_GROUP *group)
void EC_POINT_free(EC_POINT *point)
ECPARAMETERS * EC_GROUP_get_ecparameters(const EC_GROUP *group, ECPARAMETERS *params)
EC_GROUP * EC_GROUP_new_by_curve_name(int nid)
EC_POINT * EC_POINT_new(const EC_GROUP *group)
const EC_METHOD * EC_GF2m_simple_method(void)
EC_KEY * EC_KEY_new(void)
EC_POINT * EC_POINT_hex2point(const EC_GROUP *, const char *, EC_POINT *, BN_CTX *)
int ECDSA_size(const EC_KEY *eckey)
int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx)
const EC_METHOD * EC_POINT_method_of(const EC_POINT *point)
int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p)
BIGNUM * EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, point_conversion_form_t form, BIGNUM *, BN_CTX *)
int EC_KEY_can_sign(const EC_KEY *eckey)
void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag)
const EC_KEY_METHOD * EC_KEY_get_method(const EC_KEY *key)
void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, int(*verify)(int type, const unsigned char *dgst, int dgst_len, const unsigned char *sigbuf, int sig_len, EC_KEY *eckey), int(*verify_sig)(const unsigned char *dgst, int dgst_len, const ECDSA_SIG *sig, EC_KEY *eckey))
const EC_KEY_METHOD * EC_KEY_get_default_method(void)
int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, size_t len, BN_CTX *ctx)
const EC_POINT BIGNUM BIGNUM BN_CTX *ctx int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, const BIGNUM *x, int y_bit, BN_CTX *ctx)
void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, int(**pverify)(int type, const unsigned char *dgst, int dgst_len, const unsigned char *sigbuf, int sig_len, EC_KEY *eckey), int(**pverify_sig)(const unsigned char *dgst, int dgst_len, const ECDSA_SIG *sig, EC_KEY *eckey))
int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx)
void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
EC_GROUP * EC_GROUP_dup(const EC_GROUP *src)
@ POINT_CONVERSION_UNCOMPRESSED
@ POINT_CONVERSION_COMPRESSED
@ POINT_CONVERSION_HYBRID
int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx)
int i2d_ECParameters(EC_KEY *key, unsigned char **out)
int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg)
EC_POINT * EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group)
const EC_METHOD * EC_GROUP_method_of(const EC_GROUP *group)
int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx)
EC_KEY_METHOD * EC_KEY_METHOD_new(const EC_KEY_METHOD *meth)
void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, int(*keygen)(EC_KEY *key))
const EC_POINT BIGNUM * x
void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, int(**pkeygen)(EC_KEY *key))
#define EVP_PKEY_CTRL_EC_KDF_UKM
EC_KEY * d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len)
int EC_GROUP_get_basis_type(const EC_GROUP *)
void EC_POINT_clear_free(EC_POINT *point)
int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, const EC_KEY *ecdh, void *(*KDF)(const void *in, size_t inlen, void *out, size_t *outlen))
int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub)
struct ec_point_st EC_POINT
int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx)
#define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID
int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point)
void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags)