/src/deps/include/openssl/ssl.h
Line  | Count  | Source  | 
1  |  | /*  | 
2  |  |  * WARNING: do not edit!  | 
3  |  |  * Generated by Makefile from include/openssl/ssl.h.in  | 
4  |  |  *  | 
5  |  |  * Copyright 1995-2025 The OpenSSL Project Authors. All Rights Reserved.  | 
6  |  |  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved  | 
7  |  |  * Copyright 2005 Nokia. All rights reserved.  | 
8  |  |  *  | 
9  |  |  * Licensed under the Apache License 2.0 (the "License").  You may not use  | 
10  |  |  * this file except in compliance with the License.  You can obtain a copy  | 
11  |  |  * in the file LICENSE in the source distribution or at  | 
12  |  |  * https://www.openssl.org/source/license.html  | 
13  |  |  */  | 
14  |  |  | 
15  |  |  | 
16  |  |  | 
17  |  | #ifndef OPENSSL_SSL_H  | 
18  |  | # define OPENSSL_SSL_H  | 
19  |  | # pragma once  | 
20  |  |  | 
21  |  | # include <openssl/macros.h>  | 
22  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
23  |  | #  define HEADER_SSL_H  | 
24  |  | # endif  | 
25  |  |  | 
26  |  | # include <openssl/e_os2.h>  | 
27  |  | # include <openssl/e_ostime.h>  | 
28  |  | # include <openssl/opensslconf.h>  | 
29  |  | # include <openssl/comp.h>  | 
30  |  | # include <openssl/bio.h>  | 
31  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
32  |  | #  include <openssl/x509.h>  | 
33  |  | #  include <openssl/crypto.h>  | 
34  |  | #  include <openssl/buffer.h>  | 
35  |  | # endif  | 
36  |  | # include <openssl/lhash.h>  | 
37  |  | # include <openssl/pem.h>  | 
38  |  | # include <openssl/hmac.h>  | 
39  |  | # include <openssl/async.h>  | 
40  |  |  | 
41  |  | # include <openssl/safestack.h>  | 
42  |  | # include <openssl/symhacks.h>  | 
43  |  | # include <openssl/ct.h>  | 
44  |  | # include <openssl/sslerr.h>  | 
45  |  | # include <openssl/prov_ssl.h>  | 
46  |  | # ifndef OPENSSL_NO_STDIO  | 
47  |  | #  include <stdio.h>  | 
48  |  | # endif  | 
49  |  |  | 
50  |  | #ifdef  __cplusplus  | 
51  |  | extern "C" { | 
52  |  | #endif  | 
53  |  |  | 
54  |  | /* OpenSSL version number for ASN.1 encoding of the session information */  | 
55  |  | /*-  | 
56  |  |  * Version 0 - initial version  | 
57  |  |  * Version 1 - added the optional peer certificate  | 
58  |  |  */  | 
59  |  | # define SSL_SESSION_ASN1_VERSION 0x0001  | 
60  |  |  | 
61  |  | # define SSL_MAX_SSL_SESSION_ID_LENGTH           32  | 
62  |  | # define SSL_MAX_SID_CTX_LENGTH                  32  | 
63  |  |  | 
64  |  | # define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES     (512/8)  | 
65  |  | # define SSL_MAX_KEY_ARG_LENGTH                  8  | 
66  |  | /* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */  | 
67  |  |  | 
68  |  | /* The maximum number of encrypt/decrypt pipelines we can support */  | 
69  |  | # define SSL_MAX_PIPELINES  32  | 
70  |  |  | 
71  |  | /* text strings for the ciphers */  | 
72  |  |  | 
73  |  | /* These are used to specify which ciphers to use and not to use */  | 
74  |  |  | 
75  |  | # define SSL_TXT_LOW             "LOW"  | 
76  |  | # define SSL_TXT_MEDIUM          "MEDIUM"  | 
77  |  | # define SSL_TXT_HIGH            "HIGH"  | 
78  |  | # define SSL_TXT_FIPS            "FIPS"  | 
79  |  |  | 
80  |  | # define SSL_TXT_aNULL           "aNULL"  | 
81  |  | # define SSL_TXT_eNULL           "eNULL"  | 
82  |  | # define SSL_TXT_NULL            "NULL"  | 
83  |  |  | 
84  |  | # define SSL_TXT_kRSA            "kRSA"  | 
85  |  | # define SSL_TXT_kDHr            "kDHr"/* this cipher class has been removed */  | 
86  |  | # define SSL_TXT_kDHd            "kDHd"/* this cipher class has been removed */  | 
87  |  | # define SSL_TXT_kDH             "kDH"/* this cipher class has been removed */  | 
88  |  | # define SSL_TXT_kEDH            "kEDH"/* alias for kDHE */  | 
89  |  | # define SSL_TXT_kDHE            "kDHE"  | 
90  |  | # define SSL_TXT_kECDHr          "kECDHr"/* this cipher class has been removed */  | 
91  |  | # define SSL_TXT_kECDHe          "kECDHe"/* this cipher class has been removed */  | 
92  |  | # define SSL_TXT_kECDH           "kECDH"/* this cipher class has been removed */  | 
93  |  | # define SSL_TXT_kEECDH          "kEECDH"/* alias for kECDHE */  | 
94  |  | # define SSL_TXT_kECDHE          "kECDHE"  | 
95  |  | # define SSL_TXT_kPSK            "kPSK"  | 
96  |  | # define SSL_TXT_kRSAPSK         "kRSAPSK"  | 
97  |  | # define SSL_TXT_kECDHEPSK       "kECDHEPSK"  | 
98  |  | # define SSL_TXT_kDHEPSK         "kDHEPSK"  | 
99  |  | # define SSL_TXT_kGOST           "kGOST"  | 
100  |  | # define SSL_TXT_kGOST18         "kGOST18"  | 
101  |  | # define SSL_TXT_kSRP            "kSRP"  | 
102  |  |  | 
103  |  | # define SSL_TXT_aRSA            "aRSA"  | 
104  |  | # define SSL_TXT_aDSS            "aDSS"  | 
105  |  | # define SSL_TXT_aDH             "aDH"/* this cipher class has been removed */  | 
106  |  | # define SSL_TXT_aECDH           "aECDH"/* this cipher class has been removed */  | 
107  |  | # define SSL_TXT_aECDSA          "aECDSA"  | 
108  |  | # define SSL_TXT_aPSK            "aPSK"  | 
109  |  | # define SSL_TXT_aGOST94         "aGOST94"  | 
110  |  | # define SSL_TXT_aGOST01         "aGOST01"  | 
111  |  | # define SSL_TXT_aGOST12         "aGOST12"  | 
112  |  | # define SSL_TXT_aGOST           "aGOST"  | 
113  |  | # define SSL_TXT_aSRP            "aSRP"  | 
114  |  |  | 
115  |  | # define SSL_TXT_DSS             "DSS"  | 
116  |  | # define SSL_TXT_DH              "DH"  | 
117  |  | # define SSL_TXT_DHE             "DHE"/* same as "kDHE:-ADH" */  | 
118  |  | # define SSL_TXT_EDH             "EDH"/* alias for DHE */  | 
119  |  | # define SSL_TXT_ADH             "ADH"  | 
120  |  | # define SSL_TXT_RSA             "RSA"  | 
121  |  | # define SSL_TXT_ECDH            "ECDH"  | 
122  |  | # define SSL_TXT_EECDH           "EECDH"/* alias for ECDHE" */  | 
123  |  | # define SSL_TXT_ECDHE           "ECDHE"/* same as "kECDHE:-AECDH" */  | 
124  |  | # define SSL_TXT_AECDH           "AECDH"  | 
125  |  | # define SSL_TXT_ECDSA           "ECDSA"  | 
126  |  | # define SSL_TXT_PSK             "PSK"  | 
127  |  | # define SSL_TXT_SRP             "SRP"  | 
128  |  |  | 
129  |  | # define SSL_TXT_DES             "DES"  | 
130  |  | # define SSL_TXT_3DES            "3DES"  | 
131  |  | # define SSL_TXT_RC4             "RC4"  | 
132  |  | # define SSL_TXT_RC2             "RC2"  | 
133  |  | # define SSL_TXT_IDEA            "IDEA"  | 
134  |  | # define SSL_TXT_SEED            "SEED"  | 
135  |  | # define SSL_TXT_AES128          "AES128"  | 
136  |  | # define SSL_TXT_AES256          "AES256"  | 
137  |  | # define SSL_TXT_AES             "AES"  | 
138  |  | # define SSL_TXT_AES_GCM         "AESGCM"  | 
139  |  | # define SSL_TXT_AES_CCM         "AESCCM"  | 
140  |  | # define SSL_TXT_AES_CCM_8       "AESCCM8"  | 
141  |  | # define SSL_TXT_CAMELLIA128     "CAMELLIA128"  | 
142  |  | # define SSL_TXT_CAMELLIA256     "CAMELLIA256"  | 
143  |  | # define SSL_TXT_CAMELLIA        "CAMELLIA"  | 
144  |  | # define SSL_TXT_CHACHA20        "CHACHA20"  | 
145  |  | # define SSL_TXT_GOST            "GOST89"  | 
146  |  | # define SSL_TXT_ARIA            "ARIA"  | 
147  |  | # define SSL_TXT_ARIA_GCM        "ARIAGCM"  | 
148  |  | # define SSL_TXT_ARIA128         "ARIA128"  | 
149  |  | # define SSL_TXT_ARIA256         "ARIA256"  | 
150  |  | # define SSL_TXT_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912"  | 
151  |  | # define SSL_TXT_CBC             "CBC"  | 
152  |  |  | 
153  |  | # define SSL_TXT_MD5             "MD5"  | 
154  |  | # define SSL_TXT_SHA1            "SHA1"  | 
155  |  | # define SSL_TXT_SHA             "SHA"/* same as "SHA1" */  | 
156  |  | # define SSL_TXT_GOST94          "GOST94"  | 
157  |  | # define SSL_TXT_GOST89MAC       "GOST89MAC"  | 
158  |  | # define SSL_TXT_GOST12          "GOST12"  | 
159  |  | # define SSL_TXT_GOST89MAC12     "GOST89MAC12"  | 
160  |  | # define SSL_TXT_SHA256          "SHA256"  | 
161  |  | # define SSL_TXT_SHA384          "SHA384"  | 
162  |  |  | 
163  |  | # define SSL_TXT_SSLV3           "SSLv3"  | 
164  |  | # define SSL_TXT_TLSV1           "TLSv1"  | 
165  |  | # define SSL_TXT_TLSV1_1         "TLSv1.1"  | 
166  |  | # define SSL_TXT_TLSV1_2         "TLSv1.2"  | 
167  |  |  | 
168  |  | # define SSL_TXT_ALL             "ALL"  | 
169  |  |  | 
170  |  | /*-  | 
171  |  |  * COMPLEMENTOF* definitions. These identifiers are used to (de-select)  | 
172  |  |  * ciphers normally not being used.  | 
173  |  |  * Example: "RC4" will activate all ciphers using RC4 including ciphers  | 
174  |  |  * without authentication, which would normally disabled by DEFAULT (due  | 
175  |  |  * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT"  | 
176  |  |  * will make sure that it is also disabled in the specific selection.  | 
177  |  |  * COMPLEMENTOF* identifiers are portable between version, as adjustments  | 
178  |  |  * to the default cipher setup will also be included here.  | 
179  |  |  *  | 
180  |  |  * COMPLEMENTOFDEFAULT does not experience the same special treatment that  | 
181  |  |  * DEFAULT gets, as only selection is being done and no sorting as needed  | 
182  |  |  * for DEFAULT.  | 
183  |  |  */  | 
184  |  | # define SSL_TXT_CMPALL          "COMPLEMENTOFALL"  | 
185  |  | # define SSL_TXT_CMPDEF          "COMPLEMENTOFDEFAULT"  | 
186  |  |  | 
187  |  | /*  | 
188  |  |  * The following cipher list is used by default. It also is substituted when  | 
189  |  |  * an application-defined cipher list string starts with 'DEFAULT'.  | 
190  |  |  * This applies to ciphersuites for TLSv1.2 and below.  | 
191  |  |  * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list()  | 
192  |  |  * Update both macro and function simultaneously  | 
193  |  |  */  | 
194  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
195  |  | #  define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL"  | 
196  |  | /*  | 
197  |  |  * This is the default set of TLSv1.3 ciphersuites  | 
198  |  |  * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites()  | 
199  |  |  * Update both macro and function simultaneously  | 
200  |  |  */  | 
201  |  | #  define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \  | 
202  |  |                                    "TLS_CHACHA20_POLY1305_SHA256:" \  | 
203  |  |                                    "TLS_AES_128_GCM_SHA256"  | 
204  |  | # endif  | 
205  |  | /*  | 
206  |  |  * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always  | 
207  |  |  * starts with a reasonable order, and all we have to do for DEFAULT is  | 
208  |  |  * throwing out anonymous and unencrypted ciphersuites! (The latter are not  | 
209  |  |  * actually enabled by ALL, but "ALL:RSA" would enable some of them.)  | 
210  |  |  */  | 
211  |  |  | 
212  |  | /* Used in SSL_set_shutdown()/SSL_get_shutdown(); */  | 
213  |  | # define SSL_SENT_SHUTDOWN       1  | 
214  |  | # define SSL_RECEIVED_SHUTDOWN   2  | 
215  |  |  | 
216  |  | #ifdef __cplusplus  | 
217  |  | }  | 
218  |  | #endif  | 
219  |  |  | 
220  |  | #ifdef  __cplusplus  | 
221  |  | extern "C" { | 
222  |  | #endif  | 
223  |  |  | 
224  |  | # define SSL_FILETYPE_ASN1       X509_FILETYPE_ASN1  | 
225  |  | # define SSL_FILETYPE_PEM        X509_FILETYPE_PEM  | 
226  |  |  | 
227  |  | /*  | 
228  |  |  * This is needed to stop compilers complaining about the 'struct ssl_st *'  | 
229  |  |  * function parameters used to prototype callbacks in SSL_CTX.  | 
230  |  |  */  | 
231  |  | typedef struct ssl_st *ssl_crock_st;  | 
232  |  | typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;  | 
233  |  | typedef struct ssl_method_st SSL_METHOD;  | 
234  |  | typedef struct ssl_cipher_st SSL_CIPHER;  | 
235  |  | typedef struct ssl_session_st SSL_SESSION;  | 
236  |  | typedef struct tls_sigalgs_st TLS_SIGALGS;  | 
237  |  | typedef struct ssl_conf_ctx_st SSL_CONF_CTX;  | 
238  |  |  | 
239  |  | STACK_OF(SSL_CIPHER);  | 
240  |  |  | 
241  |  | /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/  | 
242  |  | typedef struct srtp_protection_profile_st { | 
243  |  |     const char *name;  | 
244  |  |     unsigned long id;  | 
245  |  | } SRTP_PROTECTION_PROFILE;  | 
246  |  | SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE)  | 
247  |  | #define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))  | 
248  |  | #define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx)))  | 
249  |  | #define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))  | 
250  |  | #define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null())  | 
251  |  | #define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n)))  | 
252  |  | #define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n))  | 
253  |  | #define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))  | 
254  |  | #define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))  | 
255  |  | #define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i)))  | 
256  |  | #define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))  | 
257  |  | #define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))  | 
258  |  | #define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))  | 
259  |  | #define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))  | 
260  |  | #define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)))  | 
261  |  | #define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))  | 
262  |  | #define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx))  | 
263  |  | #define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)))  | 
264  |  | #define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))  | 
265  |  | #define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))  | 
266  |  | #define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum)  | 
267  |  | #define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))  | 
268  |  | #define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))  | 
269  |  | #define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)))  | 
270  |  | #define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)))  | 
271  |  | #define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp)))  | 
272  |  |  | 
273  |  |  | 
274  |  |  | 
275  |  | typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data,  | 
276  |  |                                             int len, void *arg);  | 
277  |  | typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len,  | 
278  |  |                                         STACK_OF(SSL_CIPHER) *peer_ciphers,  | 
279  |  |                                         const SSL_CIPHER **cipher, void *arg);  | 
280  |  |  | 
281  |  | /* Extension context codes */  | 
282  |  | /* This extension is only allowed in TLS */  | 
283  |  | #define SSL_EXT_TLS_ONLY                        0x00001  | 
284  |  | /* This extension is only allowed in DTLS */  | 
285  |  | #define SSL_EXT_DTLS_ONLY                       0x00002  | 
286  |  | /* Some extensions may be allowed in DTLS but we don't implement them for it */  | 
287  |  | #define SSL_EXT_TLS_IMPLEMENTATION_ONLY         0x00004  | 
288  |  | /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */  | 
289  |  | #define SSL_EXT_SSL3_ALLOWED                    0x00008  | 
290  |  | /* Extension is only defined for TLS1.2 and below */  | 
291  |  | #define SSL_EXT_TLS1_2_AND_BELOW_ONLY           0x00010  | 
292  |  | /* Extension is only defined for TLS1.3 and above */  | 
293  |  | #define SSL_EXT_TLS1_3_ONLY                     0x00020  | 
294  |  | /* Ignore this extension during parsing if we are resuming */  | 
295  |  | #define SSL_EXT_IGNORE_ON_RESUMPTION            0x00040  | 
296  |  | #define SSL_EXT_CLIENT_HELLO                    0x00080  | 
297  |  | /* Really means TLS1.2 or below */  | 
298  |  | #define SSL_EXT_TLS1_2_SERVER_HELLO             0x00100  | 
299  |  | #define SSL_EXT_TLS1_3_SERVER_HELLO             0x00200  | 
300  |  | #define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS     0x00400  | 
301  |  | #define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST      0x00800  | 
302  |  | #define SSL_EXT_TLS1_3_CERTIFICATE              0x01000  | 
303  |  | #define SSL_EXT_TLS1_3_NEW_SESSION_TICKET       0x02000  | 
304  |  | #define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST      0x04000  | 
305  |  | #define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION  0x08000  | 
306  |  | /* When sending a raw public key in a certificate message */  | 
307  |  | #define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY           0x10000  | 
308  |  |  | 
309  |  | /* Typedefs for handling custom extensions */  | 
310  |  |  | 
311  |  | typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,  | 
312  |  |                                  const unsigned char **out, size_t *outlen,  | 
313  |  |                                  int *al, void *add_arg);  | 
314  |  |  | 
315  |  | typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,  | 
316  |  |                                    const unsigned char *out, void *add_arg);  | 
317  |  |  | 
318  |  | typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,  | 
319  |  |                                    const unsigned char *in, size_t inlen,  | 
320  |  |                                    int *al, void *parse_arg);  | 
321  |  |  | 
322  |  |  | 
323  |  | typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type,  | 
324  |  |                                         unsigned int context,  | 
325  |  |                                         const unsigned char **out,  | 
326  |  |                                         size_t *outlen, X509 *x,  | 
327  |  |                                         size_t chainidx,  | 
328  |  |                                         int *al, void *add_arg);  | 
329  |  |  | 
330  |  | typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type,  | 
331  |  |                                           unsigned int context,  | 
332  |  |                                           const unsigned char *out,  | 
333  |  |                                           void *add_arg);  | 
334  |  |  | 
335  |  | typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type,  | 
336  |  |                                           unsigned int context,  | 
337  |  |                                           const unsigned char *in,  | 
338  |  |                                           size_t inlen, X509 *x,  | 
339  |  |                                           size_t chainidx,  | 
340  |  |                                           int *al, void *parse_arg);  | 
341  |  |  | 
342  |  | /* Typedef for verification callback */  | 
343  |  | typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx);  | 
344  |  |  | 
345  |  | /* Typedef for SSL async callback */  | 
346  |  | typedef int (*SSL_async_callback_fn)(SSL *s, void *arg);  | 
347  |  |  | 
348  | 0  | #define SSL_OP_BIT(n)  ((uint64_t)1 << (uint64_t)n)  | 
349  |  |  | 
350  |  | /*  | 
351  |  |  * SSL/TLS connection options.  | 
352  |  |  */  | 
353  |  |     /* Disable Extended master secret */  | 
354  |  | # define SSL_OP_NO_EXTENDED_MASTER_SECRET                SSL_OP_BIT(0)  | 
355  |  |     /* Cleanse plaintext copies of data delivered to the application */  | 
356  |  | # define SSL_OP_CLEANSE_PLAINTEXT                        SSL_OP_BIT(1)  | 
357  |  |     /* Allow initial connection to servers that don't support RI */  | 
358  |  | # define SSL_OP_LEGACY_SERVER_CONNECT                    SSL_OP_BIT(2)  | 
359  |  |     /* Enable support for Kernel TLS */  | 
360  |  | # define SSL_OP_ENABLE_KTLS                              SSL_OP_BIT(3)  | 
361  | 0  | # define SSL_OP_TLSEXT_PADDING                           SSL_OP_BIT(4)  | 
362  |  | # define SSL_OP_SAFARI_ECDHE_ECDSA_BUG                   SSL_OP_BIT(6)  | 
363  |  | # define SSL_OP_IGNORE_UNEXPECTED_EOF                    SSL_OP_BIT(7)  | 
364  |  | # define SSL_OP_ALLOW_CLIENT_RENEGOTIATION               SSL_OP_BIT(8)  | 
365  |  | # define SSL_OP_DISABLE_TLSEXT_CA_NAMES                  SSL_OP_BIT(9)  | 
366  |  |     /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */  | 
367  |  | # define SSL_OP_ALLOW_NO_DHE_KEX                         SSL_OP_BIT(10)  | 
368  |  |     /*  | 
369  |  |      * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added  | 
370  |  |      * in OpenSSL 0.9.6d.  Usually (depending on the application protocol)  | 
371  |  |      * the workaround is not needed.  Unfortunately some broken SSL/TLS  | 
372  |  |      * implementations cannot handle it at all, which is why we include it  | 
373  |  |      * in SSL_OP_ALL. Added in 0.9.6e  | 
374  |  |      */  | 
375  |  | # define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS              SSL_OP_BIT(11)  | 
376  |  |     /* DTLS options */  | 
377  |  | # define SSL_OP_NO_QUERY_MTU                             SSL_OP_BIT(12)  | 
378  |  |     /* Turn on Cookie Exchange (on relevant for servers) */  | 
379  |  | # define SSL_OP_COOKIE_EXCHANGE                          SSL_OP_BIT(13)  | 
380  |  |     /* Don't use RFC4507 ticket extension */  | 
381  | 0  | # define SSL_OP_NO_TICKET                                SSL_OP_BIT(14)  | 
382  |  | # ifndef OPENSSL_NO_DTLS1_METHOD  | 
383  |  |     /*  | 
384  |  |      * Use Cisco's version identifier of DTLS_BAD_VER  | 
385  |  |      * (only with deprecated DTLSv1_client_method())  | 
386  |  |      */  | 
387  |  | #  define SSL_OP_CISCO_ANYCONNECT                        SSL_OP_BIT(15)  | 
388  |  | # endif  | 
389  |  |     /* As server, disallow session resumption on renegotiation */  | 
390  | 0  | # define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION   SSL_OP_BIT(16)  | 
391  |  |     /* Don't use compression even if supported */  | 
392  | 0  | # define SSL_OP_NO_COMPRESSION                           SSL_OP_BIT(17)  | 
393  |  |     /* Permit unsafe legacy renegotiation */  | 
394  |  | # define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION        SSL_OP_BIT(18)  | 
395  |  |     /* Disable encrypt-then-mac */  | 
396  |  | # define SSL_OP_NO_ENCRYPT_THEN_MAC                      SSL_OP_BIT(19)  | 
397  |  |     /*  | 
398  |  |      * Enable TLSv1.3 Compatibility mode. This is on by default. A future  | 
399  |  |      * version of OpenSSL may have this disabled by default.  | 
400  |  |      */  | 
401  |  | # define SSL_OP_ENABLE_MIDDLEBOX_COMPAT                  SSL_OP_BIT(20)  | 
402  |  |     /*  | 
403  |  |      * Prioritize Chacha20Poly1305 when client does.  | 
404  |  |      * Modifies SSL_OP_SERVER_PREFERENCE  | 
405  |  |      */  | 
406  |  | # define SSL_OP_PRIORITIZE_CHACHA                        SSL_OP_BIT(21)  | 
407  |  |     /*  | 
408  |  |      * Set on servers to choose cipher, curve or group according to server's  | 
409  |  |      * preferences.  | 
410  |  |      */  | 
411  | 0  | # define SSL_OP_SERVER_PREFERENCE                        SSL_OP_BIT(22)  | 
412  |  |     /* Equivalent definition for backwards compatibility: */  | 
413  | 0  | # define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_SERVER_PREFERENCE  | 
414  |  |     /*  | 
415  |  |      * If set, a server will allow a client to issue an SSLv3.0 version  | 
416  |  |      * number as latest version supported in the premaster secret, even when  | 
417  |  |      * TLSv1.0 (version 3.1) was announced in the client hello. Normally  | 
418  |  |      * this is forbidden to prevent version rollback attacks.  | 
419  |  |      */  | 
420  |  | # define SSL_OP_TLS_ROLLBACK_BUG                         SSL_OP_BIT(23)  | 
421  |  |     /*  | 
422  |  |      * Switches off automatic TLSv1.3 anti-replay protection for early data.  | 
423  |  |      * This is a server-side option only (no effect on the client).  | 
424  |  |      */  | 
425  |  | # define SSL_OP_NO_ANTI_REPLAY                           SSL_OP_BIT(24)  | 
426  |  | # define SSL_OP_NO_SSLv3                                 SSL_OP_BIT(25)  | 
427  |  | # define SSL_OP_NO_TLSv1                                 SSL_OP_BIT(26)  | 
428  |  | # define SSL_OP_NO_TLSv1_2                               SSL_OP_BIT(27)  | 
429  |  | # define SSL_OP_NO_TLSv1_1                               SSL_OP_BIT(28)  | 
430  |  | # define SSL_OP_NO_TLSv1_3                               SSL_OP_BIT(29)  | 
431  |  | # define SSL_OP_NO_DTLSv1                                SSL_OP_BIT(26)  | 
432  |  | # define SSL_OP_NO_DTLSv1_2                              SSL_OP_BIT(27)  | 
433  |  |     /* Disallow all renegotiation */  | 
434  | 0  | # define SSL_OP_NO_RENEGOTIATION                         SSL_OP_BIT(30)  | 
435  |  |     /*  | 
436  |  |      * Make server add server-hello extension from early version of  | 
437  |  |      * cryptopro draft, when GOST ciphersuite is negotiated. Required for  | 
438  |  |      * interoperability with CryptoPro CSP 3.x  | 
439  |  |      */  | 
440  |  | # define SSL_OP_CRYPTOPRO_TLSEXT_BUG                     SSL_OP_BIT(31)  | 
441  |  | /*  | 
442  |  |  * Disable RFC8879 certificate compression  | 
443  |  |  * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates,  | 
444  |  |  *     and ignore the extension when received.  | 
445  |  |  * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and  | 
446  |  |  *     subsequently indicating that receiving is not supported  | 
447  |  |  */  | 
448  |  | # define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION            SSL_OP_BIT(32)  | 
449  |  | # define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION            SSL_OP_BIT(33)  | 
450  |  |     /* Enable KTLS TX zerocopy on Linux */  | 
451  |  | # define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE         SSL_OP_BIT(34)  | 
452  |  | # define SSL_OP_PREFER_NO_DHE_KEX                        SSL_OP_BIT(35)  | 
453  |  | # define SSL_OP_LEGACY_EC_POINT_FORMATS                  SSL_OP_BIT(36)  | 
454  |  |  | 
455  |  | /*  | 
456  |  |  * Option "collections."  | 
457  |  |  */  | 
458  |  | # define SSL_OP_NO_SSL_MASK \  | 
459  |  |         ( SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 \  | 
460  |  |           | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3 )  | 
461  |  | # define SSL_OP_NO_DTLS_MASK \  | 
462  |  |         ( SSL_OP_NO_DTLSv1 | SSL_OP_NO_DTLSv1_2 )  | 
463  |  |  | 
464  |  | /* Various bug workarounds that should be rather harmless. */  | 
465  |  | # define SSL_OP_ALL \  | 
466  |  |         ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \  | 
467  |  |           | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG )  | 
468  |  |  | 
469  |  | /*  | 
470  |  |  * OBSOLETE OPTIONS retained for compatibility  | 
471  |  |  */  | 
472  |  |  | 
473  |  | # define SSL_OP_MICROSOFT_SESS_ID_BUG                    0x0  | 
474  |  | # define SSL_OP_NETSCAPE_CHALLENGE_BUG                   0x0  | 
475  |  | # define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG         0x0  | 
476  |  | # define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG              0x0  | 
477  |  | # define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER               0x0  | 
478  |  | # define SSL_OP_MSIE_SSLV2_RSA_PADDING                   0x0  | 
479  |  | # define SSL_OP_SSLEAY_080_CLIENT_DH_BUG                 0x0  | 
480  |  | # define SSL_OP_TLS_D5_BUG                               0x0  | 
481  |  | # define SSL_OP_TLS_BLOCK_PADDING_BUG                    0x0  | 
482  | 0  | # define SSL_OP_SINGLE_ECDH_USE                          0x0  | 
483  | 0  | # define SSL_OP_SINGLE_DH_USE                            0x0  | 
484  |  | # define SSL_OP_EPHEMERAL_RSA                            0x0  | 
485  |  | # define SSL_OP_NO_SSLv2                                 0x0  | 
486  |  | # define SSL_OP_PKCS1_CHECK_1                            0x0  | 
487  |  | # define SSL_OP_PKCS1_CHECK_2                            0x0  | 
488  |  | # define SSL_OP_NETSCAPE_CA_DN_BUG                       0x0  | 
489  |  | # define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG          0x0  | 
490  |  |  | 
491  |  | /*  | 
492  |  |  * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success  | 
493  |  |  * when just a single record has been written):  | 
494  |  |  */  | 
495  |  | # define SSL_MODE_ENABLE_PARTIAL_WRITE       0x00000001U  | 
496  |  | /*  | 
497  |  |  * Make it possible to retry SSL_write() with changed buffer location (buffer  | 
498  |  |  * contents must stay the same!); this is not the default to avoid the  | 
499  |  |  * misconception that non-blocking SSL_write() behaves like non-blocking  | 
500  |  |  * write():  | 
501  |  |  */  | 
502  |  | # define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U  | 
503  |  | /*  | 
504  |  |  * Never bother the application with retries if the transport is blocking:  | 
505  |  |  */  | 
506  |  | # define SSL_MODE_AUTO_RETRY 0x00000004U  | 
507  |  | /* Don't attempt to automatically build certificate chain */  | 
508  |  | # define SSL_MODE_NO_AUTO_CHAIN 0x00000008U  | 
509  |  | /*  | 
510  |  |  * Save RAM by releasing read and write buffers when they're empty. (SSL3 and  | 
511  |  |  * TLS only.) Released buffers are freed.  | 
512  |  |  */  | 
513  |  | # define SSL_MODE_RELEASE_BUFFERS 0x00000010U  | 
514  |  | /*  | 
515  |  |  * Send the current time in the Random fields of the ClientHello and  | 
516  |  |  * ServerHello records for compatibility with hypothetical implementations  | 
517  |  |  * that require it.  | 
518  |  |  */  | 
519  |  | # define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U  | 
520  |  | # define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U  | 
521  |  | /*  | 
522  |  |  * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications  | 
523  |  |  * that reconnect with a downgraded protocol version; see  | 
524  |  |  * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your  | 
525  |  |  * application attempts a normal handshake. Only use this in explicit  | 
526  |  |  * fallback retries, following the guidance in  | 
527  |  |  * draft-ietf-tls-downgrade-scsv-00.  | 
528  |  |  */  | 
529  |  | # define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U  | 
530  |  | /*  | 
531  |  |  * Support Asynchronous operation  | 
532  |  |  */  | 
533  |  | # define SSL_MODE_ASYNC 0x00000100U  | 
534  |  |  | 
535  |  | /*  | 
536  |  |  * When using DTLS/SCTP, include the terminating zero in the label  | 
537  |  |  * used for computing the endpoint-pair shared secret. Required for  | 
538  |  |  * interoperability with implementations having this bug like these  | 
539  |  |  * older version of OpenSSL:  | 
540  |  |  * - OpenSSL 1.0.0 series  | 
541  |  |  * - OpenSSL 1.0.1 series  | 
542  |  |  * - OpenSSL 1.0.2 series  | 
543  |  |  * - OpenSSL 1.1.0 series  | 
544  |  |  * - OpenSSL 1.1.1 and 1.1.1a  | 
545  |  |  */  | 
546  |  | # define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U  | 
547  |  |  | 
548  |  | /* Cert related flags */  | 
549  |  | /*  | 
550  |  |  * Many implementations ignore some aspects of the TLS standards such as  | 
551  |  |  * enforcing certificate chain algorithms. When this is set we enforce them.  | 
552  |  |  */  | 
553  |  | # define SSL_CERT_FLAG_TLS_STRICT                0x00000001U  | 
554  |  |  | 
555  |  | /* Suite B modes, takes same values as certificate verify flags */  | 
556  |  | # define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY       0x10000  | 
557  |  | /* Suite B 192 bit only mode */  | 
558  |  | # define SSL_CERT_FLAG_SUITEB_192_LOS            0x20000  | 
559  |  | /* Suite B 128 bit mode allowing 192 bit algorithms */  | 
560  |  | # define SSL_CERT_FLAG_SUITEB_128_LOS            0x30000  | 
561  |  |  | 
562  |  | /* Perform all sorts of protocol violations for testing purposes */  | 
563  |  | # define SSL_CERT_FLAG_BROKEN_PROTOCOL           0x10000000  | 
564  |  |  | 
565  |  | /* Flags for building certificate chains */  | 
566  |  | /* Treat any existing certificates as untrusted CAs */  | 
567  |  | # define SSL_BUILD_CHAIN_FLAG_UNTRUSTED          0x1  | 
568  |  | /* Don't include root CA in chain */  | 
569  |  | # define SSL_BUILD_CHAIN_FLAG_NO_ROOT            0x2  | 
570  |  | /* Just check certificates already there */  | 
571  |  | # define SSL_BUILD_CHAIN_FLAG_CHECK              0x4  | 
572  |  | /* Ignore verification errors */  | 
573  |  | # define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR       0x8  | 
574  |  | /* Clear verification errors from queue */  | 
575  |  | # define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR        0x10  | 
576  |  |  | 
577  |  | /* Flags returned by SSL_check_chain */  | 
578  |  | /* Certificate can be used with this session */  | 
579  |  | # define CERT_PKEY_VALID         0x1  | 
580  |  | /* Certificate can also be used for signing */  | 
581  |  | # define CERT_PKEY_SIGN          0x2  | 
582  |  | /* EE certificate signing algorithm OK */  | 
583  |  | # define CERT_PKEY_EE_SIGNATURE  0x10  | 
584  |  | /* CA signature algorithms OK */  | 
585  |  | # define CERT_PKEY_CA_SIGNATURE  0x20  | 
586  |  | /* EE certificate parameters OK */  | 
587  |  | # define CERT_PKEY_EE_PARAM      0x40  | 
588  |  | /* CA certificate parameters OK */  | 
589  |  | # define CERT_PKEY_CA_PARAM      0x80  | 
590  |  | /* Signing explicitly allowed as opposed to SHA1 fallback */  | 
591  |  | # define CERT_PKEY_EXPLICIT_SIGN 0x100  | 
592  |  | /* Client CA issuer names match (always set for server cert) */  | 
593  |  | # define CERT_PKEY_ISSUER_NAME   0x200  | 
594  |  | /* Cert type matches client types (always set for server cert) */  | 
595  |  | # define CERT_PKEY_CERT_TYPE     0x400  | 
596  |  | /* Cert chain suitable to Suite B */  | 
597  |  | # define CERT_PKEY_SUITEB        0x800  | 
598  |  | /* Cert pkey valid for raw public key use */  | 
599  |  | # define CERT_PKEY_RPK           0x1000  | 
600  |  |  | 
601  |  | # define SSL_CONF_FLAG_CMDLINE           0x1  | 
602  |  | # define SSL_CONF_FLAG_FILE              0x2  | 
603  |  | # define SSL_CONF_FLAG_CLIENT            0x4  | 
604  |  | # define SSL_CONF_FLAG_SERVER            0x8  | 
605  |  | # define SSL_CONF_FLAG_SHOW_ERRORS       0x10  | 
606  |  | # define SSL_CONF_FLAG_CERTIFICATE       0x20  | 
607  |  | # define SSL_CONF_FLAG_REQUIRE_PRIVATE   0x40  | 
608  |  | /* Configuration value types */  | 
609  |  | # define SSL_CONF_TYPE_UNKNOWN           0x0  | 
610  |  | # define SSL_CONF_TYPE_STRING            0x1  | 
611  |  | # define SSL_CONF_TYPE_FILE              0x2  | 
612  |  | # define SSL_CONF_TYPE_DIR               0x3  | 
613  |  | # define SSL_CONF_TYPE_NONE              0x4  | 
614  |  | # define SSL_CONF_TYPE_STORE             0x5  | 
615  |  |  | 
616  |  | /* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */  | 
617  |  | # define SSL_COOKIE_LENGTH                       4096  | 
618  |  |  | 
619  |  | /*  | 
620  |  |  * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they | 
621  |  |  * cannot be used to clear bits.  | 
622  |  |  */  | 
623  |  |  | 
624  |  | uint64_t SSL_CTX_get_options(const SSL_CTX *ctx);  | 
625  |  | uint64_t SSL_get_options(const SSL *s);  | 
626  |  | uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op);  | 
627  |  | uint64_t SSL_clear_options(SSL *s, uint64_t op);  | 
628  |  | uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op);  | 
629  |  | uint64_t SSL_set_options(SSL *s, uint64_t op);  | 
630  |  |  | 
631  |  | # define SSL_CTX_set_mode(ctx,op) \  | 
632  | 0  |         SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)  | 
633  |  | # define SSL_CTX_clear_mode(ctx,op) \  | 
634  |  |         SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL)  | 
635  |  | # define SSL_CTX_get_mode(ctx) \  | 
636  |  |         SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL)  | 
637  |  | # define SSL_clear_mode(ssl,op) \  | 
638  |  |         SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL)  | 
639  |  | # define SSL_set_mode(ssl,op) \  | 
640  |  |         SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL)  | 
641  |  | # define SSL_get_mode(ssl) \  | 
642  |  |         SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL)  | 
643  |  | # define SSL_set_mtu(ssl, mtu) \  | 
644  |  |         SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL)  | 
645  |  | # define DTLS_set_link_mtu(ssl, mtu) \  | 
646  |  |         SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL)  | 
647  |  | # define DTLS_get_link_min_mtu(ssl) \  | 
648  |  |         SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL)  | 
649  |  |  | 
650  |  | # define SSL_get_secure_renegotiation_support(ssl) \  | 
651  |  |         SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL)  | 
652  |  |  | 
653  |  | # define SSL_CTX_set_cert_flags(ctx,op) \  | 
654  |  |         SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL)  | 
655  |  | # define SSL_set_cert_flags(s,op) \  | 
656  |  |         SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL)  | 
657  |  | # define SSL_CTX_clear_cert_flags(ctx,op) \  | 
658  |  |         SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)  | 
659  |  | # define SSL_clear_cert_flags(s,op) \  | 
660  |  |         SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL)  | 
661  |  |  | 
662  |  | void SSL_CTX_set_msg_callback(SSL_CTX *ctx,  | 
663  |  |                               void (*cb) (int write_p, int version,  | 
664  |  |                                           int content_type, const void *buf,  | 
665  |  |                                           size_t len, SSL *ssl, void *arg));  | 
666  |  | void SSL_set_msg_callback(SSL *ssl,  | 
667  |  |                           void (*cb) (int write_p, int version,  | 
668  |  |                                       int content_type, const void *buf,  | 
669  |  |                                       size_t len, SSL *ssl, void *arg));  | 
670  |  | # define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))  | 
671  |  | # define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg))  | 
672  |  |  | 
673  |  | # define SSL_get_extms_support(s) \  | 
674  |  |         SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL)  | 
675  |  |  | 
676  |  | # ifndef OPENSSL_NO_SRP  | 
677  |  | /* see tls_srp.c */  | 
678  |  | #  ifndef OPENSSL_NO_DEPRECATED_3_0  | 
679  |  | OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s);  | 
680  |  | OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx);  | 
681  |  | OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx);  | 
682  |  | OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx);  | 
683  |  | OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s,  | 
684  |  |                                                                     int *ad);  | 
685  |  | OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s);  | 
686  |  | #  endif  | 
687  |  | # endif  | 
688  |  |  | 
689  |  | /* 100k max cert list */  | 
690  |  | # define SSL_MAX_CERT_LIST_DEFAULT (1024*100)  | 
691  |  |  | 
692  |  | # define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT      (1024*20)  | 
693  |  |  | 
694  |  | /*  | 
695  |  |  * This callback type is used inside SSL_CTX, SSL, and in the functions that  | 
696  |  |  * set them. It is used to override the generation of SSL/TLS session IDs in  | 
697  |  |  * a server. Return value should be zero on an error, non-zero to proceed.  | 
698  |  |  * Also, callbacks should themselves check if the id they generate is unique  | 
699  |  |  * otherwise the SSL handshake will fail with an error - callbacks can do  | 
700  |  |  * this using the 'ssl' value they're passed by;  | 
701  |  |  * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in  | 
702  |  |  * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32  | 
703  |  |  * bytes. The callback can alter this length to be less if desired. It is  | 
704  |  |  * also an error for the callback to set the size to zero.  | 
705  |  |  */  | 
706  |  | typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id,  | 
707  |  |                                unsigned int *id_len);  | 
708  |  |  | 
709  |  | # define SSL_SESS_CACHE_OFF                      0x0000  | 
710  |  | # define SSL_SESS_CACHE_CLIENT                   0x0001  | 
711  |  | # define SSL_SESS_CACHE_SERVER                   0x0002  | 
712  |  | # define SSL_SESS_CACHE_BOTH     (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)  | 
713  |  | # define SSL_SESS_CACHE_NO_AUTO_CLEAR            0x0080  | 
714  |  | /* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */  | 
715  |  | # define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP       0x0100  | 
716  |  | # define SSL_SESS_CACHE_NO_INTERNAL_STORE        0x0200  | 
717  |  | # define SSL_SESS_CACHE_NO_INTERNAL \  | 
718  |  |         (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE)  | 
719  |  | # define SSL_SESS_CACHE_UPDATE_TIME              0x0400  | 
720  |  |  | 
721  |  | LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx);  | 
722  |  | # define SSL_CTX_sess_number(ctx) \  | 
723  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)  | 
724  |  | # define SSL_CTX_sess_connect(ctx) \  | 
725  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)  | 
726  |  | # define SSL_CTX_sess_connect_good(ctx) \  | 
727  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)  | 
728  |  | # define SSL_CTX_sess_connect_renegotiate(ctx) \  | 
729  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)  | 
730  |  | # define SSL_CTX_sess_accept(ctx) \  | 
731  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)  | 
732  |  | # define SSL_CTX_sess_accept_renegotiate(ctx) \  | 
733  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)  | 
734  |  | # define SSL_CTX_sess_accept_good(ctx) \  | 
735  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)  | 
736  |  | # define SSL_CTX_sess_hits(ctx) \  | 
737  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)  | 
738  |  | # define SSL_CTX_sess_cb_hits(ctx) \  | 
739  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)  | 
740  |  | # define SSL_CTX_sess_misses(ctx) \  | 
741  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)  | 
742  |  | # define SSL_CTX_sess_timeouts(ctx) \  | 
743  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)  | 
744  |  | # define SSL_CTX_sess_cache_full(ctx) \  | 
745  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)  | 
746  |  |  | 
747  |  | void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx,  | 
748  |  |                              int (*new_session_cb) (struct ssl_st *ssl,  | 
749  |  |                                                     SSL_SESSION *sess));  | 
750  |  | int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,  | 
751  |  |                                               SSL_SESSION *sess);  | 
752  |  | void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,  | 
753  |  |                                 void (*remove_session_cb) (struct ssl_ctx_st  | 
754  |  |                                                            *ctx,  | 
755  |  |                                                            SSL_SESSION *sess));  | 
756  |  | void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx,  | 
757  |  |                                                   SSL_SESSION *sess);  | 
758  |  | void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx,  | 
759  |  |                              SSL_SESSION *(*get_session_cb) (struct ssl_st  | 
760  |  |                                                              *ssl,  | 
761  |  |                                                              const unsigned char  | 
762  |  |                                                              *data, int len,  | 
763  |  |                                                              int *copy));  | 
764  |  | SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl,  | 
765  |  |                                                        const unsigned char *data,  | 
766  |  |                                                        int len, int *copy);  | 
767  |  | void SSL_CTX_set_info_callback(SSL_CTX *ctx,  | 
768  |  |                                void (*cb) (const SSL *ssl, int type, int val));  | 
769  |  | void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type,  | 
770  |  |                                                  int val);  | 
771  |  | void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx,  | 
772  |  |                                 int (*client_cert_cb) (SSL *ssl, X509 **x509,  | 
773  |  |                                                        EVP_PKEY **pkey));  | 
774  |  | int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509,  | 
775  |  |                                                  EVP_PKEY **pkey);  | 
776  |  | # ifndef OPENSSL_NO_ENGINE  | 
777  |  | __owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e);  | 
778  |  | # endif  | 
779  |  | void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx,  | 
780  |  |                                     int (*app_gen_cookie_cb) (SSL *ssl,  | 
781  |  |                                                               unsigned char  | 
782  |  |                                                               *cookie,  | 
783  |  |                                                               unsigned int  | 
784  |  |                                                               *cookie_len));  | 
785  |  | void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,  | 
786  |  |                                   int (*app_verify_cookie_cb) (SSL *ssl,  | 
787  |  |                                                                const unsigned  | 
788  |  |                                                                char *cookie,  | 
789  |  |                                                                unsigned int  | 
790  |  |                                                                cookie_len));  | 
791  |  |  | 
792  |  | void SSL_CTX_set_stateless_cookie_generate_cb(  | 
793  |  |     SSL_CTX *ctx,  | 
794  |  |     int (*gen_stateless_cookie_cb) (SSL *ssl,  | 
795  |  |                                     unsigned char *cookie,  | 
796  |  |                                     size_t *cookie_len));  | 
797  |  | void SSL_CTX_set_stateless_cookie_verify_cb(  | 
798  |  |     SSL_CTX *ctx,  | 
799  |  |     int (*verify_stateless_cookie_cb) (SSL *ssl,  | 
800  |  |                                        const unsigned char *cookie,  | 
801  |  |                                        size_t cookie_len));  | 
802  |  | # ifndef OPENSSL_NO_NEXTPROTONEG  | 
803  |  |  | 
804  |  | typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl,  | 
805  |  |                                               const unsigned char **out,  | 
806  |  |                                               unsigned int *outlen,  | 
807  |  |                                               void *arg);  | 
808  |  | void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s,  | 
809  |  |                                            SSL_CTX_npn_advertised_cb_func cb,  | 
810  |  |                                            void *arg);  | 
811  |  | #  define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb  | 
812  |  |  | 
813  |  | typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s,  | 
814  |  |                                           unsigned char **out,  | 
815  |  |                                           unsigned char *outlen,  | 
816  |  |                                           const unsigned char *in,  | 
817  |  |                                           unsigned int inlen,  | 
818  |  |                                           void *arg);  | 
819  |  | void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,  | 
820  |  |                                       SSL_CTX_npn_select_cb_func cb,  | 
821  |  |                                       void *arg);  | 
822  |  | #  define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb  | 
823  |  |  | 
824  |  | void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,  | 
825  |  |                                     unsigned *len);  | 
826  |  | #  define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated  | 
827  |  | # endif  | 
828  |  |  | 
829  |  | __owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,  | 
830  |  |                                  const unsigned char *server, unsigned int server_len,  | 
831  |  |                                  const unsigned char *client,  | 
832  |  |                                  unsigned int client_len);  | 
833  |  |  | 
834  |  | # define OPENSSL_NPN_UNSUPPORTED 0  | 
835  |  | # define OPENSSL_NPN_NEGOTIATED  1  | 
836  |  | # define OPENSSL_NPN_NO_OVERLAP  2  | 
837  |  |  | 
838  |  | __owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos,  | 
839  |  |                                    unsigned int protos_len);  | 
840  |  | __owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,  | 
841  |  |                                unsigned int protos_len);  | 
842  |  | typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl,  | 
843  |  |                                            const unsigned char **out,  | 
844  |  |                                            unsigned char *outlen,  | 
845  |  |                                            const unsigned char *in,  | 
846  |  |                                            unsigned int inlen,  | 
847  |  |                                            void *arg);  | 
848  |  | void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,  | 
849  |  |                                 SSL_CTX_alpn_select_cb_func cb,  | 
850  |  |                                 void *arg);  | 
851  |  | void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,  | 
852  |  |                             unsigned int *len);  | 
853  |  |  | 
854  |  | # ifndef OPENSSL_NO_PSK  | 
855  |  | /*  | 
856  |  |  * the maximum length of the buffer given to callbacks containing the  | 
857  |  |  * resulting identity/psk  | 
858  |  |  */  | 
859  |  | #  define PSK_MAX_IDENTITY_LEN 256  | 
860  |  | #  define PSK_MAX_PSK_LEN 512  | 
861  |  | typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl,  | 
862  |  |                                                const char *hint,  | 
863  |  |                                                char *identity,  | 
864  |  |                                                unsigned int max_identity_len,  | 
865  |  |                                                unsigned char *psk,  | 
866  |  |                                                unsigned int max_psk_len);  | 
867  |  | void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb);  | 
868  |  | void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb);  | 
869  |  |  | 
870  |  | typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl,  | 
871  |  |                                                const char *identity,  | 
872  |  |                                                unsigned char *psk,  | 
873  |  |                                                unsigned int max_psk_len);  | 
874  |  | void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb);  | 
875  |  | void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb);  | 
876  |  |  | 
877  |  | __owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint);  | 
878  |  | __owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint);  | 
879  |  | const char *SSL_get_psk_identity_hint(const SSL *s);  | 
880  |  | const char *SSL_get_psk_identity(const SSL *s);  | 
881  |  | # endif  | 
882  |  |  | 
883  |  | typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl,  | 
884  |  |                                             const unsigned char *identity,  | 
885  |  |                                             size_t identity_len,  | 
886  |  |                                             SSL_SESSION **sess);  | 
887  |  | typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md,  | 
888  |  |                                            const unsigned char **id,  | 
889  |  |                                            size_t *idlen,  | 
890  |  |                                            SSL_SESSION **sess);  | 
891  |  |  | 
892  |  | void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb);  | 
893  |  | void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx,  | 
894  |  |                                            SSL_psk_find_session_cb_func cb);  | 
895  |  | void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb);  | 
896  |  | void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx,  | 
897  |  |                                           SSL_psk_use_session_cb_func cb);  | 
898  |  |  | 
899  |  | /* Register callbacks to handle custom TLS Extensions for client or server. */  | 
900  |  |  | 
901  |  | __owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx,  | 
902  |  |                                          unsigned int ext_type);  | 
903  |  |  | 
904  |  | __owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx,  | 
905  |  |                                          unsigned int ext_type,  | 
906  |  |                                          custom_ext_add_cb add_cb,  | 
907  |  |                                          custom_ext_free_cb free_cb,  | 
908  |  |                                          void *add_arg,  | 
909  |  |                                          custom_ext_parse_cb parse_cb,  | 
910  |  |                                          void *parse_arg);  | 
911  |  |  | 
912  |  | __owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx,  | 
913  |  |                                          unsigned int ext_type,  | 
914  |  |                                          custom_ext_add_cb add_cb,  | 
915  |  |                                          custom_ext_free_cb free_cb,  | 
916  |  |                                          void *add_arg,  | 
917  |  |                                          custom_ext_parse_cb parse_cb,  | 
918  |  |                                          void *parse_arg);  | 
919  |  |  | 
920  |  | __owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type,  | 
921  |  |                                   unsigned int context,  | 
922  |  |                                   SSL_custom_ext_add_cb_ex add_cb,  | 
923  |  |                                   SSL_custom_ext_free_cb_ex free_cb,  | 
924  |  |                                   void *add_arg,  | 
925  |  |                                   SSL_custom_ext_parse_cb_ex parse_cb,  | 
926  |  |                                   void *parse_arg);  | 
927  |  |  | 
928  |  | __owur int SSL_extension_supported(unsigned int ext_type);  | 
929  |  |  | 
930  |  | # define SSL_NOTHING            1  | 
931  |  | # define SSL_WRITING            2  | 
932  |  | # define SSL_READING            3  | 
933  |  | # define SSL_X509_LOOKUP        4  | 
934  |  | # define SSL_ASYNC_PAUSED       5  | 
935  |  | # define SSL_ASYNC_NO_JOBS      6  | 
936  |  | # define SSL_CLIENT_HELLO_CB    7  | 
937  |  | # define SSL_RETRY_VERIFY       8  | 
938  |  |  | 
939  |  | /* These will only be used when doing non-blocking IO */  | 
940  |  | # define SSL_want_nothing(s)         (SSL_want(s) == SSL_NOTHING)  | 
941  |  | # define SSL_want_read(s)            (SSL_want(s) == SSL_READING)  | 
942  |  | # define SSL_want_write(s)           (SSL_want(s) == SSL_WRITING)  | 
943  |  | # define SSL_want_x509_lookup(s)     (SSL_want(s) == SSL_X509_LOOKUP)  | 
944  |  | # define SSL_want_retry_verify(s)    (SSL_want(s) == SSL_RETRY_VERIFY)  | 
945  |  | # define SSL_want_async(s)           (SSL_want(s) == SSL_ASYNC_PAUSED)  | 
946  |  | # define SSL_want_async_job(s)       (SSL_want(s) == SSL_ASYNC_NO_JOBS)  | 
947  |  | # define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB)  | 
948  |  |  | 
949  |  | # define SSL_MAC_FLAG_READ_MAC_STREAM 1  | 
950  |  | # define SSL_MAC_FLAG_WRITE_MAC_STREAM 2  | 
951  |  | # define SSL_MAC_FLAG_READ_MAC_TLSTREE 4  | 
952  |  | # define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8  | 
953  |  |  | 
954  |  | /*  | 
955  |  |  * A callback for logging out TLS key material. This callback should log out  | 
956  |  |  * |line| followed by a newline.  | 
957  |  |  */  | 
958  |  | typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line);  | 
959  |  |  | 
960  |  | /*  | 
961  |  |  * SSL_CTX_set_keylog_callback configures a callback to log key material. This  | 
962  |  |  * is intended for debugging use with tools like Wireshark. The cb function  | 
963  |  |  * should log line followed by a newline.  | 
964  |  |  */  | 
965  |  | void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb);  | 
966  |  |  | 
967  |  | /*  | 
968  |  |  * SSL_CTX_get_keylog_callback returns the callback configured by  | 
969  |  |  * SSL_CTX_set_keylog_callback.  | 
970  |  |  */  | 
971  |  | SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx);  | 
972  |  |  | 
973  |  | int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data);  | 
974  |  | uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx);  | 
975  |  | int SSL_set_max_early_data(SSL *s, uint32_t max_early_data);  | 
976  |  | uint32_t SSL_get_max_early_data(const SSL *s);  | 
977  |  | int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data);  | 
978  |  | uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx);  | 
979  |  | int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data);  | 
980  |  | uint32_t SSL_get_recv_max_early_data(const SSL *s);  | 
981  |  |  | 
982  |  | #ifdef __cplusplus  | 
983  |  | }  | 
984  |  | #endif  | 
985  |  |  | 
986  |  | # include <openssl/ssl2.h>  | 
987  |  | # include <openssl/ssl3.h>  | 
988  |  | # include <openssl/tls1.h>      /* This is mostly sslv3 with a few tweaks */  | 
989  |  | # include <openssl/dtls1.h>     /* Datagram TLS */  | 
990  |  | # include <openssl/srtp.h>      /* Support for the use_srtp extension */  | 
991  |  | # include <openssl/quic.h>  | 
992  |  |  | 
993  |  | #ifdef  __cplusplus  | 
994  |  | extern "C" { | 
995  |  | #endif  | 
996  |  |  | 
997  |  | /*  | 
998  |  |  * These need to be after the above set of includes due to a compiler bug  | 
999  |  |  * in VisualStudio 2015  | 
1000  |  |  */  | 
1001  |  | SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER)  | 
1002  |  | #define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk))  | 
1003  |  | #define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx)))  | 
1004  |  | #define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp)))  | 
1005  |  | #define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null())  | 
1006  |  | #define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n)))  | 
1007  |  | #define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n))  | 
1008  |  | #define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk))  | 
1009  |  | #define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk))  | 
1010  |  | #define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i)))  | 
1011  |  | #define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)))  | 
1012  |  | #define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))  | 
1013  |  | #define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))  | 
1014  |  | #define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk)))  | 
1015  |  | #define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk)))  | 
1016  |  | #define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_freefunc_type(freefunc))  | 
1017  |  | #define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx))  | 
1018  |  | #define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr)))  | 
1019  |  | #define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))  | 
1020  |  | #define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))  | 
1021  |  | #define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum)  | 
1022  |  | #define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk))  | 
1023  |  | #define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk))  | 
1024  |  | #define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk)))  | 
1025  |  | #define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc)))  | 
1026  |  | #define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp)))  | 
1027  |  |  | 
1028  |  |  | 
1029  |  | /* compatibility */  | 
1030  |  | # define SSL_set_app_data(s,arg)         (SSL_set_ex_data(s,0,(char *)(arg)))  | 
1031  |  | # define SSL_get_app_data(s)             (SSL_get_ex_data(s,0))  | 
1032  |  | # define SSL_SESSION_set_app_data(s,a)   (SSL_SESSION_set_ex_data(s,0, \  | 
1033  |  |                                                                   (char *)(a)))  | 
1034  |  | # define SSL_SESSION_get_app_data(s)     (SSL_SESSION_get_ex_data(s,0))  | 
1035  |  | # define SSL_CTX_get_app_data(ctx)       (SSL_CTX_get_ex_data(ctx,0))  | 
1036  |  | # define SSL_CTX_set_app_data(ctx,arg)   (SSL_CTX_set_ex_data(ctx,0, \  | 
1037  |  |                                                               (char *)(arg)))  | 
1038  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
1039  |  | OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug);  | 
1040  |  | # endif  | 
1041  |  |  | 
1042  |  | /* TLSv1.3 KeyUpdate message types */  | 
1043  |  | /* -1 used so that this is an invalid value for the on-the-wire protocol */  | 
1044  |  | #define SSL_KEY_UPDATE_NONE             -1  | 
1045  |  | /* Values as defined for the on-the-wire protocol */  | 
1046  |  | #define SSL_KEY_UPDATE_NOT_REQUESTED     0  | 
1047  |  | #define SSL_KEY_UPDATE_REQUESTED         1  | 
1048  |  |  | 
1049  |  | /*  | 
1050  |  |  * The valid handshake states (one for each type message sent and one for each  | 
1051  |  |  * type of message received). There are also two "special" states:  | 
1052  |  |  * TLS = TLS or DTLS state  | 
1053  |  |  * DTLS = DTLS specific state  | 
1054  |  |  * CR/SR = Client Read/Server Read  | 
1055  |  |  * CW/SW = Client Write/Server Write  | 
1056  |  |  *  | 
1057  |  |  * The "special" states are:  | 
1058  |  |  * TLS_ST_BEFORE = No handshake has been initiated yet  | 
1059  |  |  * TLS_ST_OK = A handshake has been successfully completed  | 
1060  |  |  */  | 
1061  |  | typedef enum { | 
1062  |  |     TLS_ST_BEFORE,  | 
1063  |  |     TLS_ST_OK,  | 
1064  |  |     DTLS_ST_CR_HELLO_VERIFY_REQUEST,  | 
1065  |  |     TLS_ST_CR_SRVR_HELLO,  | 
1066  |  |     TLS_ST_CR_CERT,  | 
1067  |  |     TLS_ST_CR_COMP_CERT,  | 
1068  |  |     TLS_ST_CR_CERT_STATUS,  | 
1069  |  |     TLS_ST_CR_KEY_EXCH,  | 
1070  |  |     TLS_ST_CR_CERT_REQ,  | 
1071  |  |     TLS_ST_CR_SRVR_DONE,  | 
1072  |  |     TLS_ST_CR_SESSION_TICKET,  | 
1073  |  |     TLS_ST_CR_CHANGE,  | 
1074  |  |     TLS_ST_CR_FINISHED,  | 
1075  |  |     TLS_ST_CW_CLNT_HELLO,  | 
1076  |  |     TLS_ST_CW_CERT,  | 
1077  |  |     TLS_ST_CW_COMP_CERT,  | 
1078  |  |     TLS_ST_CW_KEY_EXCH,  | 
1079  |  |     TLS_ST_CW_CERT_VRFY,  | 
1080  |  |     TLS_ST_CW_CHANGE,  | 
1081  |  |     TLS_ST_CW_NEXT_PROTO,  | 
1082  |  |     TLS_ST_CW_FINISHED,  | 
1083  |  |     TLS_ST_SW_HELLO_REQ,  | 
1084  |  |     TLS_ST_SR_CLNT_HELLO,  | 
1085  |  |     DTLS_ST_SW_HELLO_VERIFY_REQUEST,  | 
1086  |  |     TLS_ST_SW_SRVR_HELLO,  | 
1087  |  |     TLS_ST_SW_CERT,  | 
1088  |  |     TLS_ST_SW_COMP_CERT,  | 
1089  |  |     TLS_ST_SW_KEY_EXCH,  | 
1090  |  |     TLS_ST_SW_CERT_REQ,  | 
1091  |  |     TLS_ST_SW_SRVR_DONE,  | 
1092  |  |     TLS_ST_SR_CERT,  | 
1093  |  |     TLS_ST_SR_COMP_CERT,  | 
1094  |  |     TLS_ST_SR_KEY_EXCH,  | 
1095  |  |     TLS_ST_SR_CERT_VRFY,  | 
1096  |  |     TLS_ST_SR_NEXT_PROTO,  | 
1097  |  |     TLS_ST_SR_CHANGE,  | 
1098  |  |     TLS_ST_SR_FINISHED,  | 
1099  |  |     TLS_ST_SW_SESSION_TICKET,  | 
1100  |  |     TLS_ST_SW_CERT_STATUS,  | 
1101  |  |     TLS_ST_SW_CHANGE,  | 
1102  |  |     TLS_ST_SW_FINISHED,  | 
1103  |  |     TLS_ST_SW_ENCRYPTED_EXTENSIONS,  | 
1104  |  |     TLS_ST_CR_ENCRYPTED_EXTENSIONS,  | 
1105  |  |     TLS_ST_CR_CERT_VRFY,  | 
1106  |  |     TLS_ST_SW_CERT_VRFY,  | 
1107  |  |     TLS_ST_CR_HELLO_REQ,  | 
1108  |  |     TLS_ST_SW_KEY_UPDATE,  | 
1109  |  |     TLS_ST_CW_KEY_UPDATE,  | 
1110  |  |     TLS_ST_SR_KEY_UPDATE,  | 
1111  |  |     TLS_ST_CR_KEY_UPDATE,  | 
1112  |  |     TLS_ST_EARLY_DATA,  | 
1113  |  |     TLS_ST_PENDING_EARLY_DATA_END,  | 
1114  |  |     TLS_ST_CW_END_OF_EARLY_DATA,  | 
1115  |  |     TLS_ST_SR_END_OF_EARLY_DATA  | 
1116  |  | } OSSL_HANDSHAKE_STATE;  | 
1117  |  |  | 
1118  |  | /*  | 
1119  |  |  * Most of the following state values are no longer used and are defined to be  | 
1120  |  |  * the closest equivalent value in the current state machine code. Not all  | 
1121  |  |  * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT  | 
1122  |  |  * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP,  | 
1123  |  |  * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT.  | 
1124  |  |  */  | 
1125  |  |  | 
1126  |  | # define SSL_ST_CONNECT                  0x1000  | 
1127  |  | # define SSL_ST_ACCEPT                   0x2000  | 
1128  |  |  | 
1129  |  | # define SSL_ST_MASK                     0x0FFF  | 
1130  |  |  | 
1131  |  | # define SSL_CB_LOOP                     0x01  | 
1132  |  | # define SSL_CB_EXIT                     0x02  | 
1133  |  | # define SSL_CB_READ                     0x04  | 
1134  |  | # define SSL_CB_WRITE                    0x08  | 
1135  |  | # define SSL_CB_ALERT                    0x4000/* used in callback */  | 
1136  |  | # define SSL_CB_READ_ALERT               (SSL_CB_ALERT|SSL_CB_READ)  | 
1137  |  | # define SSL_CB_WRITE_ALERT              (SSL_CB_ALERT|SSL_CB_WRITE)  | 
1138  |  | # define SSL_CB_ACCEPT_LOOP              (SSL_ST_ACCEPT|SSL_CB_LOOP)  | 
1139  |  | # define SSL_CB_ACCEPT_EXIT              (SSL_ST_ACCEPT|SSL_CB_EXIT)  | 
1140  |  | # define SSL_CB_CONNECT_LOOP             (SSL_ST_CONNECT|SSL_CB_LOOP)  | 
1141  |  | # define SSL_CB_CONNECT_EXIT             (SSL_ST_CONNECT|SSL_CB_EXIT)  | 
1142  |  | # define SSL_CB_HANDSHAKE_START          0x10  | 
1143  |  | # define SSL_CB_HANDSHAKE_DONE           0x20  | 
1144  |  |  | 
1145  |  | /* Is the SSL_connection established? */  | 
1146  |  | # define SSL_in_connect_init(a)          (SSL_in_init(a) && !SSL_is_server(a))  | 
1147  |  | # define SSL_in_accept_init(a)           (SSL_in_init(a) && SSL_is_server(a))  | 
1148  |  | int SSL_in_init(const SSL *s);  | 
1149  |  | int SSL_in_before(const SSL *s);  | 
1150  |  | int SSL_is_init_finished(const SSL *s);  | 
1151  |  |  | 
1152  |  | /*  | 
1153  |  |  * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you  | 
1154  |  |  * should not need these  | 
1155  |  |  */  | 
1156  |  | # define SSL_ST_READ_HEADER                      0xF0  | 
1157  |  | # define SSL_ST_READ_BODY                        0xF1  | 
1158  |  | # define SSL_ST_READ_DONE                        0xF2  | 
1159  |  |  | 
1160  |  | /*-  | 
1161  |  |  * Obtain latest Finished message  | 
1162  |  |  *   -- that we sent (SSL_get_finished)  | 
1163  |  |  *   -- that we expected from peer (SSL_get_peer_finished).  | 
1164  |  |  * Returns length (0 == no Finished so far), copies up to 'count' bytes.  | 
1165  |  |  */  | 
1166  |  | size_t SSL_get_finished(const SSL *s, void *buf, size_t count);  | 
1167  |  | size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);  | 
1168  |  |  | 
1169  |  | /*  | 
1170  |  |  * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are  | 
1171  |  |  * 'ored' with SSL_VERIFY_PEER if they are desired  | 
1172  |  |  */  | 
1173  | 0  | # define SSL_VERIFY_NONE                 0x00  | 
1174  | 0  | # define SSL_VERIFY_PEER                 0x01  | 
1175  |  | # define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02  | 
1176  |  | # define SSL_VERIFY_CLIENT_ONCE          0x04  | 
1177  |  | # define SSL_VERIFY_POST_HANDSHAKE       0x08  | 
1178  |  |  | 
1179  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
1180  |  | #  define OpenSSL_add_ssl_algorithms()   SSL_library_init()  | 
1181  |  | #  define SSLeay_add_ssl_algorithms()    SSL_library_init()  | 
1182  |  | # endif  | 
1183  |  |  | 
1184  |  | /* More backward compatibility */  | 
1185  |  | # define SSL_get_cipher(s) \  | 
1186  |  |                 SSL_CIPHER_get_name(SSL_get_current_cipher(s))  | 
1187  |  | # define SSL_get_cipher_bits(s,np) \  | 
1188  |  |                 SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)  | 
1189  |  | # define SSL_get_cipher_version(s) \  | 
1190  |  |                 SSL_CIPHER_get_version(SSL_get_current_cipher(s))  | 
1191  |  | # define SSL_get_cipher_name(s) \  | 
1192  |  |                 SSL_CIPHER_get_name(SSL_get_current_cipher(s))  | 
1193  |  | # define SSL_get_time(a)         SSL_SESSION_get_time(a)  | 
1194  |  | # define SSL_set_time(a,b)       SSL_SESSION_set_time((a),(b))  | 
1195  |  | # define SSL_get_timeout(a)      SSL_SESSION_get_timeout(a)  | 
1196  |  | # define SSL_set_timeout(a,b)    SSL_SESSION_set_timeout((a),(b))  | 
1197  |  |  | 
1198  |  | # define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id)  | 
1199  |  | # define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id)  | 
1200  |  |  | 
1201  |  | DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)  | 
1202  |  | # define SSL_AD_REASON_OFFSET            1000/* offset to get SSL_R_... value  | 
1203  |  |                                               * from SSL_AD_... */  | 
1204  |  | /* These alert types are for SSLv3 and TLSv1 */  | 
1205  |  | # define SSL_AD_CLOSE_NOTIFY             SSL3_AD_CLOSE_NOTIFY  | 
1206  |  | /* fatal */  | 
1207  |  | # define SSL_AD_UNEXPECTED_MESSAGE       SSL3_AD_UNEXPECTED_MESSAGE  | 
1208  |  | /* fatal */  | 
1209  |  | # define SSL_AD_BAD_RECORD_MAC           SSL3_AD_BAD_RECORD_MAC  | 
1210  |  | # define SSL_AD_DECRYPTION_FAILED        TLS1_AD_DECRYPTION_FAILED  | 
1211  |  | # define SSL_AD_RECORD_OVERFLOW          TLS1_AD_RECORD_OVERFLOW  | 
1212  |  | /* fatal */  | 
1213  |  | # define SSL_AD_DECOMPRESSION_FAILURE    SSL3_AD_DECOMPRESSION_FAILURE  | 
1214  |  | /* fatal */  | 
1215  |  | # define SSL_AD_HANDSHAKE_FAILURE        SSL3_AD_HANDSHAKE_FAILURE  | 
1216  |  | /* Not for TLS */  | 
1217  |  | # define SSL_AD_NO_CERTIFICATE           SSL3_AD_NO_CERTIFICATE  | 
1218  |  | # define SSL_AD_BAD_CERTIFICATE          SSL3_AD_BAD_CERTIFICATE  | 
1219  |  | # define SSL_AD_UNSUPPORTED_CERTIFICATE  SSL3_AD_UNSUPPORTED_CERTIFICATE  | 
1220  |  | # define SSL_AD_CERTIFICATE_REVOKED      SSL3_AD_CERTIFICATE_REVOKED  | 
1221  |  | # define SSL_AD_CERTIFICATE_EXPIRED      SSL3_AD_CERTIFICATE_EXPIRED  | 
1222  |  | # define SSL_AD_CERTIFICATE_UNKNOWN      SSL3_AD_CERTIFICATE_UNKNOWN  | 
1223  |  | /* fatal */  | 
1224  |  | # define SSL_AD_ILLEGAL_PARAMETER        SSL3_AD_ILLEGAL_PARAMETER  | 
1225  |  | /* fatal */  | 
1226  |  | # define SSL_AD_UNKNOWN_CA               TLS1_AD_UNKNOWN_CA  | 
1227  |  | /* fatal */  | 
1228  |  | # define SSL_AD_ACCESS_DENIED            TLS1_AD_ACCESS_DENIED  | 
1229  |  | /* fatal */  | 
1230  |  | # define SSL_AD_DECODE_ERROR             TLS1_AD_DECODE_ERROR  | 
1231  |  | # define SSL_AD_DECRYPT_ERROR            TLS1_AD_DECRYPT_ERROR  | 
1232  |  | /* fatal */  | 
1233  |  | # define SSL_AD_EXPORT_RESTRICTION       TLS1_AD_EXPORT_RESTRICTION  | 
1234  |  | /* fatal */  | 
1235  |  | # define SSL_AD_PROTOCOL_VERSION         TLS1_AD_PROTOCOL_VERSION  | 
1236  |  | /* fatal */  | 
1237  |  | # define SSL_AD_INSUFFICIENT_SECURITY    TLS1_AD_INSUFFICIENT_SECURITY  | 
1238  |  | /* fatal */  | 
1239  |  | # define SSL_AD_INTERNAL_ERROR           TLS1_AD_INTERNAL_ERROR  | 
1240  |  | # define SSL_AD_USER_CANCELLED           TLS1_AD_USER_CANCELLED  | 
1241  |  | # define SSL_AD_NO_RENEGOTIATION         TLS1_AD_NO_RENEGOTIATION  | 
1242  |  | # define SSL_AD_MISSING_EXTENSION        TLS13_AD_MISSING_EXTENSION  | 
1243  |  | # define SSL_AD_CERTIFICATE_REQUIRED     TLS13_AD_CERTIFICATE_REQUIRED  | 
1244  |  | # define SSL_AD_UNSUPPORTED_EXTENSION    TLS1_AD_UNSUPPORTED_EXTENSION  | 
1245  |  | # define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE  | 
1246  |  | # define SSL_AD_UNRECOGNIZED_NAME        TLS1_AD_UNRECOGNIZED_NAME  | 
1247  |  | # define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE  | 
1248  |  | # define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE  | 
1249  |  | /* fatal */  | 
1250  |  | # define SSL_AD_UNKNOWN_PSK_IDENTITY     TLS1_AD_UNKNOWN_PSK_IDENTITY  | 
1251  |  | /* fatal */  | 
1252  |  | # define SSL_AD_INAPPROPRIATE_FALLBACK   TLS1_AD_INAPPROPRIATE_FALLBACK  | 
1253  |  | # define SSL_AD_NO_APPLICATION_PROTOCOL  TLS1_AD_NO_APPLICATION_PROTOCOL  | 
1254  | 0  | # define SSL_ERROR_NONE                  0  | 
1255  |  | # define SSL_ERROR_SSL                   1  | 
1256  | 0  | # define SSL_ERROR_WANT_READ             2  | 
1257  | 0  | # define SSL_ERROR_WANT_WRITE            3  | 
1258  |  | # define SSL_ERROR_WANT_X509_LOOKUP      4  | 
1259  | 0  | # define SSL_ERROR_SYSCALL               5/* look at error stack/return  | 
1260  |  |                                            * value/errno */  | 
1261  | 0  | # define SSL_ERROR_ZERO_RETURN           6  | 
1262  |  | # define SSL_ERROR_WANT_CONNECT          7  | 
1263  |  | # define SSL_ERROR_WANT_ACCEPT           8  | 
1264  |  | # define SSL_ERROR_WANT_ASYNC            9  | 
1265  |  | # define SSL_ERROR_WANT_ASYNC_JOB       10  | 
1266  |  | # define SSL_ERROR_WANT_CLIENT_HELLO_CB 11  | 
1267  |  | # define SSL_ERROR_WANT_RETRY_VERIFY    12  | 
1268  |  |  | 
1269  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1270  | 0  | #  define SSL_CTRL_SET_TMP_DH                    3  | 
1271  |  | #  define SSL_CTRL_SET_TMP_ECDH                  4  | 
1272  |  | #  define SSL_CTRL_SET_TMP_DH_CB                 6  | 
1273  |  | # endif  | 
1274  |  |  | 
1275  |  | # define SSL_CTRL_GET_CLIENT_CERT_REQUEST        9  | 
1276  |  | # define SSL_CTRL_GET_NUM_RENEGOTIATIONS         10  | 
1277  |  | # define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS       11  | 
1278  |  | # define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS       12  | 
1279  |  | # define SSL_CTRL_GET_FLAGS                      13  | 
1280  |  | # define SSL_CTRL_EXTRA_CHAIN_CERT               14  | 
1281  |  | # define SSL_CTRL_SET_MSG_CALLBACK               15  | 
1282  |  | # define SSL_CTRL_SET_MSG_CALLBACK_ARG           16  | 
1283  |  | /* only applies to datagram connections */  | 
1284  |  | # define SSL_CTRL_SET_MTU                17  | 
1285  |  | /* Stats */  | 
1286  |  | # define SSL_CTRL_SESS_NUMBER                    20  | 
1287  |  | # define SSL_CTRL_SESS_CONNECT                   21  | 
1288  |  | # define SSL_CTRL_SESS_CONNECT_GOOD              22  | 
1289  |  | # define SSL_CTRL_SESS_CONNECT_RENEGOTIATE       23  | 
1290  |  | # define SSL_CTRL_SESS_ACCEPT                    24  | 
1291  |  | # define SSL_CTRL_SESS_ACCEPT_GOOD               25  | 
1292  |  | # define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE        26  | 
1293  |  | # define SSL_CTRL_SESS_HIT                       27  | 
1294  |  | # define SSL_CTRL_SESS_CB_HIT                    28  | 
1295  |  | # define SSL_CTRL_SESS_MISSES                    29  | 
1296  |  | # define SSL_CTRL_SESS_TIMEOUTS                  30  | 
1297  |  | # define SSL_CTRL_SESS_CACHE_FULL                31  | 
1298  | 0  | # define SSL_CTRL_MODE                           33  | 
1299  |  | # define SSL_CTRL_GET_READ_AHEAD                 40  | 
1300  |  | # define SSL_CTRL_SET_READ_AHEAD                 41  | 
1301  |  | # define SSL_CTRL_SET_SESS_CACHE_SIZE            42  | 
1302  |  | # define SSL_CTRL_GET_SESS_CACHE_SIZE            43  | 
1303  | 0  | # define SSL_CTRL_SET_SESS_CACHE_MODE            44  | 
1304  |  | # define SSL_CTRL_GET_SESS_CACHE_MODE            45  | 
1305  |  | # define SSL_CTRL_GET_MAX_CERT_LIST              50  | 
1306  |  | # define SSL_CTRL_SET_MAX_CERT_LIST              51  | 
1307  |  | # define SSL_CTRL_SET_MAX_SEND_FRAGMENT          52  | 
1308  |  | /* see tls1.h for macros based on these */  | 
1309  |  | # define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB       53  | 
1310  |  | # define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG      54  | 
1311  | 0  | # define SSL_CTRL_SET_TLSEXT_HOSTNAME            55  | 
1312  |  | # define SSL_CTRL_SET_TLSEXT_DEBUG_CB            56  | 
1313  |  | # define SSL_CTRL_SET_TLSEXT_DEBUG_ARG           57  | 
1314  |  | # define SSL_CTRL_GET_TLSEXT_TICKET_KEYS         58  | 
1315  |  | # define SSL_CTRL_SET_TLSEXT_TICKET_KEYS         59  | 
1316  |  | /*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT    60 */  | 
1317  |  | /*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */  | 
1318  |  | /*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */  | 
1319  |  | # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB       63  | 
1320  |  | # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG   64  | 
1321  |  | # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE     65  | 
1322  |  | # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS     66  | 
1323  |  | # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS     67  | 
1324  |  | # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS      68  | 
1325  |  | # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS      69  | 
1326  |  | # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP        70  | 
1327  |  | # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP        71  | 
1328  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1329  |  | #  define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB      72  | 
1330  |  | # endif  | 
1331  |  | # define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB    75  | 
1332  |  | # define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB                76  | 
1333  |  | # define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB             77  | 
1334  |  | # define SSL_CTRL_SET_SRP_ARG            78  | 
1335  |  | # define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME               79  | 
1336  |  | # define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH               80  | 
1337  |  | # define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD               81  | 
1338  |  | # define DTLS_CTRL_GET_TIMEOUT           73  | 
1339  |  | # define DTLS_CTRL_HANDLE_TIMEOUT        74  | 
1340  |  | # define SSL_CTRL_GET_RI_SUPPORT                 76  | 
1341  |  | # define SSL_CTRL_CLEAR_MODE                     78  | 
1342  |  | # define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB      79  | 
1343  |  | # define SSL_CTRL_GET_EXTRA_CHAIN_CERTS          82  | 
1344  |  | # define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS        83  | 
1345  |  | # define SSL_CTRL_CHAIN                          88  | 
1346  |  | # define SSL_CTRL_CHAIN_CERT                     89  | 
1347  |  | # define SSL_CTRL_GET_GROUPS                     90  | 
1348  |  | # define SSL_CTRL_SET_GROUPS                     91  | 
1349  | 0  | # define SSL_CTRL_SET_GROUPS_LIST                92  | 
1350  |  | # define SSL_CTRL_GET_SHARED_GROUP               93  | 
1351  |  | # define SSL_CTRL_SET_SIGALGS                    97  | 
1352  |  | # define SSL_CTRL_SET_SIGALGS_LIST               98  | 
1353  |  | # define SSL_CTRL_CERT_FLAGS                     99  | 
1354  |  | # define SSL_CTRL_CLEAR_CERT_FLAGS               100  | 
1355  |  | # define SSL_CTRL_SET_CLIENT_SIGALGS             101  | 
1356  |  | # define SSL_CTRL_SET_CLIENT_SIGALGS_LIST        102  | 
1357  |  | # define SSL_CTRL_GET_CLIENT_CERT_TYPES          103  | 
1358  |  | # define SSL_CTRL_SET_CLIENT_CERT_TYPES          104  | 
1359  |  | # define SSL_CTRL_BUILD_CERT_CHAIN               105  | 
1360  |  | # define SSL_CTRL_SET_VERIFY_CERT_STORE          106  | 
1361  |  | # define SSL_CTRL_SET_CHAIN_CERT_STORE           107  | 
1362  |  | # define SSL_CTRL_GET_PEER_SIGNATURE_NID         108  | 
1363  |  | # define SSL_CTRL_GET_PEER_TMP_KEY               109  | 
1364  |  | # define SSL_CTRL_GET_RAW_CIPHERLIST             110  | 
1365  |  | # define SSL_CTRL_GET_EC_POINT_FORMATS           111  | 
1366  |  | # define SSL_CTRL_GET_CHAIN_CERTS                115  | 
1367  |  | # define SSL_CTRL_SELECT_CURRENT_CERT            116  | 
1368  |  | # define SSL_CTRL_SET_CURRENT_CERT               117  | 
1369  |  | # define SSL_CTRL_SET_DH_AUTO                    118  | 
1370  |  | # define DTLS_CTRL_SET_LINK_MTU                  120  | 
1371  |  | # define DTLS_CTRL_GET_LINK_MIN_MTU              121  | 
1372  |  | # define SSL_CTRL_GET_EXTMS_SUPPORT              122  | 
1373  | 0  | # define SSL_CTRL_SET_MIN_PROTO_VERSION          123  | 
1374  | 0  | # define SSL_CTRL_SET_MAX_PROTO_VERSION          124  | 
1375  |  | # define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT        125  | 
1376  |  | # define SSL_CTRL_SET_MAX_PIPELINES              126  | 
1377  |  | # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE     127  | 
1378  |  | # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB       128  | 
1379  |  | # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG   129  | 
1380  |  | # define SSL_CTRL_GET_MIN_PROTO_VERSION          130  | 
1381  |  | # define SSL_CTRL_GET_MAX_PROTO_VERSION          131  | 
1382  |  | # define SSL_CTRL_GET_SIGNATURE_NID              132  | 
1383  |  | # define SSL_CTRL_GET_TMP_KEY                    133  | 
1384  |  | # define SSL_CTRL_GET_NEGOTIATED_GROUP           134  | 
1385  |  | # define SSL_CTRL_GET_IANA_GROUPS                135  | 
1386  |  | # define SSL_CTRL_SET_RETRY_VERIFY               136  | 
1387  |  | # define SSL_CTRL_GET_VERIFY_CERT_STORE          137  | 
1388  |  | # define SSL_CTRL_GET_CHAIN_CERT_STORE           138  | 
1389  |  | # define SSL_CTRL_GET0_IMPLEMENTED_GROUPS        139  | 
1390  |  | # define SSL_CTRL_GET_SIGNATURE_NAME             140  | 
1391  |  | # define SSL_CTRL_GET_PEER_SIGNATURE_NAME        141  | 
1392  |  | # define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP_EX        142  | 
1393  |  | # define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP_EX        143  | 
1394  |  | # define SSL_CERT_SET_FIRST                      1  | 
1395  |  | # define SSL_CERT_SET_NEXT                       2  | 
1396  |  | # define SSL_CERT_SET_SERVER                     3  | 
1397  |  | # define DTLSv1_get_timeout(ssl, arg) \  | 
1398  |  |         SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg))  | 
1399  |  | # define DTLSv1_handle_timeout(ssl) \  | 
1400  |  |         SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL)  | 
1401  |  | # define SSL_num_renegotiations(ssl) \  | 
1402  |  |         SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)  | 
1403  |  | # define SSL_clear_num_renegotiations(ssl) \  | 
1404  |  |         SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)  | 
1405  |  | # define SSL_total_renegotiations(ssl) \  | 
1406  |  |         SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)  | 
1407  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1408  |  | #  define SSL_CTX_set_tmp_dh(ctx,dh) \  | 
1409  | 0  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))  | 
1410  |  | # endif  | 
1411  |  | # define SSL_CTX_set_dh_auto(ctx, onoff) \  | 
1412  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL)  | 
1413  |  | # define SSL_set_dh_auto(s, onoff) \  | 
1414  |  |         SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL)  | 
1415  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1416  |  | #  define SSL_set_tmp_dh(ssl,dh) \  | 
1417  |  |         SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh))  | 
1418  |  | # endif  | 
1419  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1420  |  | #  define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \  | 
1421  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))  | 
1422  |  | #  define SSL_set_tmp_ecdh(ssl,ecdh) \  | 
1423  |  |         SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh))  | 
1424  |  | # endif  | 
1425  |  | # define SSL_CTX_add_extra_chain_cert(ctx,x509) \  | 
1426  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509))  | 
1427  |  | # define SSL_CTX_get_extra_chain_certs(ctx,px509) \  | 
1428  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509)  | 
1429  |  | # define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \  | 
1430  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509)  | 
1431  |  | # define SSL_CTX_clear_extra_chain_certs(ctx) \  | 
1432  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL)  | 
1433  |  | # define SSL_CTX_set0_chain(ctx,sk) \  | 
1434  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk))  | 
1435  |  | # define SSL_CTX_set1_chain(ctx,sk) \  | 
1436  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk))  | 
1437  |  | # define SSL_CTX_add0_chain_cert(ctx,x509) \  | 
1438  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))  | 
1439  |  | # define SSL_CTX_add1_chain_cert(ctx,x509) \  | 
1440  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))  | 
1441  |  | # define SSL_CTX_get0_chain_certs(ctx,px509) \  | 
1442  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509)  | 
1443  |  | # define SSL_CTX_clear_chain_certs(ctx) \  | 
1444  |  |         SSL_CTX_set0_chain(ctx,NULL)  | 
1445  |  | # define SSL_CTX_build_cert_chain(ctx, flags) \  | 
1446  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)  | 
1447  |  | # define SSL_CTX_select_current_cert(ctx,x509) \  | 
1448  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))  | 
1449  |  | # define SSL_CTX_set_current_cert(ctx, op) \  | 
1450  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL)  | 
1451  |  | # define SSL_CTX_set0_verify_cert_store(ctx,st) \  | 
1452  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))  | 
1453  |  | # define SSL_CTX_set1_verify_cert_store(ctx,st) \  | 
1454  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))  | 
1455  |  | # define SSL_CTX_get0_verify_cert_store(ctx,st) \  | 
1456  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))  | 
1457  |  | # define SSL_CTX_set0_chain_cert_store(ctx,st) \  | 
1458  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))  | 
1459  |  | # define SSL_CTX_set1_chain_cert_store(ctx,st) \  | 
1460  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))  | 
1461  |  | # define SSL_CTX_get0_chain_cert_store(ctx,st) \  | 
1462  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))  | 
1463  |  | # define SSL_set0_chain(s,sk) \  | 
1464  |  |         SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk))  | 
1465  |  | # define SSL_set1_chain(s,sk) \  | 
1466  |  |         SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk))  | 
1467  |  | # define SSL_add0_chain_cert(s,x509) \  | 
1468  |  |         SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509))  | 
1469  |  | # define SSL_add1_chain_cert(s,x509) \  | 
1470  |  |         SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509))  | 
1471  |  | # define SSL_get0_chain_certs(s,px509) \  | 
1472  |  |         SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509)  | 
1473  |  | # define SSL_clear_chain_certs(s) \  | 
1474  |  |         SSL_set0_chain(s,NULL)  | 
1475  |  | # define SSL_build_cert_chain(s, flags) \  | 
1476  |  |         SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)  | 
1477  |  | # define SSL_select_current_cert(s,x509) \  | 
1478  |  |         SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509))  | 
1479  |  | # define SSL_set_current_cert(s,op) \  | 
1480  |  |         SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL)  | 
1481  |  | # define SSL_set0_verify_cert_store(s,st) \  | 
1482  |  |         SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))  | 
1483  |  | # define SSL_set1_verify_cert_store(s,st) \  | 
1484  |  |         SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))  | 
1485  |  | #define SSL_get0_verify_cert_store(s,st) \  | 
1486  |  |         SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))  | 
1487  |  | # define SSL_set0_chain_cert_store(s,st) \  | 
1488  |  |         SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))  | 
1489  |  | # define SSL_set1_chain_cert_store(s,st) \  | 
1490  |  |         SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))  | 
1491  |  | #define SSL_get0_chain_cert_store(s,st) \  | 
1492  |  |         SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))  | 
1493  |  |  | 
1494  |  | # define SSL_get1_groups(s, glist) \  | 
1495  |  |         SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist))  | 
1496  |  | # define SSL_get0_iana_groups(s, plst) \  | 
1497  |  |         SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst))  | 
1498  |  | # define SSL_CTX_set1_groups(ctx, glist, glistlen) \  | 
1499  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist))  | 
1500  |  | # define SSL_CTX_set1_groups_list(ctx, s) \  | 
1501  | 0  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s))  | 
1502  |  | # define SSL_CTX_get0_implemented_groups(ctx, all, out) \  | 
1503  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET0_IMPLEMENTED_GROUPS, all, \  | 
1504  |  |         (STACK_OF(OPENSSL_CSTRING) *)(out))  | 
1505  |  | # define SSL_set1_groups(s, glist, glistlen) \  | 
1506  |  |         SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist))  | 
1507  |  | # define SSL_set1_groups_list(s, str) \  | 
1508  |  |         SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str))  | 
1509  |  | # define SSL_get_shared_group(s, n) \  | 
1510  |  |         SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL)  | 
1511  |  | # define SSL_get_negotiated_group(s) \  | 
1512  |  |         SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,NULL)  | 
1513  |  | # define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \  | 
1514  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))  | 
1515  |  | # define SSL_CTX_set1_sigalgs_list(ctx, s) \  | 
1516  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s))  | 
1517  |  | # define SSL_set1_sigalgs(s, slist, slistlen) \  | 
1518  |  |         SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist))  | 
1519  |  | # define SSL_set1_sigalgs_list(s, str) \  | 
1520  |  |         SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str))  | 
1521  |  | # define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \  | 
1522  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))  | 
1523  |  | # define SSL_CTX_set1_client_sigalgs_list(ctx, s) \  | 
1524  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s))  | 
1525  |  | # define SSL_set1_client_sigalgs(s, slist, slistlen) \  | 
1526  |  |         SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist))  | 
1527  |  | # define SSL_set1_client_sigalgs_list(s, str) \  | 
1528  |  |         SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str))  | 
1529  |  | # define SSL_get0_certificate_types(s, clist) \  | 
1530  |  |         SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist))  | 
1531  |  | # define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \  | 
1532  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \  | 
1533  |  |                      (char *)(clist))  | 
1534  |  | # define SSL_set1_client_certificate_types(s, clist, clistlen) \  | 
1535  |  |         SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist))  | 
1536  |  | # define SSL_get0_signature_name(s, str) \  | 
1537  |  |         SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NAME,0,(1?(str):(const char **)NULL))  | 
1538  |  | # define SSL_get_signature_nid(s, pn) \  | 
1539  |  |         SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn)  | 
1540  |  | # define SSL_get0_peer_signature_name(s, str) \  | 
1541  |  |         SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NAME,0,(1?(str):(const char **)NULL))  | 
1542  |  | # define SSL_get_peer_signature_nid(s, pn) \  | 
1543  |  |         SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn)  | 
1544  |  | # define SSL_get_peer_tmp_key(s, pk) \  | 
1545  |  |         SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk)  | 
1546  |  | # define SSL_get_tmp_key(s, pk) \  | 
1547  |  |         SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk)  | 
1548  |  | # define SSL_get0_raw_cipherlist(s, plst) \  | 
1549  |  |         SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst)  | 
1550  |  | # define SSL_get0_ec_point_formats(s, plst) \  | 
1551  |  |         SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst)  | 
1552  |  | # define SSL_CTX_set_min_proto_version(ctx, version) \  | 
1553  | 0  |         SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)  | 
1554  |  | # define SSL_CTX_set_max_proto_version(ctx, version) \  | 
1555  |  |         SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)  | 
1556  |  | # define SSL_CTX_get_min_proto_version(ctx) \  | 
1557  |  |         SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)  | 
1558  |  | # define SSL_CTX_get_max_proto_version(ctx) \  | 
1559  |  |         SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)  | 
1560  |  | # define SSL_set_min_proto_version(s, version) \  | 
1561  |  |         SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL)  | 
1562  |  | # define SSL_set_max_proto_version(s, version) \  | 
1563  | 0  |         SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL)  | 
1564  |  | # define SSL_get_min_proto_version(s) \  | 
1565  |  |         SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL)  | 
1566  |  | # define SSL_get_max_proto_version(s) \  | 
1567  |  |         SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL)  | 
1568  |  |  | 
1569  |  | const char *SSL_get0_group_name(SSL *s);  | 
1570  |  | const char *SSL_group_to_name(SSL *s, int id);  | 
1571  |  |  | 
1572  |  | /* Backwards compatibility, original 1.1.0 names */  | 
1573  |  | # define SSL_CTRL_GET_SERVER_TMP_KEY \  | 
1574  |  |          SSL_CTRL_GET_PEER_TMP_KEY  | 
1575  |  | # define SSL_get_server_tmp_key(s, pk) \  | 
1576  |  |          SSL_get_peer_tmp_key(s, pk)  | 
1577  |  |  | 
1578  |  | int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey);  | 
1579  |  | int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey);  | 
1580  |  |  | 
1581  |  | /*  | 
1582  |  |  * The following symbol names are old and obsolete. They are kept  | 
1583  |  |  * for compatibility reasons only and should not be used anymore.  | 
1584  |  |  */  | 
1585  |  | # define SSL_CTRL_GET_CURVES           SSL_CTRL_GET_GROUPS  | 
1586  |  | # define SSL_CTRL_SET_CURVES           SSL_CTRL_SET_GROUPS  | 
1587  |  | # define SSL_CTRL_SET_CURVES_LIST      SSL_CTRL_SET_GROUPS_LIST  | 
1588  |  | # define SSL_CTRL_GET_SHARED_CURVE     SSL_CTRL_GET_SHARED_GROUP  | 
1589  |  |  | 
1590  |  | # define SSL_get1_curves               SSL_get1_groups  | 
1591  |  | # define SSL_CTX_set1_curves           SSL_CTX_set1_groups  | 
1592  |  | # define SSL_CTX_set1_curves_list      SSL_CTX_set1_groups_list  | 
1593  |  | # define SSL_set1_curves               SSL_set1_groups  | 
1594  |  | # define SSL_set1_curves_list          SSL_set1_groups_list  | 
1595  |  | # define SSL_get_shared_curve          SSL_get_shared_group  | 
1596  |  |  | 
1597  |  |  | 
1598  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
1599  |  | /* Provide some compatibility macros for removed functionality. */  | 
1600  |  | #  define SSL_CTX_need_tmp_RSA(ctx)                0  | 
1601  |  | #  define SSL_CTX_set_tmp_rsa(ctx,rsa)             1  | 
1602  |  | #  define SSL_need_tmp_RSA(ssl)                    0  | 
1603  |  | #  define SSL_set_tmp_rsa(ssl,rsa)                 1  | 
1604  |  | #  define SSL_CTX_set_ecdh_auto(dummy, onoff)      ((onoff) != 0)  | 
1605  |  | #  define SSL_set_ecdh_auto(dummy, onoff)          ((onoff) != 0)  | 
1606  |  | /*  | 
1607  |  |  * We "pretend" to call the callback to avoid warnings about unused static  | 
1608  |  |  * functions.  | 
1609  |  |  */  | 
1610  |  | #  define SSL_CTX_set_tmp_rsa_callback(ctx, cb)    while(0) (cb)(NULL, 0, 0)  | 
1611  |  | #  define SSL_set_tmp_rsa_callback(ssl, cb)        while(0) (cb)(NULL, 0, 0)  | 
1612  |  | # endif  | 
1613  |  | __owur const BIO_METHOD *BIO_f_ssl(void);  | 
1614  |  | __owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client);  | 
1615  |  | __owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx);  | 
1616  |  | __owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);  | 
1617  |  | __owur int BIO_ssl_copy_session_id(BIO *to, BIO *from);  | 
1618  |  | void BIO_ssl_shutdown(BIO *ssl_bio);  | 
1619  |  |  | 
1620  |  | __owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str);  | 
1621  |  | __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);  | 
1622  |  | __owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq,  | 
1623  |  |                                const SSL_METHOD *meth);  | 
1624  |  | int SSL_CTX_up_ref(SSL_CTX *ctx);  | 
1625  |  | void SSL_CTX_free(SSL_CTX *);  | 
1626  |  | __owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t);  | 
1627  |  | __owur long SSL_CTX_get_timeout(const SSL_CTX *ctx);  | 
1628  |  | __owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *);  | 
1629  |  | void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *);  | 
1630  |  | void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *);  | 
1631  |  | __owur int SSL_want(const SSL *s);  | 
1632  |  | __owur int SSL_clear(SSL *s);  | 
1633  |  |  | 
1634  |  | #ifndef OPENSSL_NO_DEPRECATED_3_4  | 
1635  |  | OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_CTX_flush_sessions_ex()") | 
1636  |  | void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm);  | 
1637  |  | #endif  | 
1638  |  | void SSL_CTX_flush_sessions_ex(SSL_CTX *ctx, time_t tm);  | 
1639  |  |  | 
1640  |  | __owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s);  | 
1641  |  | __owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s);  | 
1642  |  | __owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits);  | 
1643  |  | __owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c);  | 
1644  |  | __owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c);  | 
1645  |  | __owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);  | 
1646  |  | __owur const char *OPENSSL_cipher_name(const char *rfc_name);  | 
1647  |  | __owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c);  | 
1648  |  | __owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c);  | 
1649  |  | __owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c);  | 
1650  |  | __owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c);  | 
1651  |  | __owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c);  | 
1652  |  | __owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c);  | 
1653  |  |  | 
1654  |  | __owur int SSL_get_fd(const SSL *s);  | 
1655  |  | __owur int SSL_get_rfd(const SSL *s);  | 
1656  |  | __owur int SSL_get_wfd(const SSL *s);  | 
1657  |  | __owur const char *SSL_get_cipher_list(const SSL *s, int n);  | 
1658  |  | __owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size);  | 
1659  |  | __owur int SSL_get_read_ahead(const SSL *s);  | 
1660  |  | __owur int SSL_pending(const SSL *s);  | 
1661  |  | __owur int SSL_has_pending(const SSL *s);  | 
1662  |  | # ifndef OPENSSL_NO_SOCK  | 
1663  |  | __owur int SSL_set_fd(SSL *s, int fd);  | 
1664  |  | __owur int SSL_set_rfd(SSL *s, int fd);  | 
1665  |  | __owur int SSL_set_wfd(SSL *s, int fd);  | 
1666  |  | # endif  | 
1667  |  | void SSL_set0_rbio(SSL *s, BIO *rbio);  | 
1668  |  | void SSL_set0_wbio(SSL *s, BIO *wbio);  | 
1669  |  | void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio);  | 
1670  |  | __owur BIO *SSL_get_rbio(const SSL *s);  | 
1671  |  | __owur BIO *SSL_get_wbio(const SSL *s);  | 
1672  |  | __owur int SSL_set_cipher_list(SSL *s, const char *str);  | 
1673  |  | __owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);  | 
1674  |  | __owur int SSL_set_ciphersuites(SSL *s, const char *str);  | 
1675  |  | void SSL_set_read_ahead(SSL *s, int yes);  | 
1676  |  | __owur int SSL_get_verify_mode(const SSL *s);  | 
1677  |  | __owur int SSL_get_verify_depth(const SSL *s);  | 
1678  |  | __owur SSL_verify_cb SSL_get_verify_callback(const SSL *s);  | 
1679  |  | void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback);  | 
1680  |  | void SSL_set_verify_depth(SSL *s, int depth);  | 
1681  |  | void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg);  | 
1682  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1683  |  | OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);  | 
1684  |  | OSSL_DEPRECATEDIN_3_0  | 
1685  |  | __owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl,  | 
1686  |  |                                       const unsigned char *d, long len);  | 
1687  |  | # endif  | 
1688  |  | __owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);  | 
1689  |  | __owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d,  | 
1690  |  |                                    long len);  | 
1691  |  | __owur int SSL_use_certificate(SSL *ssl, X509 *x);  | 
1692  |  | __owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len);  | 
1693  |  | __owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey,  | 
1694  |  |                                 STACK_OF(X509) *chain, int override);  | 
1695  |  |  | 
1696  |  |  | 
1697  |  | /* serverinfo file format versions */  | 
1698  |  | # define SSL_SERVERINFOV1   1  | 
1699  |  | # define SSL_SERVERINFOV2   2  | 
1700  |  |  | 
1701  |  | /* Set serverinfo data for the current active cert. */  | 
1702  |  | __owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo,  | 
1703  |  |                                   size_t serverinfo_length);  | 
1704  |  | __owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version,  | 
1705  |  |                                      const unsigned char *serverinfo,  | 
1706  |  |                                      size_t serverinfo_length);  | 
1707  |  | __owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file);  | 
1708  |  |  | 
1709  |  | #ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1710  |  | OSSL_DEPRECATEDIN_3_0  | 
1711  |  | __owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);  | 
1712  |  | #endif  | 
1713  |  |  | 
1714  |  | __owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);  | 
1715  |  | __owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type);  | 
1716  |  |  | 
1717  |  | #ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1718  |  | OSSL_DEPRECATEDIN_3_0  | 
1719  |  | __owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file,  | 
1720  |  |                                           int type);  | 
1721  |  | #endif  | 
1722  |  | __owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file,  | 
1723  |  |                                        int type);  | 
1724  |  | __owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,  | 
1725  |  |                                         int type);  | 
1726  |  | /* PEM type */  | 
1727  |  | __owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);  | 
1728  |  | __owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file);  | 
1729  |  | __owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);  | 
1730  |  | __owur STACK_OF(X509_NAME)  | 
1731  |  | *SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx,  | 
1732  |  |                             const char *propq);  | 
1733  |  | __owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,  | 
1734  |  |                                                const char *file);  | 
1735  |  | int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,  | 
1736  |  |                                        const char *dir);  | 
1737  |  | int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs,  | 
1738  |  |                                        const char *uri);  | 
1739  |  |  | 
1740  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
1741  |  | #  define SSL_load_error_strings() \  | 
1742  |  |     OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \  | 
1743  |  |                      | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)  | 
1744  |  | # endif  | 
1745  |  |  | 
1746  |  | __owur const char *SSL_state_string(const SSL *s);  | 
1747  |  | __owur const char *SSL_rstate_string(const SSL *s);  | 
1748  |  | __owur const char *SSL_state_string_long(const SSL *s);  | 
1749  |  | __owur const char *SSL_rstate_string_long(const SSL *s);  | 
1750  |  |  | 
1751  |  | #ifndef OPENSSL_NO_DEPRECATED_3_4  | 
1752  |  | OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_get_time_ex()") | 
1753  |  | __owur long SSL_SESSION_get_time(const SSL_SESSION *s);  | 
1754  |  | OSSL_DEPRECATEDIN_3_4_FOR("not Y2038-safe, replace with SSL_SESSION_set_time_ex()") | 
1755  |  | __owur long SSL_SESSION_set_time(SSL_SESSION *s, long t);  | 
1756  |  | #endif  | 
1757  |  | __owur long SSL_SESSION_get_timeout(const SSL_SESSION *s);  | 
1758  |  | __owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);  | 
1759  |  | __owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s);  | 
1760  |  | __owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version);  | 
1761  |  |  | 
1762  |  | __owur time_t SSL_SESSION_get_time_ex(const SSL_SESSION *s);  | 
1763  |  | __owur time_t SSL_SESSION_set_time_ex(SSL_SESSION *s, time_t t);  | 
1764  |  |  | 
1765  |  | __owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s);  | 
1766  |  | __owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname);  | 
1767  |  | void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s,  | 
1768  |  |                                     const unsigned char **alpn,  | 
1769  |  |                                     size_t *len);  | 
1770  |  | __owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s,  | 
1771  |  |                                           const unsigned char *alpn,  | 
1772  |  |                                           size_t len);  | 
1773  |  | __owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s);  | 
1774  |  | __owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher);  | 
1775  |  | __owur int SSL_SESSION_has_ticket(const SSL_SESSION *s);  | 
1776  |  | __owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);  | 
1777  |  | void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick,  | 
1778  |  |                              size_t *len);  | 
1779  |  | __owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s);  | 
1780  |  | __owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s,  | 
1781  |  |                                           uint32_t max_early_data);  | 
1782  |  | __owur int SSL_copy_session_id(SSL *to, const SSL *from);  | 
1783  |  | __owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s);  | 
1784  |  | __owur int SSL_SESSION_set1_id_context(SSL_SESSION *s,  | 
1785  |  |                                        const unsigned char *sid_ctx,  | 
1786  |  |                                        unsigned int sid_ctx_len);  | 
1787  |  | __owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid,  | 
1788  |  |                                unsigned int sid_len);  | 
1789  |  | __owur int SSL_SESSION_is_resumable(const SSL_SESSION *s);  | 
1790  |  |  | 
1791  |  | __owur SSL_SESSION *SSL_SESSION_new(void);  | 
1792  |  | __owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src);  | 
1793  |  | const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,  | 
1794  |  |                                         unsigned int *len);  | 
1795  |  | const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s,  | 
1796  |  |                                                  unsigned int *len);  | 
1797  |  | __owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s);  | 
1798  |  | # ifndef OPENSSL_NO_STDIO  | 
1799  |  | int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses);  | 
1800  |  | # endif  | 
1801  |  | int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses);  | 
1802  |  | int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x);  | 
1803  |  | int SSL_SESSION_up_ref(SSL_SESSION *ses);  | 
1804  |  | void SSL_SESSION_free(SSL_SESSION *ses);  | 
1805  |  | __owur int i2d_SSL_SESSION(const SSL_SESSION *in, unsigned char **pp);  | 
1806  |  | __owur int SSL_set_session(SSL *to, SSL_SESSION *session);  | 
1807  |  | int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session);  | 
1808  |  | int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session);  | 
1809  |  | __owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb);  | 
1810  |  | __owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb);  | 
1811  |  | __owur int SSL_has_matching_session_id(const SSL *s,  | 
1812  |  |                                        const unsigned char *id,  | 
1813  |  |                                        unsigned int id_len);  | 
1814  |  | SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,  | 
1815  |  |                              long length);  | 
1816  |  | SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp,  | 
1817  |  |                                 long length, OSSL_LIB_CTX *libctx,  | 
1818  |  |                                 const char *propq);  | 
1819  |  |  | 
1820  |  | # ifdef OPENSSL_X509_H  | 
1821  |  | __owur X509 *SSL_get0_peer_certificate(const SSL *s);  | 
1822  |  | __owur X509 *SSL_get1_peer_certificate(const SSL *s);  | 
1823  |  | /* Deprecated in 3.0.0 */  | 
1824  |  | #  ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1825  | 0  | #   define SSL_get_peer_certificate SSL_get1_peer_certificate  | 
1826  |  | #  endif  | 
1827  |  | # endif  | 
1828  |  |  | 
1829  |  | __owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s);  | 
1830  |  |  | 
1831  |  | __owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx);  | 
1832  |  | __owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx);  | 
1833  |  | __owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx);  | 
1834  |  | void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback);  | 
1835  |  | void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth);  | 
1836  |  | void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,  | 
1837  |  |                                       int (*cb) (X509_STORE_CTX *, void *),  | 
1838  |  |                                       void *arg);  | 
1839  |  | void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg),  | 
1840  |  |                          void *arg);  | 
1841  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1842  |  | OSSL_DEPRECATEDIN_3_0  | 
1843  |  | __owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);  | 
1844  |  | OSSL_DEPRECATEDIN_3_0  | 
1845  |  | __owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d,  | 
1846  |  |                                           long len);  | 
1847  |  | # endif  | 
1848  |  | __owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);  | 
1849  |  | __owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx,  | 
1850  |  |                                        const unsigned char *d, long len);  | 
1851  |  | __owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);  | 
1852  |  | __owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len,  | 
1853  |  |                                         const unsigned char *d);  | 
1854  |  | __owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey,  | 
1855  |  |                                     STACK_OF(X509) *chain, int override);  | 
1856  |  |  | 
1857  |  | void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);  | 
1858  |  | void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);  | 
1859  |  | pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx);  | 
1860  |  | void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx);  | 
1861  |  | void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb);  | 
1862  |  | void SSL_set_default_passwd_cb_userdata(SSL *s, void *u);  | 
1863  |  | pem_password_cb *SSL_get_default_passwd_cb(SSL *s);  | 
1864  |  | void *SSL_get_default_passwd_cb_userdata(SSL *s);  | 
1865  |  |  | 
1866  |  | __owur int SSL_CTX_check_private_key(const SSL_CTX *ctx);  | 
1867  |  | __owur int SSL_check_private_key(const SSL *ctx);  | 
1868  |  |  | 
1869  |  | __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx,  | 
1870  |  |                                           const unsigned char *sid_ctx,  | 
1871  |  |                                           unsigned int sid_ctx_len);  | 
1872  |  |  | 
1873  |  | SSL *SSL_new(SSL_CTX *ctx);  | 
1874  |  | int SSL_up_ref(SSL *s);  | 
1875  |  | int SSL_is_dtls(const SSL *s);  | 
1876  |  | int SSL_is_tls(const SSL *s);  | 
1877  |  | int SSL_is_quic(const SSL *s);  | 
1878  |  | __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx,  | 
1879  |  |                                       unsigned int sid_ctx_len);  | 
1880  |  |  | 
1881  |  | __owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose);  | 
1882  |  | __owur int SSL_set_purpose(SSL *ssl, int purpose);  | 
1883  |  | __owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust);  | 
1884  |  | __owur int SSL_set_trust(SSL *ssl, int trust);  | 
1885  |  |  | 
1886  |  | __owur int SSL_set1_host(SSL *s, const char *host);  | 
1887  |  | __owur int SSL_add1_host(SSL *s, const char *host);  | 
1888  |  | __owur const char *SSL_get0_peername(SSL *s);  | 
1889  |  | void SSL_set_hostflags(SSL *s, unsigned int flags);  | 
1890  |  |  | 
1891  |  | __owur int SSL_CTX_dane_enable(SSL_CTX *ctx);  | 
1892  |  | __owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md,  | 
1893  |  |                                   uint8_t mtype, uint8_t ord);  | 
1894  |  | __owur int SSL_dane_enable(SSL *s, const char *basedomain);  | 
1895  |  | __owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector,  | 
1896  |  |                              uint8_t mtype, const unsigned char *data, size_t dlen);  | 
1897  |  | __owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki);  | 
1898  |  | __owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector,  | 
1899  |  |                               uint8_t *mtype, const unsigned char **data,  | 
1900  |  |                               size_t *dlen);  | 
1901  |  | /*  | 
1902  |  |  * Bridge opacity barrier between libcrypt and libssl, also needed to support  | 
1903  |  |  * offline testing in test/danetest.c  | 
1904  |  |  */  | 
1905  |  | SSL_DANE *SSL_get0_dane(SSL *ssl);  | 
1906  |  | /*  | 
1907  |  |  * DANE flags  | 
1908  |  |  */  | 
1909  |  | unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags);  | 
1910  |  | unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags);  | 
1911  |  | unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags);  | 
1912  |  | unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags);  | 
1913  |  |  | 
1914  |  | __owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);  | 
1915  |  | __owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);  | 
1916  |  |  | 
1917  |  | __owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx);  | 
1918  |  | __owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl);  | 
1919  |  |  | 
1920  |  | # ifndef OPENSSL_NO_SRP  | 
1921  |  | #  ifndef OPENSSL_NO_DEPRECATED_3_0  | 
1922  |  | OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name);  | 
1923  |  | OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password);  | 
1924  |  | OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength);  | 
1925  |  | OSSL_DEPRECATEDIN_3_0  | 
1926  |  | int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx,  | 
1927  |  |                                         char *(*cb) (SSL *, void *));  | 
1928  |  | OSSL_DEPRECATEDIN_3_0  | 
1929  |  | int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx,  | 
1930  |  |                                           int (*cb) (SSL *, void *));  | 
1931  |  | OSSL_DEPRECATEDIN_3_0  | 
1932  |  | int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx,  | 
1933  |  |                                       int (*cb) (SSL *, int *, void *));  | 
1934  |  | OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg);  | 
1935  |  |  | 
1936  |  | OSSL_DEPRECATEDIN_3_0  | 
1937  |  | int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g,  | 
1938  |  |                              BIGNUM *sa, BIGNUM *v, char *info);  | 
1939  |  | OSSL_DEPRECATEDIN_3_0  | 
1940  |  | int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass,  | 
1941  |  |                                 const char *grp);  | 
1942  |  |  | 
1943  |  | OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s);  | 
1944  |  | OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s);  | 
1945  |  |  | 
1946  |  | OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s);  | 
1947  |  | OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s);  | 
1948  |  | #  endif  | 
1949  |  | # endif  | 
1950  |  |  | 
1951  |  | /*  | 
1952  |  |  * ClientHello callback and helpers.  | 
1953  |  |  */  | 
1954  |  |  | 
1955  |  | # define SSL_CLIENT_HELLO_SUCCESS 1  | 
1956  |  | # define SSL_CLIENT_HELLO_ERROR   0  | 
1957  |  | # define SSL_CLIENT_HELLO_RETRY   (-1)  | 
1958  |  |  | 
1959  |  | typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg);  | 
1960  |  | void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb,  | 
1961  |  |                                  void *arg);  | 
1962  |  | typedef int (*SSL_new_pending_conn_cb_fn) (SSL_CTX *ctx, SSL *new_ssl,  | 
1963  |  |                                            void *arg);  | 
1964  |  | void SSL_CTX_set_new_pending_conn_cb(SSL_CTX *c, SSL_new_pending_conn_cb_fn cb,  | 
1965  |  |                                      void *arg);  | 
1966  |  |  | 
1967  |  | int SSL_client_hello_isv2(SSL *s);  | 
1968  |  | unsigned int SSL_client_hello_get0_legacy_version(SSL *s);  | 
1969  |  | size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out);  | 
1970  |  | size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out);  | 
1971  |  | size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out);  | 
1972  |  | size_t SSL_client_hello_get0_compression_methods(SSL *s,  | 
1973  |  |                                                  const unsigned char **out);  | 
1974  |  | int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen);  | 
1975  |  | int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts,  | 
1976  |  |                                          size_t *num_exts);  | 
1977  |  | int SSL_client_hello_get0_ext(SSL *s, unsigned int type,  | 
1978  |  |                               const unsigned char **out, size_t *outlen);  | 
1979  |  |  | 
1980  |  | void SSL_certs_clear(SSL *s);  | 
1981  |  | void SSL_free(SSL *ssl);  | 
1982  |  | # ifdef OSSL_ASYNC_FD  | 
1983  |  | /*  | 
1984  |  |  * Windows application developer has to include windows.h to use these.  | 
1985  |  |  */  | 
1986  |  | __owur int SSL_waiting_for_async(SSL *s);  | 
1987  |  | __owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds);  | 
1988  |  | __owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd,  | 
1989  |  |                                      size_t *numaddfds, OSSL_ASYNC_FD *delfd,  | 
1990  |  |                                      size_t *numdelfds);  | 
1991  |  | __owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback);  | 
1992  |  | __owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg);  | 
1993  |  | __owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback);  | 
1994  |  | __owur int SSL_set_async_callback_arg(SSL *s, void *arg);  | 
1995  |  | __owur int SSL_get_async_status(SSL *s, int *status);  | 
1996  |  |  | 
1997  |  | # endif  | 
1998  |  | __owur int SSL_accept(SSL *ssl);  | 
1999  |  | __owur int SSL_stateless(SSL *s);  | 
2000  |  | __owur int SSL_connect(SSL *ssl);  | 
2001  |  | __owur int SSL_read(SSL *ssl, void *buf, int num);  | 
2002  |  | __owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);  | 
2003  |  |  | 
2004  |  | # define SSL_READ_EARLY_DATA_ERROR   0  | 
2005  |  | # define SSL_READ_EARLY_DATA_SUCCESS 1  | 
2006  |  | # define SSL_READ_EARLY_DATA_FINISH  2  | 
2007  |  |  | 
2008  |  | __owur int SSL_read_early_data(SSL *s, void *buf, size_t num,  | 
2009  |  |                                size_t *readbytes);  | 
2010  |  | __owur int SSL_peek(SSL *ssl, void *buf, int num);  | 
2011  |  | __owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);  | 
2012  |  | __owur ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size,  | 
2013  |  |                                  int flags);  | 
2014  |  | __owur int SSL_write(SSL *ssl, const void *buf, int num);  | 
2015  |  | __owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written);  | 
2016  |  | __owur int SSL_write_early_data(SSL *s, const void *buf, size_t num,  | 
2017  |  |                                 size_t *written);  | 
2018  |  | long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg);  | 
2019  |  | long SSL_callback_ctrl(SSL *, int, void (*)(void));  | 
2020  |  | long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg);  | 
2021  |  | long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void));  | 
2022  |  |  | 
2023  |  | # define SSL_WRITE_FLAG_CONCLUDE    (1U << 0)  | 
2024  |  |  | 
2025  |  | __owur int SSL_write_ex2(SSL *s, const void *buf, size_t num,  | 
2026  |  |                          uint64_t flags,  | 
2027  |  |                          size_t *written);  | 
2028  |  |  | 
2029  |  | # define SSL_EARLY_DATA_NOT_SENT    0  | 
2030  |  | # define SSL_EARLY_DATA_REJECTED    1  | 
2031  |  | # define SSL_EARLY_DATA_ACCEPTED    2  | 
2032  |  |  | 
2033  |  | __owur int SSL_get_early_data_status(const SSL *s);  | 
2034  |  |  | 
2035  |  | __owur int SSL_get_error(const SSL *s, int ret_code);  | 
2036  |  | __owur const char *SSL_get_version(const SSL *s);  | 
2037  |  | __owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt);  | 
2038  |  |  | 
2039  |  | /* This sets the 'default' SSL version that SSL_new() will create */  | 
2040  |  | # ifndef OPENSSL_NO_DEPRECATED_3_0  | 
2041  |  | OSSL_DEPRECATEDIN_3_0  | 
2042  |  | __owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth);  | 
2043  |  | # endif  | 
2044  |  |  | 
2045  |  | # ifndef OPENSSL_NO_SSL3_METHOD  | 
2046  |  | #  ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2047  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */  | 
2048  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void);  | 
2049  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void);  | 
2050  |  | #  endif  | 
2051  |  | # endif  | 
2052  |  |  | 
2053  |  | #define SSLv23_method           TLS_method  | 
2054  |  | #define SSLv23_server_method    TLS_server_method  | 
2055  |  | #define SSLv23_client_method    TLS_client_method  | 
2056  |  |  | 
2057  |  | /* Negotiate highest available SSL/TLS version */  | 
2058  |  | __owur const SSL_METHOD *TLS_method(void);  | 
2059  |  | __owur const SSL_METHOD *TLS_server_method(void);  | 
2060  |  | __owur const SSL_METHOD *TLS_client_method(void);  | 
2061  |  |  | 
2062  |  | # ifndef OPENSSL_NO_TLS1_METHOD  | 
2063  |  | #  ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2064  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */  | 
2065  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void);  | 
2066  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void);  | 
2067  |  | #  endif  | 
2068  |  | # endif  | 
2069  |  |  | 
2070  |  | # ifndef OPENSSL_NO_TLS1_1_METHOD  | 
2071  |  | #  ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2072  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */  | 
2073  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void);  | 
2074  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void);  | 
2075  |  | #  endif  | 
2076  |  | # endif  | 
2077  |  |  | 
2078  |  | # ifndef OPENSSL_NO_TLS1_2_METHOD  | 
2079  |  | #  ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2080  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */  | 
2081  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void);  | 
2082  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void);  | 
2083  |  | #  endif  | 
2084  |  | # endif  | 
2085  |  |  | 
2086  |  | # ifndef OPENSSL_NO_DTLS1_METHOD  | 
2087  |  | #  ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2088  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */  | 
2089  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void);  | 
2090  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void);  | 
2091  |  | #  endif  | 
2092  |  | # endif  | 
2093  |  |  | 
2094  |  | # ifndef OPENSSL_NO_DTLS1_2_METHOD  | 
2095  |  | /* DTLSv1.2 */  | 
2096  |  | #  ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2097  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void);  | 
2098  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void);  | 
2099  |  | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void);  | 
2100  |  | #  endif  | 
2101  |  | # endif  | 
2102  |  |  | 
2103  |  | __owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */  | 
2104  |  | __owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */  | 
2105  |  | __owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */  | 
2106  |  |  | 
2107  |  | __owur size_t DTLS_get_data_mtu(const SSL *s);  | 
2108  |  |  | 
2109  |  | __owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s);  | 
2110  |  | __owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx);  | 
2111  |  | __owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s);  | 
2112  |  | __owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s);  | 
2113  |  |  | 
2114  |  | __owur int SSL_do_handshake(SSL *s);  | 
2115  |  | int SSL_key_update(SSL *s, int updatetype);  | 
2116  |  | int SSL_get_key_update_type(const SSL *s);  | 
2117  |  | int SSL_renegotiate(SSL *s);  | 
2118  |  | int SSL_renegotiate_abbreviated(SSL *s);  | 
2119  |  | __owur int SSL_renegotiate_pending(const SSL *s);  | 
2120  |  | int SSL_new_session_ticket(SSL *s);  | 
2121  |  | int SSL_shutdown(SSL *s);  | 
2122  |  | __owur int SSL_verify_client_post_handshake(SSL *s);  | 
2123  |  | void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val);  | 
2124  |  | void SSL_set_post_handshake_auth(SSL *s, int val);  | 
2125  |  |  | 
2126  |  | __owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx);  | 
2127  |  | __owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s);  | 
2128  |  | __owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);  | 
2129  |  | __owur const char *SSL_alert_type_string_long(int value);  | 
2130  |  | __owur const char *SSL_alert_type_string(int value);  | 
2131  |  | __owur const char *SSL_alert_desc_string_long(int value);  | 
2132  |  | __owur const char *SSL_alert_desc_string(int value);  | 
2133  |  |  | 
2134  |  | void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);  | 
2135  |  | void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);  | 
2136  |  | __owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s);  | 
2137  |  | __owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx);  | 
2138  |  | __owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x);  | 
2139  |  | __owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x);  | 
2140  |  | __owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s);  | 
2141  |  |  | 
2142  |  | void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list);  | 
2143  |  | void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list);  | 
2144  |  | __owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s);  | 
2145  |  | __owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s);  | 
2146  |  | __owur int SSL_add_client_CA(SSL *ssl, X509 *x);  | 
2147  |  | __owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x);  | 
2148  |  |  | 
2149  |  | void SSL_set_connect_state(SSL *s);  | 
2150  |  | void SSL_set_accept_state(SSL *s);  | 
2151  |  |  | 
2152  |  | __owur long SSL_get_default_timeout(const SSL *s);  | 
2153  |  |  | 
2154  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2155  |  | #  define SSL_library_init() OPENSSL_init_ssl(0, NULL)  | 
2156  |  | # endif  | 
2157  |  |  | 
2158  |  | __owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size);  | 
2159  |  | __owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk);  | 
2160  |  |  | 
2161  |  | __owur SSL *SSL_dup(SSL *ssl);  | 
2162  |  |  | 
2163  |  | __owur X509 *SSL_get_certificate(const SSL *ssl);  | 
2164  |  | /*  | 
2165  |  |  * EVP_PKEY  | 
2166  |  |  */  | 
2167  |  | struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl);  | 
2168  |  |  | 
2169  |  | __owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);  | 
2170  |  | __owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx);  | 
2171  |  |  | 
2172  |  | void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode);  | 
2173  |  | __owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);  | 
2174  |  | void SSL_set_quiet_shutdown(SSL *ssl, int mode);  | 
2175  |  | __owur int SSL_get_quiet_shutdown(const SSL *ssl);  | 
2176  |  | void SSL_set_shutdown(SSL *ssl, int mode);  | 
2177  |  | __owur int SSL_get_shutdown(const SSL *ssl);  | 
2178  |  | __owur int SSL_version(const SSL *ssl);  | 
2179  |  | __owur int SSL_client_version(const SSL *s);  | 
2180  |  | __owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);  | 
2181  |  | __owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx);  | 
2182  |  | __owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx);  | 
2183  |  | __owur int SSL_CTX_set_default_verify_store(SSL_CTX *ctx);  | 
2184  |  | __owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile);  | 
2185  |  | __owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath);  | 
2186  |  | __owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore);  | 
2187  |  | __owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx,  | 
2188  |  |                                                         const char *CAfile,  | 
2189  |  |                                                         const char *CApath);  | 
2190  |  | # define SSL_get0_session SSL_get_session/* just peek at pointer */  | 
2191  |  | __owur SSL_SESSION *SSL_get_session(const SSL *ssl);  | 
2192  |  | __owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */  | 
2193  |  | __owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl);  | 
2194  |  | SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx);  | 
2195  |  | void SSL_set_info_callback(SSL *ssl,  | 
2196  |  |                            void (*cb) (const SSL *ssl, int type, int val));  | 
2197  |  | void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type,  | 
2198  |  |                                                int val);  | 
2199  |  | __owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl);  | 
2200  |  |  | 
2201  |  | void SSL_set_verify_result(SSL *ssl, long v);  | 
2202  |  | __owur long SSL_get_verify_result(const SSL *ssl);  | 
2203  |  | __owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s);  | 
2204  |  |  | 
2205  |  | __owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out,  | 
2206  |  |                                     size_t outlen);  | 
2207  |  | __owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out,  | 
2208  |  |                                     size_t outlen);  | 
2209  |  | __owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess,  | 
2210  |  |                                          unsigned char *out, size_t outlen);  | 
2211  |  | __owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess,  | 
2212  |  |                                        const unsigned char *in, size_t len);  | 
2213  |  | uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess);  | 
2214  |  |  | 
2215  |  | #define SSL_get_ex_new_index(l, p, newf, dupf, freef) \  | 
2216  | 0  |     CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef)  | 
2217  |  | __owur int SSL_set_ex_data(SSL *ssl, int idx, void *data);  | 
2218  |  | void *SSL_get_ex_data(const SSL *ssl, int idx);  | 
2219  |  | #define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \  | 
2220  |  |     CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef)  | 
2221  |  | __owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data);  | 
2222  |  | void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx);  | 
2223  |  | #define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \  | 
2224  |  |     CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef)  | 
2225  |  | __owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data);  | 
2226  |  | void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx);  | 
2227  |  |  | 
2228  |  | __owur int SSL_get_ex_data_X509_STORE_CTX_idx(void);  | 
2229  |  |  | 
2230  |  | # define SSL_CTX_sess_set_cache_size(ctx,t) \  | 
2231  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)  | 
2232  |  | # define SSL_CTX_sess_get_cache_size(ctx) \  | 
2233  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)  | 
2234  |  | # define SSL_CTX_set_session_cache_mode(ctx,m) \  | 
2235  | 0  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)  | 
2236  |  | # define SSL_CTX_get_session_cache_mode(ctx) \  | 
2237  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)  | 
2238  |  |  | 
2239  |  | # define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)  | 
2240  |  | # define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)  | 
2241  |  | # define SSL_CTX_get_read_ahead(ctx) \  | 
2242  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL)  | 
2243  |  | # define SSL_CTX_set_read_ahead(ctx,m) \  | 
2244  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL)  | 
2245  |  | # define SSL_CTX_get_max_cert_list(ctx) \  | 
2246  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)  | 
2247  |  | # define SSL_CTX_set_max_cert_list(ctx,m) \  | 
2248  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)  | 
2249  |  | # define SSL_get_max_cert_list(ssl) \  | 
2250  |  |         SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL)  | 
2251  |  | # define SSL_set_max_cert_list(ssl,m) \  | 
2252  |  |         SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)  | 
2253  |  |  | 
2254  |  | # define SSL_CTX_set_max_send_fragment(ctx,m) \  | 
2255  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)  | 
2256  |  | # define SSL_set_max_send_fragment(ssl,m) \  | 
2257  |  |         SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)  | 
2258  |  | # define SSL_CTX_set_split_send_fragment(ctx,m) \  | 
2259  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)  | 
2260  |  | # define SSL_set_split_send_fragment(ssl,m) \  | 
2261  |  |         SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)  | 
2262  |  | # define SSL_CTX_set_max_pipelines(ctx,m) \  | 
2263  |  |         SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)  | 
2264  |  | # define SSL_set_max_pipelines(ssl,m) \  | 
2265  |  |         SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)  | 
2266  |  | # define SSL_set_retry_verify(ssl) \  | 
2267  |  |         (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0)  | 
2268  |  |  | 
2269  |  | void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len);  | 
2270  |  | void SSL_set_default_read_buffer_len(SSL *s, size_t len);  | 
2271  |  |  | 
2272  |  | # ifndef OPENSSL_NO_DH  | 
2273  |  | #  ifndef OPENSSL_NO_DEPRECATED_3_0  | 
2274  |  | /* NB: the |keylength| is only applicable when is_export is true */  | 
2275  |  | OSSL_DEPRECATEDIN_3_0  | 
2276  |  | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,  | 
2277  |  |                                  DH *(*dh) (SSL *ssl, int is_export,  | 
2278  |  |                                             int keylength));  | 
2279  |  | OSSL_DEPRECATEDIN_3_0  | 
2280  |  | void SSL_set_tmp_dh_callback(SSL *ssl,  | 
2281  |  |                              DH *(*dh) (SSL *ssl, int is_export,  | 
2282  |  |                                         int keylength));  | 
2283  |  | #  endif  | 
2284  |  | # endif  | 
2285  |  |  | 
2286  |  | __owur const COMP_METHOD *SSL_get_current_compression(const SSL *s);  | 
2287  |  | __owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s);  | 
2288  |  | __owur const char *SSL_COMP_get_name(const COMP_METHOD *comp);  | 
2289  |  | __owur const char *SSL_COMP_get0_name(const SSL_COMP *comp);  | 
2290  |  | __owur int SSL_COMP_get_id(const SSL_COMP *comp);  | 
2291  |  | STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);  | 
2292  |  | __owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)  | 
2293  |  |                                                              *meths);  | 
2294  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2295  |  | #  define SSL_COMP_free_compression_methods() while(0) continue  | 
2296  |  | # endif  | 
2297  |  | __owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);  | 
2298  |  |  | 
2299  |  | const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr);  | 
2300  |  | int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c);  | 
2301  |  | int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c);  | 
2302  |  | int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len,  | 
2303  |  |                              int isv2format, STACK_OF(SSL_CIPHER) **sk,  | 
2304  |  |                              STACK_OF(SSL_CIPHER) **scsvs);  | 
2305  |  |  | 
2306  |  | /* TLS extensions functions */  | 
2307  |  | __owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len);  | 
2308  |  |  | 
2309  |  | __owur int SSL_set_session_ticket_ext_cb(SSL *s,  | 
2310  |  |                                          tls_session_ticket_ext_cb_fn cb,  | 
2311  |  |                                          void *arg);  | 
2312  |  |  | 
2313  |  | /* Pre-shared secret session resumption functions */  | 
2314  |  | __owur int SSL_set_session_secret_cb(SSL *s,  | 
2315  |  |                                      tls_session_secret_cb_fn session_secret_cb,  | 
2316  |  |                                      void *arg);  | 
2317  |  |  | 
2318  |  | void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx,  | 
2319  |  |                                                 int (*cb) (SSL *ssl,  | 
2320  |  |                                                            int  | 
2321  |  |                                                            is_forward_secure));  | 
2322  |  |  | 
2323  |  | void SSL_set_not_resumable_session_callback(SSL *ssl,  | 
2324  |  |                                             int (*cb) (SSL *ssl,  | 
2325  |  |                                                        int is_forward_secure));  | 
2326  |  |  | 
2327  |  | void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx,  | 
2328  |  |                                          size_t (*cb) (SSL *ssl, int type,  | 
2329  |  |                                                        size_t len, void *arg));  | 
2330  |  | void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg);  | 
2331  |  | void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx);  | 
2332  |  | int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size);  | 
2333  |  | int SSL_CTX_set_block_padding_ex(SSL_CTX *ctx, size_t app_block_size,  | 
2334  |  |                                  size_t hs_block_size);  | 
2335  |  |  | 
2336  |  | int SSL_set_record_padding_callback(SSL *ssl,  | 
2337  |  |                                     size_t (*cb) (SSL *ssl, int type,  | 
2338  |  |                                                   size_t len, void *arg));  | 
2339  |  | void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg);  | 
2340  |  | void *SSL_get_record_padding_callback_arg(const SSL *ssl);  | 
2341  |  | int SSL_set_block_padding(SSL *ssl, size_t block_size);  | 
2342  |  | int SSL_set_block_padding_ex(SSL *ssl, size_t app_block_size,  | 
2343  |  |                              size_t hs_block_size);  | 
2344  |  | int SSL_set_num_tickets(SSL *s, size_t num_tickets);  | 
2345  |  | size_t SSL_get_num_tickets(const SSL *s);  | 
2346  |  | int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);  | 
2347  |  | size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx);  | 
2348  |  |  | 
2349  |  | /* QUIC support */  | 
2350  |  | int SSL_handle_events(SSL *s);  | 
2351  |  | __owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite);  | 
2352  |  | __owur int SSL_get_peer_addr(SSL *ssl, BIO_ADDR *peer_addr);  | 
2353  |  | __owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc);  | 
2354  |  | __owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc);  | 
2355  |  | __owur int SSL_net_read_desired(SSL *s);  | 
2356  |  | __owur int SSL_net_write_desired(SSL *s);  | 
2357  |  | __owur int SSL_set_blocking_mode(SSL *s, int blocking);  | 
2358  |  | __owur int SSL_get_blocking_mode(SSL *s);  | 
2359  |  | __owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr);  | 
2360  |  | __owur SSL *SSL_get0_connection(SSL *s);  | 
2361  |  | __owur int SSL_is_connection(SSL *s);  | 
2362  |  |  | 
2363  |  | __owur int SSL_is_listener(SSL *ssl);  | 
2364  |  | __owur SSL *SSL_get0_listener(SSL *s);  | 
2365  |  | #define SSL_LISTENER_FLAG_NO_VALIDATE   (1UL << 1)  | 
2366  |  | __owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags);  | 
2367  |  | __owur SSL *SSL_new_listener_from(SSL *ssl, uint64_t flags);  | 
2368  |  | __owur SSL *SSL_new_from_listener(SSL *ssl, uint64_t flags);  | 
2369  |  | #define SSL_ACCEPT_CONNECTION_NO_BLOCK  (1UL << 0)  | 
2370  |  | __owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags);  | 
2371  |  | __owur size_t SSL_get_accept_connection_queue_len(SSL *ssl);  | 
2372  |  | __owur int SSL_listen(SSL *ssl);  | 
2373  |  |  | 
2374  |  | __owur int SSL_is_domain(SSL *s);  | 
2375  |  | __owur SSL *SSL_get0_domain(SSL *s);  | 
2376  |  | __owur SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags);  | 
2377  |  |  | 
2378  |  | #define SSL_DOMAIN_FLAG_SINGLE_THREAD       (1U << 0)  | 
2379  |  | #define SSL_DOMAIN_FLAG_MULTI_THREAD        (1U << 1)  | 
2380  |  | #define SSL_DOMAIN_FLAG_THREAD_ASSISTED     (1U << 2)  | 
2381  |  | #define SSL_DOMAIN_FLAG_BLOCKING            (1U << 3)  | 
2382  |  | #define SSL_DOMAIN_FLAG_LEGACY_BLOCKING     (1U << 4)  | 
2383  |  |  | 
2384  |  | __owur int SSL_CTX_set_domain_flags(SSL_CTX *ctx, uint64_t domain_flags);  | 
2385  |  | __owur int SSL_CTX_get_domain_flags(const SSL_CTX *ctx, uint64_t *domain_flags);  | 
2386  |  | __owur int SSL_get_domain_flags(const SSL *ssl, uint64_t *domain_flags);  | 
2387  |  |  | 
2388  |  | #define SSL_STREAM_TYPE_NONE        0  | 
2389  |  | #define SSL_STREAM_TYPE_READ        (1U << 0)  | 
2390  |  | #define SSL_STREAM_TYPE_WRITE       (1U << 1)  | 
2391  |  | #define SSL_STREAM_TYPE_BIDI        (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE)  | 
2392  |  | __owur int SSL_get_stream_type(SSL *s);  | 
2393  |  |  | 
2394  |  | __owur uint64_t SSL_get_stream_id(SSL *s);  | 
2395  |  | __owur int SSL_is_stream_local(SSL *s);  | 
2396  |  |  | 
2397  |  | #define SSL_DEFAULT_STREAM_MODE_NONE        0  | 
2398  |  | #define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI   1  | 
2399  |  | #define SSL_DEFAULT_STREAM_MODE_AUTO_UNI    2  | 
2400  |  | __owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode);  | 
2401  |  |  | 
2402  |  | #define SSL_STREAM_FLAG_UNI         (1U << 0)  | 
2403  |  | #define SSL_STREAM_FLAG_NO_BLOCK    (1U << 1)  | 
2404  |  | #define SSL_STREAM_FLAG_ADVANCE     (1U << 2)  | 
2405  |  | __owur SSL *SSL_new_stream(SSL *s, uint64_t flags);  | 
2406  |  |  | 
2407  |  | #define SSL_INCOMING_STREAM_POLICY_AUTO      0  | 
2408  |  | #define SSL_INCOMING_STREAM_POLICY_ACCEPT    1  | 
2409  |  | #define SSL_INCOMING_STREAM_POLICY_REJECT    2  | 
2410  |  | __owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec);  | 
2411  |  |  | 
2412  |  | #define SSL_ACCEPT_STREAM_NO_BLOCK      (1U << 0)  | 
2413  |  | #define SSL_ACCEPT_STREAM_UNI           (1U << 1)  | 
2414  |  | #define SSL_ACCEPT_STREAM_BIDI          (1U << 2)  | 
2415  |  | __owur SSL *SSL_accept_stream(SSL *s, uint64_t flags);  | 
2416  |  | __owur size_t SSL_get_accept_stream_queue_len(SSL *s);  | 
2417  |  |  | 
2418  |  | # ifndef OPENSSL_NO_QUIC  | 
2419  |  | __owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf,  | 
2420  |  |                                 size_t buf_len,  | 
2421  |  |                                 const BIO_ADDR *peer,  | 
2422  |  |                                 const BIO_ADDR *local);  | 
2423  |  | # endif  | 
2424  |  |  | 
2425  |  | typedef struct ssl_shutdown_ex_args_st { | 
2426  |  |     uint64_t    quic_error_code;  | 
2427  |  |     const char  *quic_reason;  | 
2428  |  | } SSL_SHUTDOWN_EX_ARGS;  | 
2429  |  |  | 
2430  |  | #define SSL_SHUTDOWN_FLAG_RAPID             (1U << 0)  | 
2431  |  | #define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH   (1U << 1)  | 
2432  |  | #define SSL_SHUTDOWN_FLAG_NO_BLOCK          (1U << 2)  | 
2433  |  | #define SSL_SHUTDOWN_FLAG_WAIT_PEER         (1U << 3)  | 
2434  |  |  | 
2435  |  | __owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags,  | 
2436  |  |                            const SSL_SHUTDOWN_EX_ARGS *args,  | 
2437  |  |                            size_t args_len);  | 
2438  |  |  | 
2439  |  | __owur int SSL_stream_conclude(SSL *ssl, uint64_t flags);  | 
2440  |  |  | 
2441  |  | typedef struct ssl_stream_reset_args_st { | 
2442  |  |     uint64_t quic_error_code;  | 
2443  |  | } SSL_STREAM_RESET_ARGS;  | 
2444  |  |  | 
2445  |  | __owur int SSL_stream_reset(SSL *ssl,  | 
2446  |  |                             const SSL_STREAM_RESET_ARGS *args,  | 
2447  |  |                             size_t args_len);  | 
2448  |  |  | 
2449  |  | #define SSL_STREAM_STATE_NONE           0  | 
2450  |  | #define SSL_STREAM_STATE_OK             1  | 
2451  |  | #define SSL_STREAM_STATE_WRONG_DIR      2  | 
2452  |  | #define SSL_STREAM_STATE_FINISHED       3  | 
2453  |  | #define SSL_STREAM_STATE_RESET_LOCAL    4  | 
2454  |  | #define SSL_STREAM_STATE_RESET_REMOTE   5  | 
2455  |  | #define SSL_STREAM_STATE_CONN_CLOSED    6  | 
2456  |  | __owur int SSL_get_stream_read_state(SSL *ssl);  | 
2457  |  | __owur int SSL_get_stream_write_state(SSL *ssl);  | 
2458  |  |  | 
2459  |  | __owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code);  | 
2460  |  | __owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code);  | 
2461  |  |  | 
2462  |  | #define SSL_CONN_CLOSE_FLAG_LOCAL       (1U << 0)  | 
2463  |  | #define SSL_CONN_CLOSE_FLAG_TRANSPORT   (1U << 1)  | 
2464  |  |  | 
2465  |  | typedef struct ssl_conn_close_info_st { | 
2466  |  |     uint64_t    error_code, frame_type;  | 
2467  |  |     const char  *reason;  | 
2468  |  |     size_t      reason_len;  | 
2469  |  |     uint32_t    flags;  | 
2470  |  | } SSL_CONN_CLOSE_INFO;  | 
2471  |  |  | 
2472  |  | __owur int SSL_get_conn_close_info(SSL *ssl,  | 
2473  |  |                                    SSL_CONN_CLOSE_INFO *info,  | 
2474  |  |                                    size_t info_len);  | 
2475  |  |  | 
2476  |  | # define SSL_VALUE_CLASS_GENERIC                0  | 
2477  |  | # define SSL_VALUE_CLASS_FEATURE_REQUEST        1  | 
2478  |  | # define SSL_VALUE_CLASS_FEATURE_PEER_REQUEST   2  | 
2479  |  | # define SSL_VALUE_CLASS_FEATURE_NEGOTIATED     3  | 
2480  |  |  | 
2481  |  | # define SSL_VALUE_NONE                             0  | 
2482  |  | # define SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL     1  | 
2483  |  | # define SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL    2  | 
2484  |  | # define SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL      3  | 
2485  |  | # define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL     4  | 
2486  |  | # define SSL_VALUE_QUIC_IDLE_TIMEOUT                5  | 
2487  |  | # define SSL_VALUE_EVENT_HANDLING_MODE              6  | 
2488  |  | # define SSL_VALUE_STREAM_WRITE_BUF_SIZE            7  | 
2489  |  | # define SSL_VALUE_STREAM_WRITE_BUF_USED            8  | 
2490  |  | # define SSL_VALUE_STREAM_WRITE_BUF_AVAIL           9  | 
2491  |  |  | 
2492  |  | # define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT      0  | 
2493  |  | # define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT     1  | 
2494  |  | # define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT     2  | 
2495  |  |  | 
2496  |  | int SSL_get_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t *v);  | 
2497  |  | int SSL_set_value_uint(SSL *s, uint32_t class_, uint32_t id, uint64_t v);  | 
2498  |  |  | 
2499  |  | # define SSL_get_generic_value_uint(ssl, id, v) \  | 
2500  |  |     SSL_get_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v))  | 
2501  |  | # define SSL_set_generic_value_uint(ssl, id, v) \  | 
2502  |  |     SSL_set_value_uint((ssl), SSL_VALUE_CLASS_GENERIC, (id), (v))  | 
2503  |  | # define SSL_get_feature_request_uint(ssl, id, v) \  | 
2504  |  |     SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v))  | 
2505  |  | # define SSL_set_feature_request_uint(ssl, id, v) \  | 
2506  |  |     SSL_set_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_REQUEST, (id), (v))  | 
2507  |  | # define SSL_get_feature_peer_request_uint(ssl, id, v) \  | 
2508  |  |     SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, (id), (v))  | 
2509  |  | # define SSL_get_feature_negotiated_uint(ssl, id, v) \  | 
2510  |  |     SSL_get_value_uint((ssl), SSL_VALUE_CLASS_FEATURE_NEGOTIATED, (id), (v))  | 
2511  |  |  | 
2512  |  | # define SSL_get_quic_stream_bidi_local_avail(ssl, value) \  | 
2513  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, \  | 
2514  |  |                                (value))  | 
2515  |  | # define SSL_get_quic_stream_bidi_remote_avail(ssl, value) \  | 
2516  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, \  | 
2517  |  |                                (value))  | 
2518  |  | # define SSL_get_quic_stream_uni_local_avail(ssl, value) \  | 
2519  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, \  | 
2520  |  |                                (value))  | 
2521  |  | # define SSL_get_quic_stream_uni_remote_avail(ssl, value) \  | 
2522  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, \  | 
2523  |  |                                (value))  | 
2524  |  |  | 
2525  |  | # define SSL_get_event_handling_mode(ssl, value) \  | 
2526  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \  | 
2527  |  |                                (value))  | 
2528  |  | # define SSL_set_event_handling_mode(ssl, value) \  | 
2529  |  |     SSL_set_generic_value_uint((ssl), SSL_VALUE_EVENT_HANDLING_MODE, \  | 
2530  |  |                                (value))  | 
2531  |  |  | 
2532  |  | # define SSL_get_stream_write_buf_size(ssl, value) \  | 
2533  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_SIZE, \  | 
2534  |  |                                (value))  | 
2535  |  | # define SSL_get_stream_write_buf_used(ssl, value) \  | 
2536  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_USED, \  | 
2537  |  |                                (value))  | 
2538  |  | # define SSL_get_stream_write_buf_avail(ssl, value) \  | 
2539  |  |     SSL_get_generic_value_uint((ssl), SSL_VALUE_STREAM_WRITE_BUF_AVAIL, \  | 
2540  |  |                                (value))  | 
2541  |  |  | 
2542  |  | # define SSL_POLL_EVENT_NONE        0  | 
2543  |  |  | 
2544  |  | # define SSL_POLL_EVENT_F           (1U <<  0) /* F   (Failure) */  | 
2545  |  | # define SSL_POLL_EVENT_EL          (1U <<  1) /* EL  (Exception on Listener) */  | 
2546  |  | # define SSL_POLL_EVENT_EC          (1U <<  2) /* EC  (Exception on Conn) */  | 
2547  |  | # define SSL_POLL_EVENT_ECD         (1U <<  3) /* ECD (Exception on Conn Drained) */  | 
2548  |  | # define SSL_POLL_EVENT_ER          (1U <<  4) /* ER  (Exception on Read) */  | 
2549  |  | # define SSL_POLL_EVENT_EW          (1U <<  5) /* EW  (Exception on Write) */  | 
2550  |  | # define SSL_POLL_EVENT_R           (1U <<  6) /* R   (Readable) */  | 
2551  |  | # define SSL_POLL_EVENT_W           (1U <<  7) /* W   (Writable) */  | 
2552  |  | # define SSL_POLL_EVENT_IC          (1U <<  8) /* IC  (Incoming Connection) */  | 
2553  |  | # define SSL_POLL_EVENT_ISB         (1U <<  9) /* ISB (Incoming Stream: Bidi) */  | 
2554  |  | # define SSL_POLL_EVENT_ISU         (1U << 10) /* ISU (Incoming Stream: Uni) */  | 
2555  |  | # define SSL_POLL_EVENT_OSB         (1U << 11) /* OSB (Outgoing Stream: Bidi) */  | 
2556  |  | # define SSL_POLL_EVENT_OSU         (1U << 12) /* OSU (Outgoing Stream: Uni) */  | 
2557  |  |  | 
2558  |  | # define SSL_POLL_EVENT_RW          (SSL_POLL_EVENT_R | SSL_POLL_EVENT_W)  | 
2559  |  | # define SSL_POLL_EVENT_RE          (SSL_POLL_EVENT_R | SSL_POLL_EVENT_ER)  | 
2560  |  | # define SSL_POLL_EVENT_WE          (SSL_POLL_EVENT_W | SSL_POLL_EVENT_EW)  | 
2561  |  | # define SSL_POLL_EVENT_RWE         (SSL_POLL_EVENT_RE | SSL_POLL_EVENT_WE)  | 
2562  |  | # define SSL_POLL_EVENT_E           (SSL_POLL_EVENT_EL | SSL_POLL_EVENT_EC \  | 
2563  |  |                                      | SSL_POLL_EVENT_ER | SSL_POLL_EVENT_EW)  | 
2564  |  | # define SSL_POLL_EVENT_IS          (SSL_POLL_EVENT_ISB | SSL_POLL_EVENT_ISU)  | 
2565  |  | # define SSL_POLL_EVENT_ISE         (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_EC)  | 
2566  |  | # define SSL_POLL_EVENT_I           (SSL_POLL_EVENT_IS | SSL_POLL_EVENT_IC)  | 
2567  |  | # define SSL_POLL_EVENT_OS          (SSL_POLL_EVENT_OSB | SSL_POLL_EVENT_OSU)  | 
2568  |  | # define SSL_POLL_EVENT_OSE         (SSL_POLL_EVENT_OS | SSL_POLL_EVENT_EC)  | 
2569  |  |  | 
2570  |  | typedef struct ssl_poll_item_st { | 
2571  |  |     BIO_POLL_DESCRIPTOR desc;  | 
2572  |  |     uint64_t            events, revents;  | 
2573  |  | } SSL_POLL_ITEM;  | 
2574  |  |  | 
2575  |  | # define SSL_POLL_FLAG_NO_HANDLE_EVENTS  (1U << 0)  | 
2576  |  |  | 
2577  |  | __owur int SSL_poll(SSL_POLL_ITEM *items,  | 
2578  |  |                     size_t num_items,  | 
2579  |  |                     size_t stride,  | 
2580  |  |                     const struct timeval *timeout,  | 
2581  |  |                     uint64_t flags,  | 
2582  |  |                     size_t *result_count);  | 
2583  |  |  | 
2584  |  | static ossl_inline ossl_unused BIO_POLL_DESCRIPTOR  | 
2585  |  | SSL_as_poll_descriptor(SSL *s)  | 
2586  | 0  | { | 
2587  | 0  |     BIO_POLL_DESCRIPTOR d;  | 
2588  | 0  | 
  | 
2589  | 0  |     d.type      = BIO_POLL_DESCRIPTOR_TYPE_SSL;  | 
2590  | 0  |     d.value.ssl = s;  | 
2591  | 0  |     return d;  | 
2592  | 0  | } Unexecuted instantiation: crypto_openssl_mgt.c:SSL_as_poll_descriptor Unexecuted instantiation: tortls_openssl.c:SSL_as_poll_descriptor  | 
2593  |  |  | 
2594  |  | # ifndef OPENSSL_NO_DEPRECATED_1_1_0  | 
2595  |  | #  define SSL_cache_hit(s) SSL_session_reused(s)  | 
2596  |  | # endif  | 
2597  |  |  | 
2598  |  | __owur int SSL_session_reused(const SSL *s);  | 
2599  |  | __owur int SSL_is_server(const SSL *s);  | 
2600  |  |  | 
2601  |  | __owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void);  | 
2602  |  | int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx);  | 
2603  |  | void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx);  | 
2604  |  | unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags);  | 
2605  |  | __owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx,  | 
2606  |  |                                              unsigned int flags);  | 
2607  |  | __owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre);  | 
2608  |  |  | 
2609  |  | void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl);  | 
2610  |  | void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx);  | 
2611  |  |  | 
2612  |  | __owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);  | 
2613  |  | __owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv);  | 
2614  |  | __owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);  | 
2615  |  |  | 
2616  |  | void SSL_add_ssl_module(void);  | 
2617  |  | int SSL_config(SSL *s, const char *name);  | 
2618  |  | int SSL_CTX_config(SSL_CTX *ctx, const char *name);  | 
2619  |  |  | 
2620  |  | # ifndef OPENSSL_NO_SSL_TRACE  | 
2621  |  | void SSL_trace(int write_p, int version, int content_type,  | 
2622  |  |                const void *buf, size_t len, SSL *ssl, void *arg);  | 
2623  |  | # endif  | 
2624  |  |  | 
2625  |  | # ifndef OPENSSL_NO_SOCK  | 
2626  |  | int DTLSv1_listen(SSL *s, BIO_ADDR *client);  | 
2627  |  | # endif  | 
2628  |  |  | 
2629  |  | # ifndef OPENSSL_NO_CT  | 
2630  |  |  | 
2631  |  | /*  | 
2632  |  |  * A callback for verifying that the received SCTs are sufficient.  | 
2633  |  |  * Expected to return 1 if they are sufficient, otherwise 0.  | 
2634  |  |  * May return a negative integer if an error occurs.  | 
2635  |  |  * A connection should be aborted if the SCTs are deemed insufficient.  | 
2636  |  |  */  | 
2637  |  | typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx,  | 
2638  |  |                                     const STACK_OF(SCT) *scts, void *arg);  | 
2639  |  |  | 
2640  |  | /*  | 
2641  |  |  * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate  | 
2642  |  |  * the received SCTs.  | 
2643  |  |  * If the callback returns a non-positive result, the connection is terminated.  | 
2644  |  |  * Call this function before beginning a handshake.  | 
2645  |  |  * If a NULL |callback| is provided, SCT validation is disabled.  | 
2646  |  |  * |arg| is arbitrary userdata that will be passed to the callback whenever it  | 
2647  |  |  * is invoked. Ownership of |arg| remains with the caller.  | 
2648  |  |  *  | 
2649  |  |  * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response  | 
2650  |  |  *       will be requested.  | 
2651  |  |  */  | 
2652  |  | int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback,  | 
2653  |  |                                    void *arg);  | 
2654  |  | int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx,  | 
2655  |  |                                        ssl_ct_validation_cb callback,  | 
2656  |  |                                        void *arg);  | 
2657  |  | #define SSL_disable_ct(s) \  | 
2658  |  |         ((void) SSL_set_validation_callback((s), NULL, NULL))  | 
2659  |  | #define SSL_CTX_disable_ct(ctx) \  | 
2660  |  |         ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL))  | 
2661  |  |  | 
2662  |  | /*  | 
2663  |  |  * The validation type enumerates the available behaviours of the built-in SSL  | 
2664  |  |  * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct().  | 
2665  |  |  * The underlying callback is a static function in libssl.  | 
2666  |  |  */  | 
2667  |  | enum { | 
2668  |  |     SSL_CT_VALIDATION_PERMISSIVE = 0,  | 
2669  |  |     SSL_CT_VALIDATION_STRICT  | 
2670  |  | };  | 
2671  |  |  | 
2672  |  | /*  | 
2673  |  |  * Enable CT by setting up a callback that implements one of the built-in  | 
2674  |  |  * validation variants.  The SSL_CT_VALIDATION_PERMISSIVE variant always  | 
2675  |  |  * continues the handshake, the application can make appropriate decisions at  | 
2676  |  |  * handshake completion.  The SSL_CT_VALIDATION_STRICT variant requires at  | 
2677  |  |  * least one valid SCT, or else handshake termination will be requested.  The  | 
2678  |  |  * handshake may continue anyway if SSL_VERIFY_NONE is in effect.  | 
2679  |  |  */  | 
2680  |  | int SSL_enable_ct(SSL *s, int validation_mode);  | 
2681  |  | int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode);  | 
2682  |  |  | 
2683  |  | /*  | 
2684  |  |  * Report whether a non-NULL callback is enabled.  | 
2685  |  |  */  | 
2686  |  | int SSL_ct_is_enabled(const SSL *s);  | 
2687  |  | int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx);  | 
2688  |  |  | 
2689  |  | /* Gets the SCTs received from a connection */  | 
2690  |  | const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s);  | 
2691  |  |  | 
2692  |  | /*  | 
2693  |  |  * Loads the CT log list from the default location.  | 
2694  |  |  * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,  | 
2695  |  |  * the log information loaded from this file will be appended to the  | 
2696  |  |  * CTLOG_STORE.  | 
2697  |  |  * Returns 1 on success, 0 otherwise.  | 
2698  |  |  */  | 
2699  |  | int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx);  | 
2700  |  |  | 
2701  |  | /*  | 
2702  |  |  * Loads the CT log list from the specified file path.  | 
2703  |  |  * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store,  | 
2704  |  |  * the log information loaded from this file will be appended to the  | 
2705  |  |  * CTLOG_STORE.  | 
2706  |  |  * Returns 1 on success, 0 otherwise.  | 
2707  |  |  */  | 
2708  |  | int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path);  | 
2709  |  |  | 
2710  |  | /*  | 
2711  |  |  * Sets the CT log list used by all SSL connections created from this SSL_CTX.  | 
2712  |  |  * Ownership of the CTLOG_STORE is transferred to the SSL_CTX.  | 
2713  |  |  */  | 
2714  |  | void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs);  | 
2715  |  |  | 
2716  |  | /*  | 
2717  |  |  * Gets the CT log list used by all SSL connections created from this SSL_CTX.  | 
2718  |  |  * This will be NULL unless one of the following functions has been called:  | 
2719  |  |  * - SSL_CTX_set_default_ctlog_list_file  | 
2720  |  |  * - SSL_CTX_set_ctlog_list_file  | 
2721  |  |  * - SSL_CTX_set_ctlog_store  | 
2722  |  |  */  | 
2723  |  | const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx);  | 
2724  |  |  | 
2725  |  | # endif /* OPENSSL_NO_CT */  | 
2726  |  |  | 
2727  |  | /* What the "other" parameter contains in security callback */  | 
2728  |  | /* Mask for type */  | 
2729  |  | # define SSL_SECOP_OTHER_TYPE    0xffff0000  | 
2730  |  | # define SSL_SECOP_OTHER_NONE    0  | 
2731  |  | # define SSL_SECOP_OTHER_CIPHER  (1 << 16)  | 
2732  |  | # define SSL_SECOP_OTHER_CURVE   (2 << 16)  | 
2733  |  | # define SSL_SECOP_OTHER_DH      (3 << 16)  | 
2734  |  | # define SSL_SECOP_OTHER_PKEY    (4 << 16)  | 
2735  |  | # define SSL_SECOP_OTHER_SIGALG  (5 << 16)  | 
2736  |  | # define SSL_SECOP_OTHER_CERT    (6 << 16)  | 
2737  |  |  | 
2738  |  | /* Indicated operation refers to peer key or certificate */  | 
2739  |  | # define SSL_SECOP_PEER          0x1000  | 
2740  |  |  | 
2741  |  | /* Values for "op" parameter in security callback */  | 
2742  |  |  | 
2743  |  | /* Called to filter ciphers */  | 
2744  |  | /* Ciphers client supports */  | 
2745  |  | # define SSL_SECOP_CIPHER_SUPPORTED      (1 | SSL_SECOP_OTHER_CIPHER)  | 
2746  |  | /* Cipher shared by client/server */  | 
2747  |  | # define SSL_SECOP_CIPHER_SHARED         (2 | SSL_SECOP_OTHER_CIPHER)  | 
2748  |  | /* Sanity check of cipher server selects */  | 
2749  |  | # define SSL_SECOP_CIPHER_CHECK          (3 | SSL_SECOP_OTHER_CIPHER)  | 
2750  |  | /* Curves supported by client */  | 
2751  |  | # define SSL_SECOP_CURVE_SUPPORTED       (4 | SSL_SECOP_OTHER_CURVE)  | 
2752  |  | /* Curves shared by client/server */  | 
2753  |  | # define SSL_SECOP_CURVE_SHARED          (5 | SSL_SECOP_OTHER_CURVE)  | 
2754  |  | /* Sanity check of curve server selects */  | 
2755  |  | # define SSL_SECOP_CURVE_CHECK           (6 | SSL_SECOP_OTHER_CURVE)  | 
2756  |  | /* Temporary DH key */  | 
2757  |  | # define SSL_SECOP_TMP_DH                (7 | SSL_SECOP_OTHER_PKEY)  | 
2758  |  | /* SSL/TLS version */  | 
2759  |  | # define SSL_SECOP_VERSION               (9 | SSL_SECOP_OTHER_NONE)  | 
2760  |  | /* Session tickets */  | 
2761  |  | # define SSL_SECOP_TICKET                (10 | SSL_SECOP_OTHER_NONE)  | 
2762  |  | /* Supported signature algorithms sent to peer */  | 
2763  |  | # define SSL_SECOP_SIGALG_SUPPORTED      (11 | SSL_SECOP_OTHER_SIGALG)  | 
2764  |  | /* Shared signature algorithm */  | 
2765  |  | # define SSL_SECOP_SIGALG_SHARED         (12 | SSL_SECOP_OTHER_SIGALG)  | 
2766  |  | /* Sanity check signature algorithm allowed */  | 
2767  |  | # define SSL_SECOP_SIGALG_CHECK          (13 | SSL_SECOP_OTHER_SIGALG)  | 
2768  |  | /* Used to get mask of supported public key signature algorithms */  | 
2769  |  | # define SSL_SECOP_SIGALG_MASK           (14 | SSL_SECOP_OTHER_SIGALG)  | 
2770  |  | /* Use to see if compression is allowed */  | 
2771  |  | # define SSL_SECOP_COMPRESSION           (15 | SSL_SECOP_OTHER_NONE)  | 
2772  |  | /* EE key in certificate */  | 
2773  |  | # define SSL_SECOP_EE_KEY                (16 | SSL_SECOP_OTHER_CERT)  | 
2774  |  | /* CA key in certificate */  | 
2775  |  | # define SSL_SECOP_CA_KEY                (17 | SSL_SECOP_OTHER_CERT)  | 
2776  |  | /* CA digest algorithm in certificate */  | 
2777  |  | # define SSL_SECOP_CA_MD                 (18 | SSL_SECOP_OTHER_CERT)  | 
2778  |  | /* Peer EE key in certificate */  | 
2779  |  | # define SSL_SECOP_PEER_EE_KEY           (SSL_SECOP_EE_KEY | SSL_SECOP_PEER)  | 
2780  |  | /* Peer CA key in certificate */  | 
2781  |  | # define SSL_SECOP_PEER_CA_KEY           (SSL_SECOP_CA_KEY | SSL_SECOP_PEER)  | 
2782  |  | /* Peer CA digest algorithm in certificate */  | 
2783  |  | # define SSL_SECOP_PEER_CA_MD            (SSL_SECOP_CA_MD | SSL_SECOP_PEER)  | 
2784  |  |  | 
2785  |  | void SSL_set_security_level(SSL *s, int level);  | 
2786  |  | __owur int SSL_get_security_level(const SSL *s);  | 
2787  |  | void SSL_set_security_callback(SSL *s,  | 
2788  |  |                                int (*cb) (const SSL *s, const SSL_CTX *ctx,  | 
2789  |  |                                           int op, int bits, int nid,  | 
2790  |  |                                           void *other, void *ex));  | 
2791  |  | int (*SSL_get_security_callback(const SSL *s)) (const SSL *s,  | 
2792  |  |                                                 const SSL_CTX *ctx, int op,  | 
2793  |  |                                                 int bits, int nid, void *other,  | 
2794  |  |                                                 void *ex);  | 
2795  |  | void SSL_set0_security_ex_data(SSL *s, void *ex);  | 
2796  |  | __owur void *SSL_get0_security_ex_data(const SSL *s);  | 
2797  |  |  | 
2798  |  | void SSL_CTX_set_security_level(SSL_CTX *ctx, int level);  | 
2799  |  | __owur int SSL_CTX_get_security_level(const SSL_CTX *ctx);  | 
2800  |  | void SSL_CTX_set_security_callback(SSL_CTX *ctx,  | 
2801  |  |                                    int (*cb) (const SSL *s, const SSL_CTX *ctx,  | 
2802  |  |                                               int op, int bits, int nid,  | 
2803  |  |                                               void *other, void *ex));  | 
2804  |  | int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s,  | 
2805  |  |                                                           const SSL_CTX *ctx,  | 
2806  |  |                                                           int op, int bits,  | 
2807  |  |                                                           int nid,  | 
2808  |  |                                                           void *other,  | 
2809  |  |                                                           void *ex);  | 
2810  |  | void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex);  | 
2811  |  | __owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx);  | 
2812  |  |  | 
2813  |  | /* OPENSSL_INIT flag 0x010000 reserved for internal use */  | 
2814  |  | # define OPENSSL_INIT_NO_LOAD_SSL_STRINGS    0x00100000L  | 
2815  | 16  | # define OPENSSL_INIT_LOAD_SSL_STRINGS       0x00200000L  | 
2816  |  |  | 
2817  |  | # define OPENSSL_INIT_SSL_DEFAULT \  | 
2818  |  |         (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS)  | 
2819  |  |  | 
2820  |  | int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);  | 
2821  |  |  | 
2822  |  | # ifndef OPENSSL_NO_UNIT_TEST  | 
2823  |  | __owur const struct openssl_ssl_test_functions *SSL_test_functions(void);  | 
2824  |  | # endif  | 
2825  |  |  | 
2826  |  | __owur int SSL_free_buffers(SSL *ssl);  | 
2827  |  | __owur int SSL_alloc_buffers(SSL *ssl);  | 
2828  |  |  | 
2829  |  | /* Status codes passed to the decrypt session ticket callback. Some of these  | 
2830  |  |  * are for internal use only and are never passed to the callback. */  | 
2831  |  | typedef int SSL_TICKET_STATUS;  | 
2832  |  |  | 
2833  |  | /* Support for ticket appdata */  | 
2834  |  | /* fatal error, malloc failure */  | 
2835  |  | # define SSL_TICKET_FATAL_ERR_MALLOC 0  | 
2836  |  | /* fatal error, either from parsing or decrypting the ticket */  | 
2837  |  | # define SSL_TICKET_FATAL_ERR_OTHER  1  | 
2838  |  | /* No ticket present */  | 
2839  |  | # define SSL_TICKET_NONE             2  | 
2840  |  | /* Empty ticket present */  | 
2841  |  | # define SSL_TICKET_EMPTY            3  | 
2842  |  | /* the ticket couldn't be decrypted */  | 
2843  |  | # define SSL_TICKET_NO_DECRYPT       4  | 
2844  |  | /* a ticket was successfully decrypted */  | 
2845  |  | # define SSL_TICKET_SUCCESS          5  | 
2846  |  | /* same as above but the ticket needs to be renewed */  | 
2847  |  | # define SSL_TICKET_SUCCESS_RENEW    6  | 
2848  |  |  | 
2849  |  | /* Return codes for the decrypt session ticket callback */  | 
2850  |  | typedef int SSL_TICKET_RETURN;  | 
2851  |  |  | 
2852  |  | /* An error occurred */  | 
2853  |  | #define SSL_TICKET_RETURN_ABORT             0  | 
2854  |  | /* Do not use the ticket, do not send a renewed ticket to the client */  | 
2855  |  | #define SSL_TICKET_RETURN_IGNORE            1  | 
2856  |  | /* Do not use the ticket, send a renewed ticket to the client */  | 
2857  |  | #define SSL_TICKET_RETURN_IGNORE_RENEW      2  | 
2858  |  | /* Use the ticket, do not send a renewed ticket to the client */  | 
2859  |  | #define SSL_TICKET_RETURN_USE               3  | 
2860  |  | /* Use the ticket, send a renewed ticket to the client */  | 
2861  |  | #define SSL_TICKET_RETURN_USE_RENEW         4  | 
2862  |  |  | 
2863  |  | typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg);  | 
2864  |  | typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss,  | 
2865  |  |                                                                const unsigned char *keyname,  | 
2866  |  |                                                                size_t keyname_length,  | 
2867  |  |                                                                SSL_TICKET_STATUS status,  | 
2868  |  |                                                                void *arg);  | 
2869  |  | int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx,  | 
2870  |  |                                   SSL_CTX_generate_session_ticket_fn gen_cb,  | 
2871  |  |                                   SSL_CTX_decrypt_session_ticket_fn dec_cb,  | 
2872  |  |                                   void *arg);  | 
2873  |  | int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len);  | 
2874  |  | int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len);  | 
2875  |  |  | 
2876  |  | typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us);  | 
2877  |  |  | 
2878  |  | void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb);  | 
2879  |  |  | 
2880  |  |  | 
2881  |  | typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg);  | 
2882  |  | void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx,  | 
2883  |  |                                      SSL_allow_early_data_cb_fn cb,  | 
2884  |  |                                      void *arg);  | 
2885  |  | void SSL_set_allow_early_data_cb(SSL *s,  | 
2886  |  |                                  SSL_allow_early_data_cb_fn cb,  | 
2887  |  |                                  void *arg);  | 
2888  |  |  | 
2889  |  | /* store the default cipher strings inside the library */  | 
2890  |  | const char *OSSL_default_cipher_list(void);  | 
2891  |  | const char *OSSL_default_ciphersuites(void);  | 
2892  |  |  | 
2893  |  | /* RFC8879 Certificate compression APIs */  | 
2894  |  |  | 
2895  |  | int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg);  | 
2896  |  | int SSL_compress_certs(SSL *ssl, int alg);  | 
2897  |  |  | 
2898  |  | int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len);  | 
2899  |  | int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len);  | 
2900  |  |  | 
2901  |  | int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data,  | 
2902  |  |                                 size_t comp_length, size_t orig_length);  | 
2903  |  | int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data,  | 
2904  |  |                             size_t comp_length, size_t orig_length);  | 
2905  |  | size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len);  | 
2906  |  | size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len);  | 
2907  |  |  | 
2908  |  | __owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk);  | 
2909  |  | __owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s);  | 
2910  |  | __owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s);  | 
2911  |  | __owur int SSL_get_negotiated_client_cert_type(const SSL *s);  | 
2912  |  | __owur int SSL_get_negotiated_server_cert_type(const SSL *s);  | 
2913  |  |  | 
2914  |  | __owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len);  | 
2915  |  | __owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len);  | 
2916  |  | __owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len);  | 
2917  |  | __owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len);  | 
2918  |  | __owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len);  | 
2919  |  | __owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len);  | 
2920  |  | __owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len);  | 
2921  |  | __owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len);  | 
2922  |  |  | 
2923  |  | /*  | 
2924  |  |  * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used.  | 
2925  |  |  */  | 
2926  |  | # define OSSL_RECORD_PROTECTION_LEVEL_NONE        0  | 
2927  |  | # define OSSL_RECORD_PROTECTION_LEVEL_EARLY       1  | 
2928  |  | # define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE   2  | 
2929  |  | # define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3  | 
2930  |  |  | 
2931  |  | int SSL_set_quic_tls_cbs(SSL *s, const OSSL_DISPATCH *qtdis, void *arg);  | 
2932  |  | int SSL_set_quic_tls_transport_params(SSL *s,  | 
2933  |  |                                       const unsigned char *params,  | 
2934  |  |                                       size_t params_len);  | 
2935  |  |  | 
2936  |  | int SSL_set_quic_tls_early_data_enabled(SSL *s, int enabled);  | 
2937  |  |  | 
2938  |  | # ifdef  __cplusplus  | 
2939  |  | }  | 
2940  |  | # endif  | 
2941  |  | #endif  |