2
3
4
5
6
7
8
9
10
15# include <openssl/e_os2.h>
16# include <openssl/opensslconf.h>
17# include <openssl/comp.h>
18# include <openssl/bio.h>
20# include <openssl/x509.h>
21# include <openssl/crypto.h>
22# include <openssl/buffer.h>
24# include <openssl/lhash.h>
25# include <openssl/pem.h>
26# include <openssl/hmac.h>
27# include <openssl/async.h>
29# include <openssl/safestack.h>
30# include <openssl/symhacks.h>
31# include <openssl/ct.h>
32# include <openssl/sslerr.h>
40
41
42
43# define SSL_SESSION_ASN1_VERSION 0x0001
45# define SSL_MAX_SSL_SESSION_ID_LENGTH 32
46# define SSL_MAX_SID_CTX_LENGTH 32
48# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512
/8
)
49# define SSL_MAX_KEY_ARG_LENGTH 8
50# define SSL_MAX_MASTER_KEY_LENGTH 48
53# define SSL_MAX_PIPELINES 32
59# define SSL_TXT_LOW "LOW"
60# define SSL_TXT_MEDIUM "MEDIUM"
61# define SSL_TXT_HIGH "HIGH"
62# define SSL_TXT_FIPS "FIPS"
64# define SSL_TXT_aNULL "aNULL"
65# define SSL_TXT_eNULL "eNULL"
66# define SSL_TXT_NULL "NULL"
68# define SSL_TXT_kRSA "kRSA"
69# define SSL_TXT_kDHr "kDHr"
70# define SSL_TXT_kDHd "kDHd"
71# define SSL_TXT_kDH "kDH"
72# define SSL_TXT_kEDH "kEDH"
73# define SSL_TXT_kDHE "kDHE"
74# define SSL_TXT_kECDHr "kECDHr"
75# define SSL_TXT_kECDHe "kECDHe"
76# define SSL_TXT_kECDH "kECDH"
77# define SSL_TXT_kEECDH "kEECDH"
78# define SSL_TXT_kECDHE "kECDHE"
79# define SSL_TXT_kPSK "kPSK"
80# define SSL_TXT_kRSAPSK "kRSAPSK"
81# define SSL_TXT_kECDHEPSK "kECDHEPSK"
82# define SSL_TXT_kDHEPSK "kDHEPSK"
83# define SSL_TXT_kGOST "kGOST"
84# define SSL_TXT_kSRP "kSRP"
86# define SSL_TXT_aRSA "aRSA"
87# define SSL_TXT_aDSS "aDSS"
88# define SSL_TXT_aDH "aDH"
89# define SSL_TXT_aECDH "aECDH"
90# define SSL_TXT_aECDSA "aECDSA"
91# define SSL_TXT_aPSK "aPSK"
92# define SSL_TXT_aGOST94 "aGOST94"
93# define SSL_TXT_aGOST01 "aGOST01"
94# define SSL_TXT_aGOST12 "aGOST12"
95# define SSL_TXT_aGOST "aGOST"
96# define SSL_TXT_aSRP "aSRP"
98# define SSL_TXT_DSS "DSS"
99# define SSL_TXT_DH "DH"
100# define SSL_TXT_DHE "DHE"
101# define SSL_TXT_EDH "EDH"
102# define SSL_TXT_ADH "ADH"
103# define SSL_TXT_RSA "RSA"
104# define SSL_TXT_ECDH "ECDH"
105# define SSL_TXT_EECDH "EECDH"
106# define SSL_TXT_ECDHE "ECDHE"
107# define SSL_TXT_AECDH "AECDH"
108# define SSL_TXT_ECDSA "ECDSA"
109# define SSL_TXT_PSK "PSK"
110# define SSL_TXT_SRP "SRP"
112# define SSL_TXT_DES "DES"
113# define SSL_TXT_3DES "3DES"
114# define SSL_TXT_RC4 "RC4"
115# define SSL_TXT_RC2 "RC2"
116# define SSL_TXT_IDEA "IDEA"
117# define SSL_TXT_SEED "SEED"
118# define SSL_TXT_AES128 "AES128"
119# define SSL_TXT_AES256 "AES256"
120# define SSL_TXT_AES "AES"
121# define SSL_TXT_AES_GCM "AESGCM"
122# define SSL_TXT_AES_CCM "AESCCM"
123# define SSL_TXT_AES_CCM_8 "AESCCM8"
124# define SSL_TXT_CAMELLIA128 "CAMELLIA128"
125# define SSL_TXT_CAMELLIA256 "CAMELLIA256"
126# define SSL_TXT_CAMELLIA "CAMELLIA"
127# define SSL_TXT_CHACHA20 "CHACHA20"
128# define SSL_TXT_GOST "GOST89"
129# define SSL_TXT_ARIA "ARIA"
130# define SSL_TXT_ARIA_GCM "ARIAGCM"
131# define SSL_TXT_ARIA128 "ARIA128"
132# define SSL_TXT_ARIA256 "ARIA256"
134# define SSL_TXT_MD5 "MD5"
135# define SSL_TXT_SHA1 "SHA1"
136# define SSL_TXT_SHA "SHA"
137# define SSL_TXT_GOST94 "GOST94"
138# define SSL_TXT_GOST89MAC "GOST89MAC"
139# define SSL_TXT_GOST12 "GOST12"
140# define SSL_TXT_GOST89MAC12 "GOST89MAC12"
141# define SSL_TXT_SHA256 "SHA256"
142# define SSL_TXT_SHA384 "SHA384"
144# define SSL_TXT_SSLV3 "SSLv3"
145# define SSL_TXT_TLSV1 "TLSv1"
146# define SSL_TXT_TLSV1_1 "TLSv1.1"
147# define SSL_TXT_TLSV1_2 "TLSv1.2"
149# define SSL_TXT_ALL "ALL"
152
153
154
155
156
157
158
159
160
161
162
163
164
165# define SSL_TXT_CMPALL "COMPLEMENTOFALL"
166# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT"
169
170
171
172
173# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL"
175# if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
176# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:"
177 "TLS_CHACHA20_POLY1305_SHA256:"
178 "TLS_AES_128_GCM_SHA256"
180# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:"
181 "TLS_AES_128_GCM_SHA256"
184
185
186
187
188
191# define SSL_SENT_SHUTDOWN 1
192# define SSL_RECEIVED_SHUTDOWN 2
206
207
208
225} SRTP_PROTECTION_PROFILE;
237#define SSL_EXT_TLS_ONLY 0x0001
239#define SSL_EXT_DTLS_ONLY 0x0002
241#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004
243#define SSL_EXT_SSL3_ALLOWED 0x0008
245#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010
247#define SSL_EXT_TLS1_3_ONLY 0x0020
249#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040
250#define SSL_EXT_CLIENT_HELLO 0x0080
252#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100
253#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200
254#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400
255#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800
256#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000
257#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000
258#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000
263 const unsigned char **out, size_t *outlen,
264 int *al,
void *add_arg);
267 const unsigned char *out,
void *add_arg);
270 const unsigned char *in, size_t inlen,
271 int *al,
void *parse_arg);
275 unsigned int context,
276 const unsigned char **out,
277 size_t *outlen,
X509 *x,
279 int *al,
void *add_arg);
282 unsigned int context,
283 const unsigned char *out,
287 unsigned int context,
288 const unsigned char *in,
289 size_t inlen,
X509 *x,
291 int *al,
void *parse_arg);
297
298
299
300
301
302
304# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U
307# define SSL_OP_TLSEXT_PADDING 0x00000010U
309# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U
311
312
313
314
317# define SSL_OP_ALLOW_NO_DHE_KEX 0x00000400U
320
321
322
323
324
325
326# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800U
329# define SSL_OP_NO_QUERY_MTU 0x00001000U
331# define SSL_OP_COOKIE_EXCHANGE 0x00002000U
333# define SSL_OP_NO_TICKET 0x00004000U
334# ifndef OPENSSL_NO_DTLS1_METHOD
336
337# define SSL_OP_CISCO_ANYCONNECT 0x00008000U
341# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000U
343# define SSL_OP_NO_COMPRESSION 0x00020000U
345# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000U
347# define SSL_OP_NO_ENCRYPT_THEN_MAC 0x00080000U
350
351
352
353# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT 0x00100000U
356
357# define SSL_OP_PRIORITIZE_CHACHA 0x00200000U
360
361
362# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000U
364
365
366
367
368
369# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000U
372
373
374
375# define SSL_OP_NO_ANTI_REPLAY 0x01000000U
377# define SSL_OP_NO_SSLv3 0x02000000U
378# define SSL_OP_NO_TLSv1 0x04000000U
379# define SSL_OP_NO_TLSv1_2 0x08000000U
380# define SSL_OP_NO_TLSv1_1 0x10000000U
381# define SSL_OP_NO_TLSv1_3 0x20000000U
383# define SSL_OP_NO_DTLSv1 0x04000000U
384# define SSL_OP_NO_DTLSv1_2 0x08000000U
391# define SSL_OP_NO_RENEGOTIATION 0x40000000U
394
395
396
397
398# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000U
401
402
403
404
415# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0
418# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0
421# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0
424# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0
426# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0
428# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0
431# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0
433# define SSL_OP_TLS_D5_BUG 0x0
435# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0
437# define SSL_OP_SINGLE_ECDH_USE 0x0
439# define SSL_OP_SINGLE_DH_USE 0x0
441# define SSL_OP_EPHEMERAL_RSA 0x0
443# define SSL_OP_NO_SSLv2 0x0
445# define SSL_OP_PKCS1_CHECK_1 0x0
447# define SSL_OP_PKCS1_CHECK_2 0x0
449# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0
451# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0
454
455
456
457# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U
459
460
461
462
463
464# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U
466
467
468# define SSL_MODE_AUTO_RETRY 0x00000004U
470# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U
472
473
474
475# define SSL_MODE_RELEASE_BUFFERS 0x00000010U
477
478
479
480
481# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U
482# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U
484
485
486
487
488
489
490
491# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U
493
494
495# define SSL_MODE_ASYNC 0x00000100U
498
499
500
501
502
503
504
505
506
507
508# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U
512
513
514
515# define SSL_CERT_FLAG_TLS_STRICT 0x00000001U
518# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000
520# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000
522# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000
525# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000
529# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1
531# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2
533# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4
535# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8
537# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10
541# define CERT_PKEY_VALID 0x1
543# define CERT_PKEY_SIGN 0x2
545# define CERT_PKEY_EE_SIGNATURE 0x10
547# define CERT_PKEY_CA_SIGNATURE 0x20
549# define CERT_PKEY_EE_PARAM 0x40
551# define CERT_PKEY_CA_PARAM 0x80
553# define CERT_PKEY_EXPLICIT_SIGN 0x100
555# define CERT_PKEY_ISSUER_NAME 0x200
557# define CERT_PKEY_CERT_TYPE 0x400
559# define CERT_PKEY_SUITEB 0x800
561# define SSL_CONF_FLAG_CMDLINE 0x1
562# define SSL_CONF_FLAG_FILE 0x2
563# define SSL_CONF_FLAG_CLIENT 0x4
564# define SSL_CONF_FLAG_SERVER 0x8
565# define SSL_CONF_FLAG_SHOW_ERRORS 0x10
566# define SSL_CONF_FLAG_CERTIFICATE 0x20
567# define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40
569# define SSL_CONF_TYPE_UNKNOWN 0x0
570# define SSL_CONF_TYPE_STRING 0x1
571# define SSL_CONF_TYPE_FILE 0x2
572# define SSL_CONF_TYPE_DIR 0x3
573# define SSL_CONF_TYPE_NONE 0x4
576# define SSL_COOKIE_LENGTH 4096
579
580
581
590# define SSL_CTX_set_mode(ctx,op)
592# define SSL_CTX_clear_mode(ctx,op)
594# define SSL_CTX_get_mode(ctx)
596# define SSL_clear_mode(ssl,op)
598# define SSL_set_mode(ssl,op)
600# define SSL_get_mode(ssl)
602# define SSL_set_mtu(ssl, mtu)
604# define DTLS_set_link_mtu(ssl, mtu)
606# define DTLS_get_link_min_mtu(ssl)
609# define SSL_get_secure_renegotiation_support(ssl)
613# define SSL_heartbeat(ssl)
614 SSL_ctrl((ssl),SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT,0
,NULL)
617# define SSL_CTX_set_cert_flags(ctx,op)
619# define SSL_set_cert_flags(s,op)
621# define SSL_CTX_clear_cert_flags(ctx,op)
623# define SSL_clear_cert_flags(s,op)
627 void (*cb) (
int write_p,
int version,
628 int content_type,
const void *buf,
629 size_t len,
SSL *ssl,
void *arg));
631 void (*cb) (
int write_p,
int version,
632 int content_type,
const void *buf,
633 size_t len,
SSL *ssl,
void *arg));
637# define SSL_get_extms_support(s)
640# ifndef OPENSSL_NO_SRP
653# define SSL_MAX_CERT_LIST_DEFAULT 1024
*100
655# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024
*20
)
658
659
660
661
662
663
664
665
666
667
668
670 unsigned int *id_len);
672# define SSL_SESS_CACHE_OFF 0x0000
673# define SSL_SESS_CACHE_CLIENT 0x0001
674# define SSL_SESS_CACHE_SERVER 0x0002
676# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080
678# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100
679# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200
680# define SSL_SESS_CACHE_NO_INTERNAL
684# define SSL_CTX_sess_number(ctx)
686# define SSL_CTX_sess_connect(ctx)
688# define SSL_CTX_sess_connect_good(ctx)
690# define SSL_CTX_sess_connect_renegotiate(ctx)
692# define SSL_CTX_sess_accept(ctx)
694# define SSL_CTX_sess_accept_renegotiate(ctx)
696# define SSL_CTX_sess_accept_good(ctx)
698# define SSL_CTX_sess_hits(ctx)
700# define SSL_CTX_sess_cb_hits(ctx)
702# define SSL_CTX_sess_misses(ctx)
704# define SSL_CTX_sess_timeouts(ctx)
706# define SSL_CTX_sess_cache_full(ctx)
710 int (*new_session_cb) (
struct ssl_st *ssl,
715 void (*remove_session_cb) (
struct ssl_ctx_st
726SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (
struct ssl_st *ssl,
727 const unsigned char *data,
730 void (*cb) (
const SSL *ssl,
int type,
int val));
734 int (*client_cert_cb) (
SSL *ssl,
X509 **x509,
738# ifndef OPENSSL_NO_ENGINE
742 int (*app_gen_cookie_cb) (
SSL *ssl,
748 int (*app_verify_cookie_cb) (
SSL *ssl,
756 int (*gen_stateless_cookie_cb) (
SSL *ssl,
757 unsigned char *cookie,
758 size_t *cookie_len));
761 int (*verify_stateless_cookie_cb) (
SSL *ssl,
762 const unsigned char *cookie,
764# ifndef OPENSSL_NO_NEXTPROTONEG
767 const unsigned char **out,
768 unsigned int *outlen,
773# define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb
777 unsigned char *outlen,
778 const unsigned char *in,
784# define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb
788# define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated
792 const unsigned char *in,
unsigned int inlen,
793 const unsigned char *client,
794 unsigned int client_len);
796# define OPENSSL_NPN_UNSUPPORTED 0
797# define OPENSSL_NPN_NEGOTIATED 1
798# define OPENSSL_NPN_NO_OVERLAP 2
801 unsigned int protos_len);
803 unsigned int protos_len);
805 const unsigned char **out,
806 unsigned char *outlen,
807 const unsigned char *in,
816# ifndef OPENSSL_NO_PSK
818
819
820
821# define PSK_MAX_IDENTITY_LEN 128
822# define PSK_MAX_PSK_LEN 256
826 unsigned int max_identity_len,
828 unsigned int max_psk_len);
833 const char *identity,
835 unsigned int max_psk_len);
846 const unsigned char *identity,
850 const unsigned char **id,
864 unsigned int ext_type);
867 unsigned int ext_type,
875 unsigned int ext_type,
883 unsigned int context,
892# define SSL_NOTHING 1
893# define SSL_WRITING 2
894# define SSL_READING 3
895# define SSL_X509_LOOKUP 4
896# define SSL_ASYNC_PAUSED 5
897# define SSL_ASYNC_NO_JOBS 6
898# define SSL_CLIENT_HELLO_CB 7
909# define SSL_MAC_FLAG_READ_MAC_STREAM 1
910# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2
913
914
915
919
920
921
922
926
927
928
944# include <openssl/ssl2.h>
945# include <openssl/ssl3.h>
946# include <openssl/tls1.h>
947# include <openssl/dtls1.h>
948# include <openssl/srtp.h>
955
956
957
962# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0
,(char *)(arg)))
963# define SSL_get_app_data(s) (SSL_get_ex_data(s,0
))
964# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0
,
966# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0
))
967# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0
))
968# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0
,
974#define SSL_KEY_UPDATE_NONE -1
976#define SSL_KEY_UPDATE_NOT_REQUESTED 0
977#define SSL_KEY_UPDATE_REQUESTED 1
980
981
982
983
984
985
986
987
988
989
990
1042} OSSL_HANDSHAKE_STATE;
1045
1046
1047
1048
1049
1050
1052# define SSL_ST_CONNECT 0x1000
1053# define SSL_ST_ACCEPT 0x2000
1055# define SSL_ST_MASK 0x0FFF
1057# define SSL_CB_LOOP 0x01
1058# define SSL_CB_EXIT 0x02
1059# define SSL_CB_READ 0x04
1060# define SSL_CB_WRITE 0x08
1061# define SSL_CB_ALERT 0x4000
1068# define SSL_CB_HANDSHAKE_START 0x10
1069# define SSL_CB_HANDSHAKE_DONE 0x20
1072# define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a))
1073# define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a))
1079
1080
1081
1082# define SSL_ST_READ_HEADER 0xF0
1083# define SSL_ST_READ_BODY 0xF1
1084# define SSL_ST_READ_DONE 0xF2
1087
1088
1089
1090
1091
1096
1097
1098
1099# define SSL_VERIFY_NONE 0x00
1100# define SSL_VERIFY_PEER 0x01
1101# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
1102# define SSL_VERIFY_CLIENT_ONCE 0x04
1103# define SSL_VERIFY_POST_HANDSHAKE 0x08
1111# define SSL_get_cipher(s)
1112 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
1113# define SSL_get_cipher_bits(s,np)
1114 SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
1115# define SSL_get_cipher_version(s)
1116 SSL_CIPHER_get_version(SSL_get_current_cipher(s))
1117# define SSL_get_cipher_name(s)
1118 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
1119# define SSL_get_time(a) SSL_SESSION_get_time(a)
1120# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b))
1121# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a)
1122# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b))
1124# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id)
1128# define SSL_AD_REASON_OFFSET 1000
1129
1180# define SSL_ERROR_NONE 0
1181# define SSL_ERROR_SSL 1
1182# define SSL_ERROR_WANT_READ 2
1183# define SSL_ERROR_WANT_WRITE 3
1184# define SSL_ERROR_WANT_X509_LOOKUP 4
1185# define SSL_ERROR_SYSCALL 5
1186
1187# define SSL_ERROR_ZERO_RETURN 6
1188# define SSL_ERROR_WANT_CONNECT 7
1189# define SSL_ERROR_WANT_ACCEPT 8
1190# define SSL_ERROR_WANT_ASYNC 9
1191# define SSL_ERROR_WANT_ASYNC_JOB 10
1192# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11
1193# define SSL_CTRL_SET_TMP_DH 3
1194# define SSL_CTRL_SET_TMP_ECDH 4
1195# define SSL_CTRL_SET_TMP_DH_CB 6
1196# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9
1197# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10
1198# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11
1199# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12
1200# define SSL_CTRL_GET_FLAGS 13
1201# define SSL_CTRL_EXTRA_CHAIN_CERT 14
1202# define SSL_CTRL_SET_MSG_CALLBACK 15
1203# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16
1205# define SSL_CTRL_SET_MTU 17
1207# define SSL_CTRL_SESS_NUMBER 20
1208# define SSL_CTRL_SESS_CONNECT 21
1209# define SSL_CTRL_SESS_CONNECT_GOOD 22
1210# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
1211# define SSL_CTRL_SESS_ACCEPT 24
1212# define SSL_CTRL_SESS_ACCEPT_GOOD 25
1213# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26
1214# define SSL_CTRL_SESS_HIT 27
1215# define SSL_CTRL_SESS_CB_HIT 28
1216# define SSL_CTRL_SESS_MISSES 29
1217# define SSL_CTRL_SESS_TIMEOUTS 30
1218# define SSL_CTRL_SESS_CACHE_FULL 31
1219# define SSL_CTRL_MODE 33
1220# define SSL_CTRL_GET_READ_AHEAD 40
1221# define SSL_CTRL_SET_READ_AHEAD 41
1222# define SSL_CTRL_SET_SESS_CACHE_SIZE 42
1223# define SSL_CTRL_GET_SESS_CACHE_SIZE 43
1224# define SSL_CTRL_SET_SESS_CACHE_MODE 44
1225# define SSL_CTRL_GET_SESS_CACHE_MODE 45
1226# define SSL_CTRL_GET_MAX_CERT_LIST 50
1227# define SSL_CTRL_SET_MAX_CERT_LIST 51
1228# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52
1230# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53
1231# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54
1232# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55
1233# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56
1234# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57
1235# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58
1236# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59
1240# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63
1241# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64
1242# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65
1243# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66
1244# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67
1245# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68
1246# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69
1247# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70
1248# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71
1249# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72
1250# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75
1251# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76
1252# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77
1253# define SSL_CTRL_SET_SRP_ARG 78
1254# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79
1255# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80
1256# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81
1258# define SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT 85
1259# define SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING 86
1260# define SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS 87
1262# define DTLS_CTRL_GET_TIMEOUT 73
1263# define DTLS_CTRL_HANDLE_TIMEOUT 74
1264# define SSL_CTRL_GET_RI_SUPPORT 76
1265# define SSL_CTRL_CLEAR_MODE 78
1266# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79
1267# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82
1268# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83
1269# define SSL_CTRL_CHAIN 88
1270# define SSL_CTRL_CHAIN_CERT 89
1271# define SSL_CTRL_GET_GROUPS 90
1272# define SSL_CTRL_SET_GROUPS 91
1273# define SSL_CTRL_SET_GROUPS_LIST 92
1274# define SSL_CTRL_GET_SHARED_GROUP 93
1275# define SSL_CTRL_SET_SIGALGS 97
1276# define SSL_CTRL_SET_SIGALGS_LIST 98
1277# define SSL_CTRL_CERT_FLAGS 99
1278# define SSL_CTRL_CLEAR_CERT_FLAGS 100
1279# define SSL_CTRL_SET_CLIENT_SIGALGS 101
1280# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102
1281# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103
1282# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104
1283# define SSL_CTRL_BUILD_CERT_CHAIN 105
1284# define SSL_CTRL_SET_VERIFY_CERT_STORE 106
1285# define SSL_CTRL_SET_CHAIN_CERT_STORE 107
1286# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108
1287# define SSL_CTRL_GET_PEER_TMP_KEY 109
1288# define SSL_CTRL_GET_RAW_CIPHERLIST 110
1289# define SSL_CTRL_GET_EC_POINT_FORMATS 111
1290# define SSL_CTRL_GET_CHAIN_CERTS 115
1291# define SSL_CTRL_SELECT_CURRENT_CERT 116
1292# define SSL_CTRL_SET_CURRENT_CERT 117
1293# define SSL_CTRL_SET_DH_AUTO 118
1294# define DTLS_CTRL_SET_LINK_MTU 120
1295# define DTLS_CTRL_GET_LINK_MIN_MTU 121
1296# define SSL_CTRL_GET_EXTMS_SUPPORT 122
1297# define SSL_CTRL_SET_MIN_PROTO_VERSION 123
1298# define SSL_CTRL_SET_MAX_PROTO_VERSION 124
1299# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125
1300# define SSL_CTRL_SET_MAX_PIPELINES 126
1301# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127
1302# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128
1303# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129
1304# define SSL_CTRL_GET_MIN_PROTO_VERSION 130
1305# define SSL_CTRL_GET_MAX_PROTO_VERSION 131
1306# define SSL_CTRL_GET_SIGNATURE_NID 132
1307# define SSL_CTRL_GET_TMP_KEY 133
1308# define SSL_CERT_SET_FIRST 1
1309# define SSL_CERT_SET_NEXT 2
1310# define SSL_CERT_SET_SERVER 3
1311# define DTLSv1_get_timeout(ssl, arg)
1313# define DTLSv1_handle_timeout(ssl)
1315# define SSL_num_renegotiations(ssl)
1317# define SSL_clear_num_renegotiations(ssl)
1319# define SSL_total_renegotiations(ssl)
1321# define SSL_CTX_set_tmp_dh(ctx,dh)
1323# define SSL_CTX_set_tmp_ecdh(ctx,ecdh)
1325# define SSL_CTX_set_dh_auto(ctx, onoff)
1327# define SSL_set_dh_auto(s, onoff)
1329# define SSL_set_tmp_dh(ssl,dh)
1331# define SSL_set_tmp_ecdh(ssl,ecdh)
1333# define SSL_CTX_add_extra_chain_cert(ctx,x509)
1335# define SSL_CTX_get_extra_chain_certs(ctx,px509)
1337# define SSL_CTX_get_extra_chain_certs_only(ctx,px509)
1339# define SSL_CTX_clear_extra_chain_certs(ctx)
1341# define SSL_CTX_set0_chain(ctx,sk)
1343# define SSL_CTX_set1_chain(ctx,sk)
1345# define SSL_CTX_add0_chain_cert(ctx,x509)
1347# define SSL_CTX_add1_chain_cert(ctx,x509)
1349# define SSL_CTX_get0_chain_certs(ctx,px509)
1351# define SSL_CTX_clear_chain_certs(ctx)
1353# define SSL_CTX_build_cert_chain(ctx, flags)
1355# define SSL_CTX_select_current_cert(ctx,x509)
1357# define SSL_CTX_set_current_cert(ctx, op)
1359# define SSL_CTX_set0_verify_cert_store(ctx,st)
1361# define SSL_CTX_set1_verify_cert_store(ctx,st)
1363# define SSL_CTX_set0_chain_cert_store(ctx,st)
1365# define SSL_CTX_set1_chain_cert_store(ctx,st)
1367# define SSL_set0_chain(s,sk)
1369# define SSL_set1_chain(s,sk)
1371# define SSL_add0_chain_cert(s,x509)
1373# define SSL_add1_chain_cert(s,x509)
1375# define SSL_get0_chain_certs(s,px509)
1377# define SSL_clear_chain_certs(s)
1379# define SSL_build_cert_chain(s, flags)
1381# define SSL_select_current_cert(s,x509)
1383# define SSL_set_current_cert(s,op)
1385# define SSL_set0_verify_cert_store(s,st)
1387# define SSL_set1_verify_cert_store(s,st)
1389# define SSL_set0_chain_cert_store(s,st)
1391# define SSL_set1_chain_cert_store(s,st)
1393# define SSL_get1_groups(s, glist)
1395# define SSL_CTX_set1_groups(ctx, glist, glistlen)
1397# define SSL_CTX_set1_groups_list(ctx, s)
1399# define SSL_set1_groups(s, glist, glistlen)
1401# define SSL_set1_groups_list(s, str)
1403# define SSL_get_shared_group(s, n)
1405# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen)
1407# define SSL_CTX_set1_sigalgs_list(ctx, s)
1409# define SSL_set1_sigalgs(s, slist, slistlen)
1411# define SSL_set1_sigalgs_list(s, str)
1413# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen)
1415# define SSL_CTX_set1_client_sigalgs_list(ctx, s)
1417# define SSL_set1_client_sigalgs(s, slist, slistlen)
1419# define SSL_set1_client_sigalgs_list(s, str)
1421# define SSL_get0_certificate_types(s, clist)
1423# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen)
1426# define SSL_set1_client_certificate_types(s, clist, clistlen)
1428# define SSL_get_signature_nid(s, pn)
1430# define SSL_get_peer_signature_nid(s, pn)
1432# define SSL_get_peer_tmp_key(s, pk)
1434# define SSL_get_tmp_key(s, pk)
1436# define SSL_get0_raw_cipherlist(s, plst)
1438# define SSL_get0_ec_point_formats(s, plst)
1440# define SSL_CTX_set_min_proto_version(ctx, version)
1442# define SSL_CTX_set_max_proto_version(ctx, version)
1444# define SSL_CTX_get_min_proto_version(ctx)
1446# define SSL_CTX_get_max_proto_version(ctx)
1448# define SSL_set_min_proto_version(s, version)
1450# define SSL_set_max_proto_version(s, version)
1452# define SSL_get_min_proto_version(s)
1454# define SSL_get_max_proto_version(s)
1458# define SSL_CTRL_GET_SERVER_TMP_KEY
1460# define SSL_get_server_tmp_key(s, pk)
1464
1465
1466
1482# define SSL_CTX_need_tmp_RSA(ctx) 0
1483# define SSL_CTX_set_tmp_rsa(ctx,rsa) 1
1484# define SSL_need_tmp_RSA(ssl) 0
1485# define SSL_set_tmp_rsa(ssl,rsa) 1
1486# define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0
)
1487# define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0
)
1489
1490
1491
1492# define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0
) (cb)(NULL
, 0
, 0
)
1493# define SSL_set_tmp_rsa_callback(ssl, cb) while(0
) (cb)(NULL
, 0
, 0
)
1500void BIO_ssl_shutdown(
BIO *ssl_bio);
1514void SSL_CTX_flush_sessions(
SSL_CTX *ctx,
long tm);
1522__owur const char *OPENSSL_cipher_name(
const char *rfc_name);
1534__owur char *SSL_get_shared_ciphers(
const SSL *s,
char *buf,
int size);
1538# ifndef OPENSSL_NO_SOCK
1551void SSL_set_read_ahead(
SSL *s,
int yes);
1556void SSL_set_verify_depth(
SSL *s,
int depth);
1557void SSL_set_cert_cb(
SSL *s,
int (*cb) (
SSL *ssl,
void *arg),
void *arg);
1558# ifndef OPENSSL_NO_RSA
1560__owur int SSL_use_RSAPrivateKey_ASN1(
SSL *ssl,
const unsigned char *d,
1564__owur int SSL_use_PrivateKey_ASN1(
int pk,
SSL *ssl,
const unsigned char *d,
1567__owur int SSL_use_certificate_ASN1(
SSL *ssl,
const unsigned char *d,
int len);
1569 STACK_OF(X509) *chain,
int override);
1573# define SSL_SERVERINFOV1 1
1574# define SSL_SERVERINFOV2 2
1578 size_t serverinfo_length);
1579__owur int SSL_CTX_use_serverinfo_ex(
SSL_CTX *ctx,
unsigned int version,
1580 const unsigned char *serverinfo,
1581 size_t serverinfo_length);
1582__owur int SSL_CTX_use_serverinfo_file(
SSL_CTX *ctx,
const char *file);
1584#ifndef OPENSSL_NO_RSA
1585__owur int SSL_use_RSAPrivateKey_file(
SSL *ssl,
const char *file,
int type);
1588__owur int SSL_use_PrivateKey_file(
SSL *ssl,
const char *file,
int type);
1589__owur int SSL_use_certificate_file(
SSL *ssl,
const char *file,
int type);
1591#ifndef OPENSSL_NO_RSA
1592__owur int SSL_CTX_use_RSAPrivateKey_file(
SSL_CTX *ctx,
const char *file,
1597__owur int SSL_CTX_use_certificate_file(
SSL_CTX *ctx,
const char *file,
1601__owur int SSL_use_certificate_chain_file(
SSL *ssl,
const char *file);
1602__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(
const char *file);
1605int SSL_add_dir_cert_subjects_to_stack(
STACK_OF(X509_NAME) *stackCAs,
1609# define SSL_load_error_strings()
1627void SSL_SESSION_get0_alpn_selected(
const SSL_SESSION *s,
1628 const unsigned char **alpn,
1631 const unsigned char *alpn,
1637void SSL_SESSION_get0_ticket(
const SSL_SESSION *s,
const unsigned char **tick,
1641 uint32_t max_early_data);
1645 const unsigned char *sid_ctx,
1646 unsigned int sid_ctx_len);
1648 unsigned int sid_len);
1658# ifndef OPENSSL_NO_STDIO
1671__owur int SSL_has_matching_session_id(
const SSL *s,
1672 const unsigned char *id,
1673 unsigned int id_len);
1677# ifdef HEADER_X509_H
1687void SSL_CTX_set_verify_depth(
SSL_CTX *ctx,
int depth);
1688void SSL_CTX_set_cert_verify_callback(
SSL_CTX *ctx,
1691void SSL_CTX_set_cert_cb(
SSL_CTX *c,
int (*cb) (
SSL *ssl,
void *arg),
1693# ifndef OPENSSL_NO_RSA
1695__owur int SSL_CTX_use_RSAPrivateKey_ASN1(
SSL_CTX *ctx,
const unsigned char *d,
1700 const unsigned char *d,
long len);
1703 const unsigned char *d);
1708void SSL_CTX_set_default_passwd_cb_userdata(
SSL_CTX *ctx,
void *u);
1710void *SSL_CTX_get_default_passwd_cb_userdata(
SSL_CTX *ctx);
1712void SSL_set_default_passwd_cb_userdata(
SSL *s,
void *u);
1714void *SSL_get_default_passwd_cb_userdata(
SSL *s);
1720 const unsigned char *sid_ctx,
1721 unsigned int sid_ctx_len);
1725int SSL_is_dtls(
const SSL *s);
1726__owur int SSL_set_session_id_context(
SSL *ssl,
const unsigned char *sid_ctx,
1727 unsigned int sid_ctx_len);
1736__owur const char *SSL_get0_peername(
SSL *s);
1737void SSL_set_hostflags(
SSL *s,
unsigned int flags);
1741 uint8_t mtype, uint8_t ord);
1742__owur int SSL_dane_enable(
SSL *s,
const char *basedomain);
1743__owur int SSL_dane_tlsa_add(
SSL *s, uint8_t usage, uint8_t selector,
1744 uint8_t mtype,
unsigned const char *data, size_t dlen);
1746__owur int SSL_get0_dane_tlsa(
SSL *s, uint8_t *usage, uint8_t *selector,
1747 uint8_t *mtype,
unsigned const char **data,
1750
1752
1757unsigned long SSL_CTX_dane_set_flags(
SSL_CTX *ctx,
unsigned long flags);
1758unsigned long SSL_CTX_dane_clear_flags(
SSL_CTX *ctx,
unsigned long flags);
1759unsigned long SSL_dane_set_flags(
SSL *ssl,
unsigned long flags);
1760unsigned long SSL_dane_clear_flags(
SSL *ssl,
unsigned long flags);
1768# ifndef OPENSSL_NO_SRP
1769int SSL_CTX_set_srp_username(
SSL_CTX *ctx,
char *name);
1770int SSL_CTX_set_srp_password(
SSL_CTX *ctx,
char *password);
1771int SSL_CTX_set_srp_strength(
SSL_CTX *ctx,
int strength);
1772int SSL_CTX_set_srp_client_pwd_callback(
SSL_CTX *ctx,
1773 char *(*cb) (
SSL *,
void *));
1774int SSL_CTX_set_srp_verify_param_callback(
SSL_CTX *ctx,
1775 int (*cb) (
SSL *,
void *));
1776int SSL_CTX_set_srp_username_callback(
SSL_CTX *ctx,
1777 int (*cb) (
SSL *,
int *,
void *));
1778int SSL_CTX_set_srp_cb_arg(
SSL_CTX *ctx,
void *arg);
1782int SSL_set_srp_server_param_pw(
SSL *s,
const char *user,
const char *pass,
1788__owur char *SSL_get_srp_username(
SSL *s);
1789__owur char *SSL_get_srp_userinfo(
SSL *s);
1793
1796# define SSL_CLIENT_HELLO_SUCCESS 1
1797# define SSL_CLIENT_HELLO_ERROR 0
1798# define SSL_CLIENT_HELLO_RETRY (-1
)
1800typedef int (*SSL_client_hello_cb_fn) (
SSL *s,
int *al,
void *arg);
1801void SSL_CTX_set_client_hello_cb(
SSL_CTX *c, SSL_client_hello_cb_fn cb,
1803int SSL_client_hello_isv2(
SSL *s);
1804unsigned int SSL_client_hello_get0_legacy_version(
SSL *s);
1805size_t SSL_client_hello_get0_random(
SSL *s,
const unsigned char **out);
1806size_t SSL_client_hello_get0_session_id(
SSL *s,
const unsigned char **out);
1807size_t SSL_client_hello_get0_ciphers(
SSL *s,
const unsigned char **out);
1808size_t SSL_client_hello_get0_compression_methods(
SSL *s,
1809 const unsigned char **out);
1810int SSL_client_hello_get1_extensions_present(
SSL *s,
int **out, size_t *outlen);
1811int SSL_client_hello_get0_ext(
SSL *s,
unsigned int type,
1812 const unsigned char **out, size_t *outlen);
1814void SSL_certs_clear(
SSL *s);
1815void SSL_free(
SSL *ssl);
1818
1819
1820__owur int SSL_waiting_for_async(
SSL *s);
1829__owur int SSL_read(
SSL *ssl,
void *buf,
int num);
1830__owur int SSL_read_ex(
SSL *ssl,
void *buf, size_t num, size_t *readbytes);
1832# define SSL_READ_EARLY_DATA_ERROR 0
1833# define SSL_READ_EARLY_DATA_SUCCESS 1
1834# define SSL_READ_EARLY_DATA_FINISH 2
1836__owur int SSL_read_early_data(
SSL *s,
void *buf, size_t num,
1839__owur int SSL_peek_ex(
SSL *ssl,
void *buf, size_t num, size_t *readbytes);
1841__owur int SSL_write_ex(
SSL *s,
const void *buf, size_t num, size_t *written);
1842__owur int SSL_write_early_data(
SSL *s,
const void *buf, size_t num,
1844long SSL_ctrl(
SSL *ssl,
int cmd,
long larg,
void *parg);
1845long SSL_callback_ctrl(
SSL *,
int,
void (*)(
void));
1846long SSL_CTX_ctrl(
SSL_CTX *ctx,
int cmd,
long larg,
void *parg);
1847long SSL_CTX_callback_ctrl(
SSL_CTX *,
int,
void (*)(
void));
1849# define SSL_EARLY_DATA_NOT_SENT 0
1850# define SSL_EARLY_DATA_REJECTED 1
1851# define SSL_EARLY_DATA_ACCEPTED 2
1855__owur int SSL_get_error(
const SSL *s,
int ret_code);
1856__owur const char *SSL_get_version(
const SSL *s);
1862DEPRECATEDIN_1_1_0(__owur
const SSL_METHOD *SSLv3_method(
void))
1863DEPRECATEDIN_1_1_0(__owur
const SSL_METHOD *SSLv3_server_method(
void))
1864DEPRECATEDIN_1_1_0(__owur
const SSL_METHOD *SSLv3_client_method(
void))
1867#define SSLv23_method TLS_method
1868#define SSLv23_server_method TLS_server_method
1869#define SSLv23_client_method TLS_client_method
1876# ifndef OPENSSL_NO_TLS1_METHOD
1882# ifndef OPENSSL_NO_TLS1_1_METHOD
1888# ifndef OPENSSL_NO_TLS1_2_METHOD
1894# ifndef OPENSSL_NO_DTLS1_METHOD
1900# ifndef OPENSSL_NO_DTLS1_2_METHOD
1911__owur size_t DTLS_get_data_mtu(
const SSL *s);
1919int SSL_key_update(
SSL *s,
int updatetype);
1920int SSL_get_key_update_type(
const SSL *s);
1922int SSL_renegotiate_abbreviated(
SSL *s);
1926void SSL_CTX_set_post_handshake_auth(
SSL_CTX *ctx,
int val);
1927void SSL_set_post_handshake_auth(
SSL *s,
int val);
1932__owur const char *SSL_alert_type_string_long(
int value);
1933__owur const char *SSL_alert_type_string(
int value);
1934__owur const char *SSL_alert_desc_string_long(
int value);
1935__owur const char *SSL_alert_desc_string(
int value);
1937void SSL_set0_CA_list(
SSL *s,
STACK_OF(X509_NAME) *name_list);
1938void SSL_CTX_set0_CA_list(
SSL_CTX *ctx,
STACK_OF(X509_NAME) *name_list);
1945void SSL_set_client_CA_list(
SSL *s,
STACK_OF(X509_NAME) *name_list);
1946void SSL_CTX_set_client_CA_list(
SSL_CTX *ctx,
STACK_OF(X509_NAME) *name_list);
1952void SSL_set_connect_state(
SSL *s);
1953void SSL_set_accept_state(
SSL *s);
1955__owur long SSL_get_default_timeout(
const SSL *s);
1958# define SSL_library_init() OPENSSL_init_ssl(0
, NULL
)
1961__owur char *SSL_CIPHER_description(
const SSL_CIPHER *,
char *buf,
int size);
1969
1970struct evp_pkey_st *SSL_get_privatekey(
const SSL *ssl);
1975void SSL_CTX_set_quiet_shutdown(
SSL_CTX *ctx,
int mode);
1977void SSL_set_quiet_shutdown(
SSL *ssl,
int mode);
1979void SSL_set_shutdown(
SSL *ssl,
int mode);
1987 const char *CApath);
1988# define SSL_get0_session SSL_get_session
1994 void (*cb) (
const SSL *ssl,
int type,
int val));
1995void (*SSL_get_info_callback(
const SSL *ssl)) (
const SSL *ssl,
int type,
1999void SSL_set_verify_result(
SSL *ssl,
long v);
2000__owur long SSL_get_verify_result(
const SSL *ssl);
2003__owur size_t SSL_get_client_random(
const SSL *ssl,
unsigned char *out,
2005__owur size_t SSL_get_server_random(
const SSL *ssl,
unsigned char *out,
2008 unsigned char *out, size_t outlen);
2010 const unsigned char *in, size_t len);
2013#define SSL_get_ex_new_index(l, p, newf, dupf, freef)
2016void *SSL_get_ex_data(
const SSL *ssl,
int idx);
2017#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef)
2020void *SSL_SESSION_get_ex_data(
const SSL_SESSION *ss,
int idx);
2021#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef)
2023__owur int SSL_CTX_set_ex_data(
SSL_CTX *ssl,
int idx,
void *data);
2024void *SSL_CTX_get_ex_data(
const SSL_CTX *ssl,
int idx);
2026__owur int SSL_get_ex_data_X509_STORE_CTX_idx(
void);
2028# define SSL_CTX_sess_set_cache_size(ctx,t)
2030# define SSL_CTX_sess_get_cache_size(ctx)
2032# define SSL_CTX_set_session_cache_mode(ctx,m)
2034# define SSL_CTX_get_session_cache_mode(ctx)
2039# define SSL_CTX_get_read_ahead(ctx)
2041# define SSL_CTX_set_read_ahead(ctx,m)
2043# define SSL_CTX_get_max_cert_list(ctx)
2045# define SSL_CTX_set_max_cert_list(ctx,m)
2047# define SSL_get_max_cert_list(ssl)
2049# define SSL_set_max_cert_list(ssl,m)
2052# define SSL_CTX_set_max_send_fragment(ctx,m)
2054# define SSL_set_max_send_fragment(ssl,m)
2056# define SSL_CTX_set_split_send_fragment(ctx,m)
2058# define SSL_set_split_send_fragment(ssl,m)
2060# define SSL_CTX_set_max_pipelines(ctx,m)
2062# define SSL_set_max_pipelines(ssl,m)
2065void SSL_CTX_set_default_read_buffer_len(
SSL_CTX *ctx, size_t len);
2066void SSL_set_default_read_buffer_len(
SSL *s, size_t len);
2068# ifndef OPENSSL_NO_DH
2070void SSL_CTX_set_tmp_dh_callback(
SSL_CTX *ctx,
2073void SSL_set_tmp_dh_callback(
SSL *ssl,
2074 DH *(*dh) (
SSL *ssl,
int is_export,
2083STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(
void);
2087# define SSL_COMP_free_compression_methods() while(0
) continue
2093int SSL_CIPHER_get_digest_nid(
const SSL_CIPHER *c);
2094int SSL_bytes_to_cipher_list(
SSL *s,
const unsigned char *bytes, size_t len,
2095 int isv2format,
STACK_OF(SSL_CIPHER) **sk,
2099__owur int SSL_set_session_ticket_ext(
SSL *s,
void *ext_data,
int ext_len);
2101__owur int SSL_set_session_ticket_ext_cb(
SSL *s,
2106__owur int SSL_set_session_secret_cb(
SSL *s,
2110void SSL_CTX_set_not_resumable_session_callback(
SSL_CTX *ctx,
2111 int (*cb) (
SSL *ssl,
2113 is_forward_secure));
2115void SSL_set_not_resumable_session_callback(
SSL *ssl,
2116 int (*cb) (
SSL *ssl,
2117 int is_forward_secure));
2119void SSL_CTX_set_record_padding_callback(
SSL_CTX *ctx,
2120 size_t (*cb) (
SSL *ssl,
int type,
2121 size_t len,
void *arg));
2122void SSL_CTX_set_record_padding_callback_arg(
SSL_CTX *ctx,
void *arg);
2123void *SSL_CTX_get_record_padding_callback_arg(
const SSL_CTX *ctx);
2124int SSL_CTX_set_block_padding(
SSL_CTX *ctx, size_t block_size);
2126void SSL_set_record_padding_callback(
SSL *ssl,
2127 size_t (*cb) (
SSL *ssl,
int type,
2128 size_t len,
void *arg));
2129void SSL_set_record_padding_callback_arg(
SSL *ssl,
void *arg);
2130void *SSL_get_record_padding_callback_arg(
const SSL *ssl);
2131int SSL_set_block_padding(
SSL *ssl, size_t block_size);
2133int SSL_set_num_tickets(
SSL *s, size_t num_tickets);
2134size_t SSL_get_num_tickets(
const SSL *s);
2135int SSL_CTX_set_num_tickets(
SSL_CTX *ctx, size_t num_tickets);
2136size_t SSL_CTX_get_num_tickets(
const SSL_CTX *ctx);
2139# define SSL_cache_hit(s) SSL_session_reused(s)
2142__owur int SSL_session_reused(
const SSL *s);
2148unsigned int SSL_CONF_CTX_set_flags(
SSL_CONF_CTX *cctx,
unsigned int flags);
2150 unsigned int flags);
2160void SSL_add_ssl_module(
void);
2161int SSL_config(
SSL *s,
const char *name);
2162int SSL_CTX_config(
SSL_CTX *ctx,
const char *name);
2165void SSL_trace(
int write_p,
int version,
int content_type,
2166 const void *buf, size_t len, SSL *ssl,
void *arg);
2169# ifndef OPENSSL_NO_SOCK
2170int DTLSv1_listen(
SSL *s, BIO_ADDR *client);
2173# ifndef OPENSSL_NO_CT
2176
2177
2178
2180
2182 const STACK_OF(SCT) *scts,
void *arg);
2185
2186
2187
2188
2189
2190
2191
2192
2193
2195
2196int SSL_set_ct_validation_callback(
SSL *s, ssl_ct_validation_cb callback,
2198int SSL_CTX_set_ct_validation_callback(
SSL_CTX *ctx,
2199 ssl_ct_validation_cb callback,
2201#define SSL_disable_ct(s)
2202 ((void) SSL_set_validation_callback((s), NULL
, NULL
))
2203#define SSL_CTX_disable_ct(ctx)
2204 ((void) SSL_CTX_set_validation_callback((ctx), NULL
, NULL
))
2207
2208
2209
2212 SSL_CT_VALIDATION_PERMISSIVE = 0,
2213 SSL_CT_VALIDATION_STRICT
2217
2218
2219
2220
2221
2224int SSL_enable_ct(
SSL *s,
int validation_mode);
2225int SSL_CTX_enable_ct(
SSL_CTX *ctx,
int validation_mode);
2230int SSL_ct_is_enabled(
const SSL *s);
2231int SSL_CTX_ct_is_enabled(
const SSL_CTX *ctx);
2237
2238
2239
2240
2242
2243int SSL_CTX_set_default_ctlog_list_file(
SSL_CTX *ctx);
2246
2247
2248
2249
2251
2252int SSL_CTX_set_ctlog_list_file(
SSL_CTX *ctx,
const char *path);
2255
2257
2261
2262
2263
2264
2266
2273# define SSL_SECOP_OTHER_TYPE 0xffff0000
2274# define SSL_SECOP_OTHER_NONE 0
2275# define SSL_SECOP_OTHER_CIPHER (1
<< 16
)
2276# define SSL_SECOP_OTHER_CURVE (2
<< 16
)
2277# define SSL_SECOP_OTHER_DH (3
<< 16
)
2278# define SSL_SECOP_OTHER_PKEY (4
<< 16
)
2279# define SSL_SECOP_OTHER_SIGALG (5
<< 16
)
2280# define SSL_SECOP_OTHER_CERT (6
<< 16
)
2283# define SSL_SECOP_PEER 0x1000
2329void SSL_set_security_level(
SSL *s,
int level);
2330__owur int SSL_get_security_level(
const SSL *s);
2331void SSL_set_security_callback(
SSL *s,
2333 int op,
int bits,
int nid,
2334 void *other,
void *ex));
2335int (*SSL_get_security_callback(
const SSL *s)) (
const SSL *s,
2337 int bits,
int nid,
void *other,
2339void SSL_set0_security_ex_data(
SSL *s,
void *ex);
2342void SSL_CTX_set_security_level(
SSL_CTX *ctx,
int level);
2344void SSL_CTX_set_security_callback(
SSL_CTX *ctx,
2346 int op,
int bits,
int nid,
2347 void *other,
void *ex));
2348int (*SSL_CTX_get_security_callback(
const SSL_CTX *ctx)) (
const SSL *s,
2354void SSL_CTX_set0_security_ex_data(
SSL_CTX *ctx,
void *ex);
2355__owur void *SSL_CTX_get0_security_ex_data(
const SSL_CTX *ctx);
2358# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L
2359# define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L
2361# define OPENSSL_INIT_SSL_DEFAULT
2367__owur
const struct openssl_ssl_test_functions *SSL_test_functions(
void);
2374
2375typedef int SSL_TICKET_STATUS;
2379# define SSL_TICKET_FATAL_ERR_MALLOC 0
2381# define SSL_TICKET_FATAL_ERR_OTHER 1
2383# define SSL_TICKET_NONE 2
2385# define SSL_TICKET_EMPTY 3
2387# define SSL_TICKET_NO_DECRYPT 4
2389# define SSL_TICKET_SUCCESS 5
2391# define SSL_TICKET_SUCCESS_RENEW 6
2394typedef int SSL_TICKET_RETURN;
2397#define SSL_TICKET_RETURN_ABORT 0
2399#define SSL_TICKET_RETURN_IGNORE 1
2401#define SSL_TICKET_RETURN_IGNORE_RENEW 2
2403#define SSL_TICKET_RETURN_USE 3
2405#define SSL_TICKET_RETURN_USE_RENEW 4
2407typedef int (*SSL_CTX_generate_session_ticket_fn)(
SSL *s,
void *arg);
2408typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(
SSL *s,
SSL_SESSION *ss,
2409 const unsigned char *keyname,
2410 size_t keyname_length,
2411 SSL_TICKET_STATUS status,
2413int SSL_CTX_set_session_ticket_cb(
SSL_CTX *ctx,
2414 SSL_CTX_generate_session_ticket_fn gen_cb,
2415 SSL_CTX_decrypt_session_ticket_fn dec_cb,
2417int SSL_SESSION_set1_ticket_appdata(
SSL_SESSION *ss,
const void *data, size_t len);
2418int SSL_SESSION_get0_ticket_appdata(
SSL_SESSION *ss,
void **data, size_t *len);
2420extern const char SSL_version_str[];
2422typedef unsigned int (*DTLS_timer_cb)(
SSL *s,
unsigned int timer_us);
2424void DTLS_set_timer_cb(
SSL *s, DTLS_timer_cb cb);
2427typedef int (*SSL_allow_early_data_cb_fn)(
SSL *s,
void *arg);
2428void SSL_CTX_set_allow_early_data_cb(
SSL_CTX *ctx,
2429 SSL_allow_early_data_cb_fn cb,
2431void SSL_set_allow_early_data_cb(
SSL *s,
2432 SSL_allow_early_data_cb_fn cb,
#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)
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 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)
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