2
3
4
5
6
7
8
13# include <openssl/e_os2.h>
15# ifndef OPENSSL_NO_STDIO
20# include <openssl/crypto.h>
21# include <openssl/bioerr.h>
28# define BIO_TYPE_DESCRIPTOR 0x0100
29# define BIO_TYPE_FILTER 0x0200
30# define BIO_TYPE_SOURCE_SINK 0x0400
33# define BIO_TYPE_NONE 0
56# define BIO_TYPE_DGRAM_SCTP (24
|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
59#define BIO_TYPE_START 128
62
63
64
65# define BIO_NOCLOSE 0x00
66# define BIO_CLOSE 0x01
69
70
71# define BIO_CTRL_RESET 1
72# define BIO_CTRL_EOF 2
73# define BIO_CTRL_INFO 3
74# define BIO_CTRL_SET 4
75# define BIO_CTRL_GET 5
76# define BIO_CTRL_PUSH 6
77# define BIO_CTRL_POP 7
78# define BIO_CTRL_GET_CLOSE 8
79# define BIO_CTRL_SET_CLOSE 9
80# define BIO_CTRL_PENDING 10
81# define BIO_CTRL_FLUSH 11
82# define BIO_CTRL_DUP 12
83# define BIO_CTRL_WPENDING 13
84# define BIO_CTRL_SET_CALLBACK 14
85# define BIO_CTRL_GET_CALLBACK 15
87# define BIO_CTRL_PEEK 29
88# define BIO_CTRL_SET_FILENAME 30
91# define BIO_CTRL_DGRAM_CONNECT 31
92# define BIO_CTRL_DGRAM_SET_CONNECTED 32
94# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33
95# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34
96# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35
97# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36
99# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37
100# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38
103# define BIO_CTRL_DGRAM_MTU_DISCOVER 39
106# define BIO_CTRL_DGRAM_QUERY_MTU 40
107# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47
108# define BIO_CTRL_DGRAM_GET_MTU 41
109# define BIO_CTRL_DGRAM_SET_MTU 42
111
113# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43
114
117# define BIO_CTRL_DGRAM_GET_PEER 46
118# define BIO_CTRL_DGRAM_SET_PEER 44
120# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45
122# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48
124# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49
127# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50
130# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51
131# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52
132# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53
133# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60
134# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61
135# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62
136# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63
137# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64
138# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65
139# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70
142# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71
145# define BIO_FP_READ 0x02
146# define BIO_FP_WRITE 0x04
147# define BIO_FP_APPEND 0x08
148# define BIO_FP_TEXT 0x10
150# define BIO_FLAGS_READ 0x01
151# define BIO_FLAGS_WRITE 0x02
152# define BIO_FLAGS_IO_SPECIAL 0x04
154# define BIO_FLAGS_SHOULD_RETRY 0x08
155# ifndef BIO_FLAGS_UPLINK
158
159
160# define BIO_FLAGS_UPLINK 0
163# define BIO_FLAGS_BASE64_NO_NL 0x100
167
170# define BIO_FLAGS_MEM_RDONLY 0x200
171# define BIO_FLAGS_NONCLEAR_RST 0x400
172# define BIO_FLAGS_IN_EOF 0x800
174typedef union bio_addr_st BIO_ADDR;
175typedef struct bio_addrinfo_st BIO_ADDRINFO;
177int BIO_get_new_index(
void);
178void BIO_set_flags(
BIO *b,
int flags);
179int BIO_test_flags(
const BIO *b,
int flags);
180void BIO_clear_flags(
BIO *b,
int flags);
182# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0
))
183# define BIO_set_retry_special(b)
185# define BIO_set_retry_read(b)
187# define BIO_set_retry_write(b)
191# define BIO_clear_retry_flags(b)
193# define BIO_get_retry_flags(b)
204
205
206
208
212
213# define BIO_RR_SSL_X509_LOOKUP 0x01
215# define BIO_RR_CONNECT 0x02
217# define BIO_RR_ACCEPT 0x03
220# define BIO_CB_FREE 0x01
221# define BIO_CB_READ 0x02
222# define BIO_CB_WRITE 0x03
223# define BIO_CB_PUTS 0x04
224# define BIO_CB_GETS 0x05
225# define BIO_CB_CTRL 0x06
229
231# define BIO_CB_RETURN 0x80
236typedef long (*BIO_callback_fn)(
BIO *b,
int oper,
const char *argp,
int argi,
237 long argl,
long ret);
238typedef long (*BIO_callback_fn_ex)(
BIO *b,
int oper,
const char *argp,
239 size_t len,
int argi,
240 long argl,
int ret, size_t *processed);
241BIO_callback_fn BIO_get_callback(
const BIO *b);
242void BIO_set_callback(
BIO *b, BIO_callback_fn callback);
244BIO_callback_fn_ex BIO_get_callback_ex(
const BIO *b);
245void BIO_set_callback_ex(
BIO *b, BIO_callback_fn_ex callback);
247char *BIO_get_callback_arg(
const BIO *b);
248void BIO_set_callback_arg(
BIO *b,
char *arg);
250typedef struct bio_method_st BIO_METHOD;
252const char *BIO_method_name(
const BIO *b);
253int BIO_method_type(
const BIO *b);
255typedef int BIO_info_cb(
BIO *,
int,
int);
256typedef BIO_info_cb bio_info_cb;
261typedef int asn1_ps_func (
BIO *b,
unsigned char **pbuf,
int *plen,
266struct bio_dgram_sctp_sndinfo {
270 uint32_t snd_context;
273struct bio_dgram_sctp_rcvinfo {
280 uint32_t rcv_context;
283struct bio_dgram_sctp_prinfo {
290
293# define BIO_C_SET_CONNECT 100
294# define BIO_C_DO_STATE_MACHINE 101
295# define BIO_C_SET_NBIO 102
297# define BIO_C_SET_FD 104
298# define BIO_C_GET_FD 105
299# define BIO_C_SET_FILE_PTR 106
300# define BIO_C_GET_FILE_PTR 107
301# define BIO_C_SET_FILENAME 108
302# define BIO_C_SET_SSL 109
303# define BIO_C_GET_SSL 110
304# define BIO_C_SET_MD 111
305# define BIO_C_GET_MD 112
306# define BIO_C_GET_CIPHER_STATUS 113
307# define BIO_C_SET_BUF_MEM 114
308# define BIO_C_GET_BUF_MEM_PTR 115
309# define BIO_C_GET_BUFF_NUM_LINES 116
310# define BIO_C_SET_BUFF_SIZE 117
311# define BIO_C_SET_ACCEPT 118
312# define BIO_C_SSL_MODE 119
313# define BIO_C_GET_MD_CTX 120
315# define BIO_C_SET_BUFF_READ_DATA 122
316# define BIO_C_GET_CONNECT 123
317# define BIO_C_GET_ACCEPT 124
318# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
319# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
320# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
321# define BIO_C_FILE_SEEK 128
322# define BIO_C_GET_CIPHER_CTX 129
323# define BIO_C_SET_BUF_MEM_EOF_RETURN 130
325# define BIO_C_SET_BIND_MODE 131
326# define BIO_C_GET_BIND_MODE 132
327# define BIO_C_FILE_TELL 133
328# define BIO_C_GET_SOCKS 134
329# define BIO_C_SET_SOCKS 135
331# define BIO_C_SET_WRITE_BUF_SIZE 136
332# define BIO_C_GET_WRITE_BUF_SIZE 137
333# define BIO_C_MAKE_BIO_PAIR 138
334# define BIO_C_DESTROY_BIO_PAIR 139
335# define BIO_C_GET_WRITE_GUARANTEE 140
336# define BIO_C_GET_READ_REQUEST 141
337# define BIO_C_SHUTDOWN_WR 142
338# define BIO_C_NREAD0 143
339# define BIO_C_NREAD 144
340# define BIO_C_NWRITE0 145
341# define BIO_C_NWRITE 146
342# define BIO_C_RESET_READ_REQUEST 147
343# define BIO_C_SET_MD_CTX 148
345# define BIO_C_SET_PREFIX 149
346# define BIO_C_GET_PREFIX 150
347# define BIO_C_SET_SUFFIX 151
348# define BIO_C_GET_SUFFIX 152
350# define BIO_C_SET_EX_ARG 153
351# define BIO_C_GET_EX_ARG 154
353# define BIO_C_SET_CONNECT_MODE 155
355# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0
,arg)
356# define BIO_get_app_data(s) BIO_get_ex_data(s,0
)
360# ifndef OPENSSL_NO_SOCK
363# define BIO_FAMILY_IPV4 4
364# define BIO_FAMILY_IPV6 6
365# define BIO_FAMILY_IPANY 256
386# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0
))
389# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3
))
398# define BIO_BIND_NORMAL 0
412# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
424
425
426
429
431
432int BIO_read_filename(BIO *b,
const char *name);
447
449
451# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0
,(char *)(sslp))
452# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL
)
453# define BIO_set_ssl_renegotiate_bytes(b,num)
455# define BIO_get_num_renegotiates(b)
457# define BIO_set_ssl_renegotiate_timeout(b,seconds)
463# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0
,(char *)(pp))
467# define BIO_set_mem_eof_return(b,v)
487size_t BIO_ctrl_pending(
BIO *b);
488size_t BIO_ctrl_wpending(
BIO *b);
507size_t BIO_ctrl_get_write_guarantee(
BIO *b);
508size_t BIO_ctrl_get_read_request(
BIO *b);
509int BIO_ctrl_reset_read_request(
BIO *b);
512# define BIO_ctrl_dgram_connect(b,peer)
514# define BIO_ctrl_set_connected(b,peer)
516# define BIO_dgram_recv_timedout(b)
518# define BIO_dgram_send_timedout(b)
520# define BIO_dgram_get_peer(b,peer)
522# define BIO_dgram_set_peer(b,peer)
524# define BIO_dgram_get_mtu_overhead(b)
527#define BIO_get_ex_new_index(l, p, newf, dupf, freef)
529int BIO_set_ex_data(
BIO *bio,
int idx,
void *data);
530void *BIO_get_ex_data(
BIO *bio,
int idx);
531uint64_t BIO_number_read(
BIO *bio);
532uint64_t BIO_number_written(
BIO *bio);
535int BIO_asn1_set_prefix(
BIO *b, asn1_ps_func *prefix,
536 asn1_ps_func *prefix_free);
537int BIO_asn1_get_prefix(
BIO *b, asn1_ps_func **pprefix,
538 asn1_ps_func **pprefix_free);
539int BIO_asn1_set_suffix(
BIO *b, asn1_ps_func *suffix,
540 asn1_ps_func *suffix_free);
541int BIO_asn1_get_suffix(
BIO *b, asn1_ps_func **psuffix,
542 asn1_ps_func **psuffix_free);
544const BIO_METHOD *BIO_s_file(
void);
545BIO *BIO_new_file(
const char *filename,
const char *mode);
546# ifndef OPENSSL_NO_STDIO
547BIO *BIO_new_fp(FILE *stream,
int close_flag);
549BIO *BIO_new(
const BIO_METHOD *type);
551void BIO_set_data(
BIO *a,
void *ptr);
552void *BIO_get_data(
BIO *a);
553void BIO_set_init(
BIO *a,
int init);
555void BIO_set_shutdown(
BIO *a,
int shut);
556int BIO_get_shutdown(
BIO *a);
559int BIO_read(
BIO *b,
void *data,
int dlen);
560int BIO_read_ex(
BIO *b,
void *data, size_t dlen, size_t *readbytes);
561int BIO_gets(
BIO *bp,
char *buf,
int size);
562int BIO_write(
BIO *b,
const void *data,
int dlen);
563int BIO_write_ex(
BIO *b,
const void *data, size_t dlen, size_t *written);
564int BIO_puts(
BIO *bp,
const char *buf);
565int BIO_indent(
BIO *b,
int indent,
int max);
566long BIO_ctrl(
BIO *bp,
int cmd,
long larg,
void *parg);
567long BIO_callback_ctrl(
BIO *b,
int cmd, BIO_info_cb *fp);
568void *BIO_ptr_ctrl(
BIO *bp,
int cmd,
long larg);
569long BIO_int_ctrl(
BIO *bp,
int cmd,
long larg,
int iarg);
573BIO *BIO_find_type(
BIO *b,
int bio_type);
576BIO *BIO_get_retry_BIO(
BIO *bio,
int *reason);
577int BIO_get_retry_reason(
BIO *bio);
578void BIO_set_retry_reason(
BIO *bio,
int reason);
581int BIO_nread0(
BIO *bio,
char **buf);
582int BIO_nread(
BIO *bio,
char **buf,
int num);
583int BIO_nwrite0(
BIO *bio,
char **buf);
584int BIO_nwrite(
BIO *bio,
char **buf,
int num);
586long BIO_debug_callback(
BIO *bio,
int cmd,
const char *argp,
int argi,
587 long argl,
long ret);
589const BIO_METHOD *BIO_s_mem(
void);
590const BIO_METHOD *BIO_s_secmem(
void);
591BIO *BIO_new_mem_buf(
const void *buf,
int len);
592# ifndef OPENSSL_NO_SOCK
593const BIO_METHOD *BIO_s_socket(
void);
594const BIO_METHOD *BIO_s_connect(
void);
595const BIO_METHOD *BIO_s_accept(
void);
597const BIO_METHOD *BIO_s_fd(
void);
598const BIO_METHOD *BIO_s_log(
void);
599const BIO_METHOD *BIO_s_bio(
void);
600const BIO_METHOD *BIO_s_null(
void);
601const BIO_METHOD *BIO_f_null(
void);
602const BIO_METHOD *BIO_f_buffer(
void);
603const BIO_METHOD *BIO_f_linebuffer(
void);
604const BIO_METHOD *BIO_f_nbio_test(
void);
605# ifndef OPENSSL_NO_DGRAM
606const BIO_METHOD *BIO_s_datagram(
void);
607int BIO_dgram_non_fatal_error(
int error);
608BIO *BIO_new_dgram(
int fd,
int close_flag);
610const BIO_METHOD *BIO_s_datagram_sctp(
void);
611BIO *BIO_new_dgram_sctp(
int fd,
int close_flag);
612int BIO_dgram_is_sctp(BIO *bio);
613int BIO_dgram_sctp_notification_cb(BIO *b,
614 void (*handle_notifications) (BIO *bio,
618int BIO_dgram_sctp_wait_for_dry(BIO *b);
619int BIO_dgram_sctp_msg_waiting(BIO *b);
623# ifndef OPENSSL_NO_SOCK
624int BIO_sock_should_retry(
int i);
625int BIO_sock_non_fatal_error(
int error);
628int BIO_fd_should_retry(
int i);
629int BIO_fd_non_fatal_error(
int error);
630int BIO_dump_cb(
int (*cb) (
const void *data, size_t len,
void *u),
631 void *u,
const char *s,
int len);
632int BIO_dump_indent_cb(
int (*cb) (
const void *data, size_t len,
void *u),
633 void *u,
const char *s,
int len,
int indent);
634int BIO_dump(
BIO *b,
const char *bytes,
int len);
635int BIO_dump_indent(
BIO *b,
const char *bytes,
int len,
int indent);
636# ifndef OPENSSL_NO_STDIO
637int BIO_dump_fp(FILE *fp,
const char *s,
int len);
638int BIO_dump_indent_fp(FILE *fp,
const char *s,
int len,
int indent);
640int BIO_hex_string(
BIO *out,
int indent,
int width,
unsigned char *data,
643# ifndef OPENSSL_NO_SOCK
644BIO_ADDR *BIO_ADDR_new(
void);
645int BIO_ADDR_rawmake(BIO_ADDR *ap,
int family,
646 const void *where, size_t wherelen,
unsigned short port);
647void BIO_ADDR_free(BIO_ADDR *);
648void BIO_ADDR_clear(BIO_ADDR *ap);
649int BIO_ADDR_family(
const BIO_ADDR *ap);
650int BIO_ADDR_rawaddress(
const BIO_ADDR *ap,
void *p, size_t *l);
651unsigned short BIO_ADDR_rawport(
const BIO_ADDR *ap);
652char *BIO_ADDR_hostname_string(
const BIO_ADDR *ap,
int numeric);
653char *BIO_ADDR_service_string(
const BIO_ADDR *ap,
int numeric);
654char *BIO_ADDR_path_string(
const BIO_ADDR *ap);
656const BIO_ADDRINFO *BIO_ADDRINFO_next(
const BIO_ADDRINFO *bai);
657int BIO_ADDRINFO_family(
const BIO_ADDRINFO *bai);
658int BIO_ADDRINFO_socktype(
const BIO_ADDRINFO *bai);
659int BIO_ADDRINFO_protocol(
const BIO_ADDRINFO *bai);
660const BIO_ADDR *BIO_ADDRINFO_address(
const BIO_ADDRINFO *bai);
661void BIO_ADDRINFO_free(BIO_ADDRINFO *bai);
663enum BIO_hostserv_priorities {
664 BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV
666int BIO_parse_hostserv(
const char *hostserv,
char **host,
char **service,
667 enum BIO_hostserv_priorities hostserv_prio);
668enum BIO_lookup_type {
669 BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER
671int BIO_lookup(
const char *host,
const char *service,
672 enum BIO_lookup_type lookup_type,
673 int family,
int socktype, BIO_ADDRINFO **res);
674int BIO_lookup_ex(
const char *host,
const char *service,
675 int lookup_type,
int family,
int socktype,
int protocol,
677int BIO_sock_error(
int sock);
678int BIO_socket_ioctl(
int fd,
long type,
void *arg);
679int BIO_socket_nbio(
int fd,
int mode);
680int BIO_sock_init(
void);
682# define BIO_sock_cleanup() while(0
) continue
684int BIO_set_tcp_ndelay(
int sock,
int turn_on);
692union BIO_sock_info_u {
695enum BIO_sock_info_type {
696 BIO_SOCK_INFO_ADDRESS
698int BIO_sock_info(
int sock,
699 enum BIO_sock_info_type type,
union BIO_sock_info_u *info);
701# define BIO_SOCK_REUSEADDR 0x01
702# define BIO_SOCK_V6_ONLY 0x02
703# define BIO_SOCK_KEEPALIVE 0x04
704# define BIO_SOCK_NONBLOCK 0x08
705# define BIO_SOCK_NODELAY 0x10
707int BIO_socket(
int domain,
int socktype,
int protocol,
int options);
708int BIO_connect(
int sock,
const BIO_ADDR *addr,
int options);
709int BIO_bind(
int sock,
const BIO_ADDR *addr,
int options);
710int BIO_listen(
int sock,
const BIO_ADDR *addr,
int options);
711int BIO_accept_ex(
int accept_sock, BIO_ADDR *addr,
int options);
712int BIO_closesocket(
int sock);
714BIO *BIO_new_socket(
int sock,
int close_flag);
715BIO *BIO_new_connect(
const char *host_port);
716BIO *BIO_new_accept(
const char *host_port);
719BIO *BIO_new_fd(
int fd,
int close_flag);
721int BIO_new_bio_pair(
BIO **bio1, size_t writebuf1,
722 BIO **bio2, size_t writebuf2);
724
725
726
727
729void BIO_copy_next_retry(
BIO *b);
732
733
735# define ossl_bio__attr__(x)
736# if defined(__GNUC__) && defined(__STDC_VERSION__)
737 && !defined(__APPLE__)
739
740
741
742# if __STDC_VERSION__ >= 199901L
743# undef ossl_bio__attr__
744# define ossl_bio__attr__ __attribute__
745# if __GNUC__*10
+ __GNUC_MINOR__ >= 44
746# define ossl_bio__printf__ __gnu_printf__
748# define ossl_bio__printf__ __printf__
752int BIO_printf(
BIO *bio,
const char *format, ...)
754int BIO_vprintf(
BIO *bio,
const char *format, va_list args)
756int BIO_snprintf(
char *buf, size_t n,
const char *format, ...)
758int BIO_vsnprintf(
char *buf, size_t n,
const char *format, va_list args)
760# undef ossl_bio__attr__
761# undef ossl_bio__printf__
764BIO_METHOD *BIO_meth_new(
int type,
const char *name);
765void BIO_meth_free(BIO_METHOD *biom);
769int BIO_meth_set_write(BIO_METHOD *biom,
770 int (*write) (
BIO *,
const char *,
int));
771int BIO_meth_set_write_ex(BIO_METHOD *biom,
773int (*BIO_meth_get_read(
const BIO_METHOD *biom)) (
BIO *,
char *,
int);
774int (*BIO_meth_get_read_ex(
const BIO_METHOD *biom)) (
BIO *,
char *, size_t, size_t *);
776 int (*read) (
BIO *,
char *,
int));
777int BIO_meth_set_read_ex(BIO_METHOD *biom,
778 int (*bread) (
BIO *,
char *, size_t, size_t *));
779int (*BIO_meth_get_puts(
const BIO_METHOD *biom)) (
BIO *,
const char *);
780int BIO_meth_set_puts(BIO_METHOD *biom,
782int (*BIO_meth_get_gets(
const BIO_METHOD *biom)) (
BIO *,
char *,
int);
784 int (*gets) (
BIO *,
char *,
int));
786int BIO_meth_set_ctrl(BIO_METHOD *biom,
787 long (*ctrl) (
BIO *,
int,
long,
void *));
788int (*BIO_meth_get_create(
const BIO_METHOD *bion)) (
BIO *);
789int BIO_meth_set_create(BIO_METHOD *biom,
int (*create) (
BIO *));
790int (*BIO_meth_get_destroy(
const BIO_METHOD *biom)) (
BIO *);
791int BIO_meth_set_destroy(BIO_METHOD *biom,
int (*destroy) (
BIO *));
792long (*BIO_meth_get_callback_ctrl(
const BIO_METHOD *biom))
793 (
BIO *,
int, BIO_info_cb *);
794int BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
795 long (*callback_ctrl) (
BIO *,
int,
#define poco_unexpected()
#define poco_assert_dbg(cond)
#define POCO_EXTERNAL_OPENSSL
#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)
#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
#define ASN1_d2i_bio_of(type, xnew, d2i, in, x)
#define ASN1_i2d_bio_of(type, i2d, out, x)
#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_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_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
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()
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.
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)
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)
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).
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.
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 &)
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)
virtual std::istream & receiveResponse(HTTPResponse &response)
virtual std::ostream & sendRequest(HTTPRequest &request)
Returns the connection timeout for HTTP connections.
static const std::string HTTP_1_1
void setContentLength(std::streamsize length)
Returns the HTTP version for this message.
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)
bool _handleErrorsOnServerSide
InvalidCertificateHandler(bool handleErrorsOnServerSide)
virtual void onInvalidCertificate(const void *pSender, VerificationErrorArgs &errorCert)=0
Destroys the InvalidCertificateHandler.
virtual ~InvalidCertificateHandler()
RejectCertificateHandler(bool handleErrorsOnServerSide)
void initializeClient(PrivateKeyPassphraseHandlerPtr ptrPassphraseHandler, InvalidCertificateHandlerPtr ptrHandler, Context::Ptr ptrContext)
static SSLManager & instance()
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.
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.
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
static std::streamsize copyStream(std::istream &istr, std::ostream &ostr, std::size_t bufferSize=8192)
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)
std::unique_ptr< IBaseApi > game_api
void Crypto_API uninitializeCrypto()
void Crypto_API initializeCrypto()
std::vector< SocketBuf > SocketBufVec
void NetSSL_API initializeSSL()
void Net_API uninitializeNetwork()
void Net_API initializeNetwork()
void NetSSL_API uninitializeSSL()
void swap(Timestamp &s1, Timestamp &s2)
void swap(SharedPtr< C, RC, RP > &p1, SharedPtr< C, RC, RP > &p2)
void swap(DateTime &d1, DateTime &d2)
void swap(Timespan &s1, Timespan &s2)
SharedPtr< T, ReferenceCounter, ReleaseArrayPolicy< T > > makeSharedArray(std::size_t size)
SharedPtr< T > makeShared(Args &&... args)
void format_arg(BasicFormatter< char, ArgFormatter > &f, const char *&format_str, const std::tm &tm)
int CRYPTO_secure_malloc_done(void)
int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b)
void OPENSSL_thread_stop(void)
void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad)
int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock)
void CRYPTO_EX_new(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int idx, long argl, void *argp)
size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz)
int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock)
void * CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx)
int CRYPTO_mem_ctrl(int mode)
void * CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, const char *file, int line)
void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, unsigned long flags)
int CRYPTO_set_mem_functions(void *(*m)(size_t, const char *, int), void *(*r)(void *, size_t, const char *, int), void(*f)(void *, const char *, int))
#define OPENSSL_INIT_ENGINE_PADLOCK
int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec)
#define OPENSSL_INIT_ENGINE_RDRAND
void OPENSSL_cleanse(void *ptr, size_t len)
int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad)
unsigned long OpenSSL_version_num(void)
int OPENSSL_isservice(void)
int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void(*cleanup)(void *))
void CRYPTO_free(void *ptr, const char *file, int line)
int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, const char *config_filename)
size_t OPENSSL_strnlen(const char *str, size_t maxlen)
int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock)
unsigned char * OPENSSL_hexstr2buf(const char *str, long *len)
int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
#define CRYPTO_EX_INDEX_SSL_CTX
#define OPENSSL_INIT_LOAD_CRYPTO_STRINGS
int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val)
void CRYPTO_get_mem_functions(void *(**m)(size_t, const char *, int), void *(**r)(void *, size_t, const char *, int), void(**f)(void *, const char *, int))
int OPENSSL_atexit(void(*handler)(void))
void * CRYPTO_malloc(size_t num, const char *file, int line)
int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key)
int CRYPTO_secure_allocated(const void *ptr)
int CRYPTO_secure_malloc_init(size_t sz, int minsize)
int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void(*init)(void))
char * CRYPTO_strdup(const char *str, const char *file, int line)
char * CRYPTO_strndup(const char *str, size_t s, const char *file, int line)
size_t CRYPTO_secure_actual_size(void *ptr)
void * CRYPTO_secure_malloc(size_t num, const char *file, int line)
#define CRYPTO_ONCE_STATIC_INIT
int CRYPTO_free_ex_index(int class_index, int idx)
#define CRYPTO_EX_INDEX_SSL_SESSION
void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line)
void * CRYPTO_memdup(const void *str, size_t siz, const char *file, int line)
void CRYPTO_EX_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int idx, long argl, void *argp)
size_t CRYPTO_secure_used(void)
int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, void *from_d, int idx, long argl, void *argp)
int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock)
void * CRYPTO_secure_zalloc(size_t num, const char *file, int line)
int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len)
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings)
CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void)
char * OPENSSL_buf2hexstr(const unsigned char *buffer, long len)
size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz)
#define OPENSSL_INIT_ENGINE_CAPI
int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from)
__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock)
void OPENSSL_cleanup(void)
#define CRYPTO_EX_INDEX_SSL
void * CRYPTO_realloc(void *addr, size_t num, const char *file, int line)
OPENSSL_INIT_SETTINGS * OPENSSL_INIT_new(void)
void * CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key)
int CRYPTO_set_mem_debug(int flag)
int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, const char *config_appname)
int OPENSSL_hexchar2int(unsigned char c)
int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val)
CRYPTO_RWLOCK * CRYPTO_THREAD_lock_new(void)
int OPENSSL_issetugid(void)
#define OPENSSL_INIT_ENGINE_DYNAMIC
void CRYPTO_secure_free(void *ptr, const char *file, int line)
void * CRYPTO_zalloc(size_t num, const char *file, int line)
#define CRYPTO_EX_INDEX_BIO
int CRYPTO_secure_malloc_initialized(void)
ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line)
int OPENSSL_gmtime_diff(int *pday, int *psec, const struct tm *from, const struct tm *to)
const char * OpenSSL_version(int type)
#define OPENSSL_INIT_ENGINE_CRYPTODEV
struct tm * OPENSSL_gmtime(const time_t *timer, struct tm *result)
void CRYPTO_secure_clear_free(void *ptr, size_t num, const char *file, int line)
#define OPENSSL_EXPORT_VAR_AS_FUNCTION
#define OPENSSL_API_COMPAT
#define DEPRECATEDIN_1_1_0(f)
#define DECLARE_DEPRECATED(f)
#define OPENSSL_NO_HEARTBEATS
#define OPENSSL_NO_UNIT_TEST
#define OPENSSL_NO_CRYPTO_MDEBUG
#define OPENSSL_NO_SSL3_METHOD
#define OPENSSL_NO_SSL_TRACE
#define OPENSSL_VERSION_NUMBER
struct x509_lookup_method_st X509_LOOKUP_METHOD
struct asn1_string_st ASN1_PRINTABLESTRING
struct asn1_string_st ASN1_IA5STRING
struct evp_md_ctx_st EVP_MD_CTX
struct ocsp_response_st OCSP_RESPONSE
struct asn1_string_st ASN1_UNIVERSALSTRING
struct ssl_ctx_st SSL_CTX
struct asn1_string_st ASN1_T61STRING
struct AUTHORITY_KEYID_st AUTHORITY_KEYID
struct ctlog_store_st CTLOG_STORE
struct evp_pkey_st EVP_PKEY
struct bn_blinding_st BN_BLINDING
struct v3_ext_ctx X509V3_CTX
struct x509_store_st X509_STORE
struct X509_POLICY_TREE_st X509_POLICY_TREE
struct DIST_POINT_st DIST_POINT
struct asn1_string_st ASN1_ENUMERATED
struct X509_POLICY_NODE_st X509_POLICY_NODE
struct evp_cipher_st EVP_CIPHER
struct rsa_meth_st RSA_METHOD
struct X509_name_st X509_NAME
struct dh_method DH_METHOD
struct sct_ctx_st SCT_CTX
struct bn_recp_ctx_st BN_RECP_CTX
struct dsa_method DSA_METHOD
struct asn1_sctx_st ASN1_SCTX
struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS
struct evp_Encode_Ctx_st EVP_ENCODE_CTX
struct asn1_string_st ASN1_GENERALSTRING
struct ossl_store_info_st OSSL_STORE_INFO
struct rsa_pss_params_st RSA_PSS_PARAMS
struct evp_pkey_method_st EVP_PKEY_METHOD
struct x509_revoked_st X509_REVOKED
struct crypto_ex_data_st CRYPTO_EX_DATA
struct asn1_pctx_st ASN1_PCTX
struct ocsp_responder_id_st OCSP_RESPID
struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX
struct X509_pubkey_st X509_PUBKEY
struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL
struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT
struct comp_ctx_st COMP_CTX
struct ossl_init_settings_st OPENSSL_INIT_SETTINGS
struct comp_method_st COMP_METHOD
struct hmac_ctx_st HMAC_CTX
struct X509_algor_st X509_ALGOR
struct evp_pkey_ctx_st EVP_PKEY_CTX
struct evp_cipher_ctx_st EVP_CIPHER_CTX
struct buf_mem_st BUF_MEM
struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO
struct x509_crl_method_st X509_CRL_METHOD
struct asn1_string_st ASN1_BMPSTRING
struct asn1_string_st ASN1_GENERALIZEDTIME
struct ossl_store_search_st OSSL_STORE_SEARCH
struct X509_crl_st X509_CRL
struct X509_POLICY_CACHE_st X509_POLICY_CACHE
struct ssl_dane_st SSL_DANE
struct asn1_string_st ASN1_STRING
struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD
struct asn1_string_st ASN1_UTF8STRING
struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM
struct x509_object_st X509_OBJECT
struct asn1_string_st ASN1_TIME
struct rand_drbg_st RAND_DRBG
struct bn_gencb_st BN_GENCB
struct ui_method_st UI_METHOD
struct asn1_object_st ASN1_OBJECT
struct x509_store_ctx_st X509_STORE_CTX
unsigned long ossl_uintmax_t
struct ASN1_ITEM_st ASN1_ITEM
struct rand_meth_st RAND_METHOD
struct bn_mont_ctx_st BN_MONT_CTX
struct x509_sig_info_st X509_SIG_INFO
struct asn1_string_st ASN1_INTEGER
struct asn1_string_st ASN1_BIT_STRING
struct ocsp_req_ctx_st OCSP_REQ_CTX
struct asn1_string_st ASN1_UTCTIME
struct asn1_string_st ASN1_OCTET_STRING
struct ec_key_method_st EC_KEY_METHOD
struct asn1_string_st ASN1_VISIBLESTRING
struct x509_lookup_st X509_LOOKUP
int pem_password_cb(char *buf, int size, int rwflag, void *userdata)
#define DECLARE_PEM_rw(name, type)
#define DEFINE_SPECIAL_STACK_OF(t1, t2)
#define SKM_DEFINE_STACK_OF(t1, t2, t3)
const char * OPENSSL_CSTRING
#define DEFINE_STACK_OF(t)
#define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2)
#define DEFINE_STACK_OF_CONST(t)
#define SSL3_AD_HANDSHAKE_FAILURE
#define SSL3_AD_NO_CERTIFICATE
#define SSL3_AD_CLOSE_NOTIFY
#define SSL3_AD_UNSUPPORTED_CERTIFICATE
#define SSL3_AD_CERTIFICATE_UNKNOWN
#define SSL3_AD_BAD_RECORD_MAC
#define SSL3_AD_CERTIFICATE_EXPIRED
#define SSL3_AD_DECOMPRESSION_FAILURE
#define SSL3_AD_ILLEGAL_PARAMETER
#define SSL3_AD_BAD_CERTIFICATE
#define SSL3_AD_UNEXPECTED_MESSAGE
#define SSL3_AD_CERTIFICATE_REVOKED
#define SSL_get_shared_group(s, n)
void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb)
void(* SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, unsigned int context, const unsigned char *out, void *add_arg)
#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS
#define SSL_SECOP_OTHER_CURVE
#define SSL_CTRL_CERT_FLAGS
#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
#define SSL_CTRL_SET_TMP_DH
void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, int(*new_session_cb)(struct ssl_st *ssl, SSL_SESSION *sess))
__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e)
#define SSL_CTX_set1_groups(ctx, glist, glistlen)
void(* SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line)
__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, unsigned int protos_len)
__owur int SSL_extension_supported(unsigned int ext_type)
#define DTLS_CTRL_SET_LINK_MTU
int SSL_in_before(const SSL *s)
#define SSL_CTRL_GET_RI_SUPPORT
#define SSL_CTRL_SET_TMP_ECDH
#define SSL_OP_NO_TLSv1_3
#define SSL_CTRL_CHAIN_CERT
#define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT
unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op)
#define SSL_CTRL_SET_CLIENT_CERT_TYPES
int(*)(const SSL *s, const SSL_CTX *ctx, int op, int bits, int nid, void *other, void *ex) SSL_get_security_callback(const SSL *s)
void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int(*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey))
#define SSL_CTRL_GET_RAW_CIPHERLIST
#define SSL_CTRL_CLEAR_CERT_FLAGS
__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type, custom_ext_add_cb add_cb, custom_ext_free_cb free_cb, void *add_arg, custom_ext_parse_cb parse_cb, void *parse_arg)
#define SSL_CTRL_GET_NUM_RENEGOTIATIONS
#define SSL_OP_TLSEXT_PADDING
#define SSL_CTX_set1_groups_list(ctx, s)
#define SSL_OP_NO_DTLSv1_2
uint32_t SSL_get_recv_max_early_data(const SSL *s)
#define SSL_CTRL_SET_SIGALGS
void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, void(*remove_session_cb)(struct ssl_ctx_st *ctx, SSL_SESSION *sess))
int SSL_in_init(const SSL *s)
__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, unsigned int protos_len)
#define SSL_set1_groups_list(s, str)
#define SSL_CTRL_EXTRA_CHAIN_CERT
void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, unsigned *len)
#define SSL_CTRL_GET_PEER_SIGNATURE_NID
void SSL_CTX_set_stateless_cookie_generate_cb(SSL_CTX *ctx, int(*gen_stateless_cookie_cb)(SSL *ssl, unsigned char *cookie, size_t *cookie_len))
#define SSL_CTRL_GET_CLIENT_CERT_TYPES
struct ssl_conf_ctx_st SSL_CONF_CTX
#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT
void SSL_CTX_set_stateless_cookie_verify_cb(SSL_CTX *ctx, int(*verify_stateless_cookie_cb)(SSL *ssl, const unsigned char *cookie, size_t cookie_len))
void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb)
void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, SSL_CTX_npn_select_cb_func cb, void *arg)
#define SSL_CTRL_SESS_HIT
void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb)
#define SSL_CTX_set_read_ahead(ctx, m)
int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data)
#define SSL_CTRL_SESS_TIMEOUTS
#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG
#define SSL_CTRL_GET_TMP_KEY
size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count)
int(* SSL_psk_find_session_cb_func)(SSL *ssl, const unsigned char *identity, size_t identity_len, SSL_SESSION **sess)
size_t SSL_get_finished(const SSL *s, void *buf, size_t count)
#define SSL_CTRL_SET_VERIFY_CERT_STORE
struct ssl_comp_st SSL_COMP
int(* SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, unsigned int context, const unsigned char *in, size_t inlen, X509 *x, size_t chainidx, int *al, void *parse_arg)
#define SSL_CTRL_SET_SESS_CACHE_SIZE
#define SSL_CTRL_GET_CHAIN_CERTS
#define SSL_SECOP_OTHER_NONE
#define SSL_CTRL_SESS_ACCEPT
#define SSL_OP_LEGACY_SERVER_CONNECT
#define SSL_CTRL_SET_MAX_SEND_FRAGMENT
struct ssl_cipher_st SSL_CIPHER
__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, const unsigned char *client, unsigned int client_len)
#define SSL_SECOP_OTHER_PKEY
#define SSL_CTRL_SESS_CONNECT_GOOD
void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb)
int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data)
#define SSL_SECOP_OTHER_CERT
#define SSL_CTRL_SET_READ_AHEAD
#define SSL_SECOP_OTHER_CIPHER
unsigned int(* SSL_psk_client_cb_func)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len)
#define SSL_CTRL_GET_SESS_CACHE_MODE
#define SSL_get1_groups(s, glist)
int(* GEN_SESSION_CB)(SSL *ssl, unsigned char *id, unsigned int *id_len)
int(* SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, const unsigned char **id, size_t *idlen, SSL_SESSION **sess)
int(* SSL_CTX_npn_advertised_cb_func)(SSL *ssl, const unsigned char **out, unsigned int *outlen, void *arg)
void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, unsigned int *len)
__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, unsigned int ext_type)
#define SSL_set0_chain(s, sk)
__owur int SSL_SRP_CTX_init(SSL *s)
#define SSL_CTRL_GET_SHARED_GROUP
int SSL_SRP_CTX_free(SSL *ctx)
struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT
@ DTLS_ST_SW_HELLO_VERIFY_REQUEST
@ TLS_ST_SW_SESSION_TICKET
@ TLS_ST_PENDING_EARLY_DATA_END
@ DTLS_ST_CR_HELLO_VERIFY_REQUEST
@ TLS_ST_CR_ENCRYPTED_EXTENSIONS
@ TLS_ST_CW_END_OF_EARLY_DATA
@ TLS_ST_CR_SESSION_TICKET
@ TLS_ST_SW_ENCRYPTED_EXTENSIONS
@ TLS_ST_SR_END_OF_EARLY_DATA
#define SSL_CTRL_GET_READ_AHEAD
struct ssl_method_st SSL_METHOD
__owur int SSL_srp_server_param_with_username(SSL *s, int *ad)
__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, unsigned int context, SSL_custom_ext_add_cb_ex add_cb, SSL_custom_ext_free_cb_ex free_cb, void *add_arg, SSL_custom_ext_parse_cb_ex parse_cb, void *parse_arg)
#define SSL_CTRL_SESS_CB_HIT
void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb)
int(*)(struct ssl_st *ssl, SSL_SESSION *sess) SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)
#define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP
void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, int(*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len))
#define SSL_VERIFY_CLIENT_ONCE
__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint)
#define SSL_CTRL_SET_CURRENT_CERT
#define SSL_get_peer_tmp_key(s, pk)
#define SSL_OP_CRYPTOPRO_TLSEXT_BUG
#define SSL_CTRL_SET_MAX_PROTO_VERSION
struct ssl_st * ssl_crock_st
int(* tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, int len, void *arg)
#define DTLS_CTRL_GET_LINK_MIN_MTU
#define SSL_CTRL_SESS_CONNECT
#define DTLS_CTRL_GET_TIMEOUT
void SSL_CTX_set_info_callback(SSL_CTX *ctx, void(*cb)(const SSL *ssl, int type, int val))
uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx)
unsigned long SSL_set_options(SSL *s, unsigned long op)
uint32_t SSL_get_max_early_data(const SSL *s)
#define SSL_CTRL_GET_PEER_TMP_KEY
#define SSL_CTRL_GET_GROUPS
#define SSL_CTRL_SESS_NUMBER
struct ssl_session_st SSL_SESSION
void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, SSL_CTX_npn_advertised_cb_func cb, void *arg)
void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void(*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))
#define SSL_OP_NO_TLSv1_2
#define SSL_CTX_set0_chain(ctx, sk)
#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS
int(* SSL_CTX_alpn_select_cb_func)(SSL *ssl, const unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
#define DTLS_CTRL_HANDLE_TIMEOUT
#define SSL_CTRL_SET_SESS_CACHE_MODE
#define SSL_CTRL_SET_CLIENT_SIGALGS_LIST
unsigned long SSL_get_options(const SSL *s)
#define SSL_CLIENT_HELLO_CB
void SSL_set_msg_callback(SSL *ssl, void(*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))
void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, SSL_psk_use_session_cb_func cb)
int(*)(SSL *ssl, X509 **x509, EVP_PKEY **pkey) SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)
unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op)
#define SSL_CTRL_GET_MIN_PROTO_VERSION
void(* custom_ext_free_cb)(SSL *s, unsigned int ext_type, const unsigned char *out, void *add_arg)
const char * SSL_get_psk_identity(const SSL *s)
#define SSL_CTRL_SESS_CACHE_FULL
#define SSL_CTRL_GET_MAX_CERT_LIST
void(*)(const SSL *ssl, int type, int val) SSL_CTX_get_info_callback(SSL_CTX *ctx)
const char * SSL_get_psk_identity_hint(const SSL *s)
#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS
int SSL_is_init_finished(const SSL *s)
#define SSL_CTRL_GET_MAX_PROTO_VERSION
#define SSL_CTRL_SELECT_CURRENT_CERT
#define SSL_CTRL_SESS_ACCEPT_GOOD
#define SSL_CTX_get_read_ahead(ctx)
#define SSL_CTRL_GET_SIGNATURE_NID
#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE
#define SSL_CTRL_SESS_MISSES
#define SSL_CTRL_SET_MSG_CALLBACK_ARG
int(* custom_ext_parse_cb)(SSL *s, unsigned int ext_type, const unsigned char *in, size_t inlen, int *al, void *parse_arg)
#define SSL_CTRL_SET_SIGALGS_LIST
SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx)
#define SSL_CTRL_SET_GROUPS_LIST
void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb)
#define SSL_SESS_CACHE_SERVER
void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb)
#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE
#define SSL_CTRL_SET_GROUPS
#define SSL_CTRL_SET_MAX_CERT_LIST
#define SSL_CTRL_GET_EC_POINT_FORMATS
void(*)(struct ssl_ctx_st *ctx, SSL_SESSION *sess) SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)
#define SSL_SESS_CACHE_NO_INTERNAL_STORE
#define SSL_CTRL_SET_CLIENT_SIGALGS
int(* SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, unsigned int context, const unsigned char **out, size_t *outlen, X509 *x, size_t chainidx, int *al, void *add_arg)
void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, const unsigned char *data, int len, int *copy))
#define SSL_CTRL_GET_SESS_CACHE_SIZE
#define SSL_CTRL_SET_MIN_PROTO_VERSION
unsigned long SSL_CTX_get_options(const SSL_CTX *ctx)
#define SSL_CTRL_BUILD_CERT_CHAIN
int(* tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, STACK_OF(SSL_CIPHER) *peer_ciphers, const SSL_CIPHER **cipher, void *arg)
__owur int SRP_Calc_A_param(SSL *s)
#define SSL_CTRL_CLEAR_MODE
struct tls_sigalgs_st TLS_SIGALGS
void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, SSL_psk_find_session_cb_func cb)
uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx)
unsigned long SSL_clear_options(SSL *s, unsigned long op)
int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data)
#define SSL_CTRL_SET_CHAIN_CERT_STORE
#define SSL_ASYNC_NO_JOBS
unsigned int(* SSL_psk_server_cb_func)(SSL *ssl, const char *identity, unsigned char *psk, unsigned int max_psk_len)
__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type, custom_ext_add_cb add_cb, custom_ext_free_cb free_cb, void *add_arg, custom_ext_parse_cb parse_cb, void *parse_arg)
void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int(*app_verify_cookie_cb)(SSL *ssl, const unsigned char *cookie, unsigned int cookie_len))
#define SSL_CTRL_SET_MAX_PIPELINES
void(*)(const SSL *ssl, int type, int val) SSL_get_info_callback(const SSL *ssl)
#define SSL_library_init()
#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS
__owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx)
#define SSL_CTRL_SET_DH_AUTO
#define OPENSSL_INIT_LOAD_SSL_STRINGS
void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, SSL_CTX_alpn_select_cb_func cb, void *arg)
int SSL_set_max_early_data(SSL *s, uint32_t max_early_data)
int(* custom_ext_add_cb)(SSL *s, unsigned int ext_type, const unsigned char **out, size_t *outlen, int *al, void *add_arg)
#define SSL_CTRL_GET_EXTMS_SUPPORT
int(* SSL_CTX_npn_select_cb_func)(SSL *s, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
#define SSL_OP_NO_TLSv1_1
#define SSL_SECOP_OTHER_SIGALG
#define SSL_set1_groups(s, glist, glistlen)
int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx)
__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint)
#define SSL_SESS_CACHE_CLIENT
int(* SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx)
void(* OPENSSL_sk_freefunc)(void *)
void * OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p)
void * OPENSSL_sk_delete(OPENSSL_STACK *st, int loc)
int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n)
void OPENSSL_sk_zero(OPENSSL_STACK *st)
OPENSSL_STACK * OPENSSL_sk_deep_copy(const OPENSSL_STACK *, OPENSSL_sk_copyfunc c, OPENSSL_sk_freefunc f)
int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st)
OPENSSL_STACK * OPENSSL_sk_new(OPENSSL_sk_compfunc cmp)
OPENSSL_STACK * OPENSSL_sk_new_null(void)
struct stack_st OPENSSL_STACK
int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data)
int(* OPENSSL_sk_compfunc)(const void *, const void *)
OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, OPENSSL_sk_compfunc cmp)
OPENSSL_STACK * OPENSSL_sk_dup(const OPENSSL_STACK *st)
int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where)
void * OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data)
int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data)
int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data)
void * OPENSSL_sk_pop(OPENSSL_STACK *st)
int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data)
int OPENSSL_sk_num(const OPENSSL_STACK *)
void *(* OPENSSL_sk_copyfunc)(const void *)
void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void(*func)(void *))
void * OPENSSL_sk_shift(OPENSSL_STACK *st)
void OPENSSL_sk_sort(OPENSSL_STACK *st)
OPENSSL_STACK * OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n)
void * OPENSSL_sk_value(const OPENSSL_STACK *, int)
void OPENSSL_sk_free(OPENSSL_STACK *)
std::function< void(bool, std::string)> callback
Family
Possible address families for socket addresses.
std::string privateKeyFile
Initializes the struct with default values.
std::string certificateFile
bool ocspStaplingVerification
VerificationMode verificationMode
static std::string escape(const std::string &s, bool strictJSON=false)
#define TLS1_AD_RECORD_OVERFLOW
#define TLS1_AD_EXPORT_RESTRICTION
#define TLS1_AD_UNKNOWN_CA
#define TLS13_AD_MISSING_EXTENSION
#define TLS1_AD_NO_RENEGOTIATION
#define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
#define TLS1_AD_UNKNOWN_PSK_IDENTITY
#define TLS1_AD_INSUFFICIENT_SECURITY
#define TLS1_AD_PROTOCOL_VERSION
#define TLS1_AD_USER_CANCELLED
#define TLS1_AD_INTERNAL_ERROR
#define TLS1_AD_NO_APPLICATION_PROTOCOL
#define TLS1_AD_CERTIFICATE_UNOBTAINABLE
#define TLS1_AD_UNSUPPORTED_EXTENSION
#define TLS1_AD_ACCESS_DENIED
#define TLS1_AD_DECODE_ERROR
#define TLS1_AD_UNRECOGNIZED_NAME
#define TLS1_AD_DECRYPT_ERROR
#define TLS13_AD_CERTIFICATE_REQUIRED
#define TLS1_AD_INAPPROPRIATE_FALLBACK
#define TLS1_AD_DECRYPTION_FAILED
#define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
#define X509_FILETYPE_PEM
#define X509_FILETYPE_ASN1