variant_ssl_sys/handwritten/
types.rs

1use libc::*;
2
3#[allow(unused_imports)]
4use super::super::*;
5
6pub enum ASN1_OBJECT {}
7pub enum ASN1_VALUE {}
8
9pub type ASN1_BOOLEAN = c_int;
10pub enum ASN1_INTEGER {}
11pub enum ASN1_ENUMERATED {}
12pub enum ASN1_GENERALIZEDTIME {}
13pub enum ASN1_STRING {}
14pub enum ASN1_BIT_STRING {}
15pub enum ASN1_TIME {}
16pub enum ASN1_OCTET_STRING {}
17pub enum ASN1_NULL {}
18pub enum ASN1_PRINTABLESTRING {}
19pub enum ASN1_T61STRING {}
20pub enum ASN1_IA5STRING {}
21pub enum ASN1_GENERALSTRING {}
22pub enum ASN1_BMPSTRING {}
23pub enum ASN1_UNIVERSALSTRING {}
24pub enum ASN1_UTCTIME {}
25pub enum ASN1_VISIBLESTRING {}
26pub enum ASN1_UTF8STRING {}
27
28pub enum bio_st {} // FIXME remove
29cfg_if! {
30    if #[cfg(any(ossl110, libressl))] {
31        pub enum BIO {}
32    } else {
33        #[repr(C)]
34        pub struct BIO {
35            pub method: *mut BIO_METHOD,
36            pub callback: Option<
37                unsafe extern "C" fn(*mut BIO, c_int, *const c_char, c_int, c_long, c_long) -> c_long,
38            >,
39            pub cb_arg: *mut c_char,
40            pub init: c_int,
41            pub shutdown: c_int,
42            pub flags: c_int,
43            pub retry_reason: c_int,
44            pub num: c_int,
45            pub ptr: *mut c_void,
46            pub next_bio: *mut BIO,
47            pub prev_bio: *mut BIO,
48            pub references: c_int,
49            pub num_read: c_ulong,
50            pub num_write: c_ulong,
51            pub ex_data: CRYPTO_EX_DATA,
52        }
53    }
54}
55cfg_if! {
56    if #[cfg(ossl320)] {
57        pub enum BIO_ADDR {}
58        pub enum BIO_POLL_DESCRIPTOR {}
59        #[repr(C)]
60        pub struct BIO_MSG {
61            pub data: *mut c_void,
62            pub data_len: usize,
63            pub peer: *mut BIO_ADDR,
64            pub local: *mut BIO_ADDR,
65            pub flags: u64,
66        }
67    }
68}
69cfg_if! {
70    if #[cfg(any(ossl110, libressl))] {
71        pub enum BIGNUM {}
72    } else {
73        #[repr(C)]
74        pub struct BIGNUM {
75            pub d: *mut BN_ULONG,
76            pub top: c_int,
77            pub dmax: c_int,
78            pub neg: c_int,
79            pub flags: c_int,
80        }
81    }
82}
83pub enum BN_BLINDING {}
84pub enum BN_MONT_CTX {}
85
86pub enum BN_CTX {}
87pub enum BN_GENCB {}
88
89cfg_if! {
90    if #[cfg(any(ossl110, libressl))] {
91        pub enum EVP_CIPHER {}
92    } else {
93        #[repr(C)]
94        pub struct EVP_CIPHER {
95            pub nid: c_int,
96            pub block_size: c_int,
97            pub key_len: c_int,
98            pub iv_len: c_int,
99            pub flags: c_ulong,
100            pub init: Option<
101                unsafe extern "C" fn(*mut EVP_CIPHER_CTX, *const c_uchar, *const c_uchar, c_int) -> c_int,
102            >,
103            pub do_cipher: Option<
104                unsafe extern "C" fn(*mut EVP_CIPHER_CTX, *mut c_uchar, *const c_uchar, size_t) -> c_int,
105            >,
106            pub cleanup: Option<unsafe extern "C" fn(*mut EVP_CIPHER_CTX) -> c_int>,
107            pub ctx_size: c_int,
108            pub set_asn1_parameters:
109                Option<unsafe extern "C" fn(*mut EVP_CIPHER_CTX, *mut ASN1_TYPE) -> c_int>,
110            pub get_asn1_parameters:
111                Option<unsafe extern "C" fn(*mut EVP_CIPHER_CTX, *mut ASN1_TYPE) -> c_int>,
112            pub ctrl:
113                Option<unsafe extern "C" fn(*mut EVP_CIPHER_CTX, c_int, c_int, *mut c_void) -> c_int>,
114            pub app_data: *mut c_void,
115        }
116    }
117}
118pub enum EVP_CIPHER_CTX {}
119pub enum EVP_MD {}
120cfg_if! {
121    if #[cfg(any(ossl110, libressl))] {
122        pub enum EVP_MD_CTX {}
123    } else {
124        #[repr(C)]
125        pub struct EVP_MD_CTX {
126            digest: *mut EVP_MD,
127            engine: *mut ENGINE,
128            flags: c_ulong,
129            md_data: *mut c_void,
130            pctx: *mut EVP_PKEY_CTX,
131            update: *mut c_void,
132        }
133    }
134}
135
136pub enum PKCS8_PRIV_KEY_INFO {}
137
138pub enum EVP_PKEY_ASN1_METHOD {}
139
140pub enum EVP_PKEY_CTX {}
141
142pub enum CMAC_CTX {}
143
144cfg_if! {
145    if #[cfg(any(ossl110, libressl))] {
146        pub enum HMAC_CTX {}
147    } else {
148        #[repr(C)]
149        pub struct HMAC_CTX {
150            md: *mut EVP_MD,
151            md_ctx: EVP_MD_CTX,
152            i_ctx: EVP_MD_CTX,
153            o_ctx: EVP_MD_CTX,
154            key_length: c_uint,
155            key: [c_uchar; 128],
156        }
157    }
158}
159
160cfg_if! {
161    if #[cfg(any(ossl110, libressl))] {
162        pub enum DH {}
163    } else {
164        #[repr(C)]
165        pub struct DH {
166            pub pad: c_int,
167            pub version: c_int,
168            pub p: *mut BIGNUM,
169            pub g: *mut BIGNUM,
170            pub length: c_long,
171            pub pub_key: *mut BIGNUM,
172            pub priv_key: *mut BIGNUM,
173            pub flags: c_int,
174            pub method_mont_p: *mut BN_MONT_CTX,
175            pub q: *mut BIGNUM,
176            pub j: *mut BIGNUM,
177            pub seed: *mut c_uchar,
178            pub seedlen: c_int,
179            pub counter: *mut BIGNUM,
180            pub references: c_int,
181            pub ex_data: CRYPTO_EX_DATA,
182            pub meth: *const DH_METHOD,
183            pub engine: *mut ENGINE,
184        }
185    }
186}
187pub enum DH_METHOD {}
188
189cfg_if! {
190    if #[cfg(any(ossl110, libressl))] {
191        pub enum DSA {}
192    } else {
193        #[repr(C)]
194        pub struct DSA {
195            pub pad: c_int,
196            pub version: c_long,
197            pub write_params: c_int,
198
199            pub p: *mut BIGNUM,
200            pub q: *mut BIGNUM,
201            pub g: *mut BIGNUM,
202            pub pub_key: *mut BIGNUM,
203            pub priv_key: *mut BIGNUM,
204            pub kinv: *mut BIGNUM,
205            pub r: *mut BIGNUM,
206
207            pub flags: c_int,
208            pub method_mont_p: *mut BN_MONT_CTX,
209            pub references: c_int,
210            pub ex_data: CRYPTO_EX_DATA,
211            pub meth: *const DSA_METHOD,
212            pub engine: *mut ENGINE,
213        }
214    }
215}
216pub enum DSA_METHOD {}
217
218cfg_if! {
219    if #[cfg(any(ossl110, libressl))] {
220        pub enum RSA {}
221    } else {
222        #[repr(C)]
223        pub struct RSA {
224            pub pad: c_int,
225            pub version: c_long,
226            pub meth: *const RSA_METHOD,
227
228            pub engine: *mut ENGINE,
229            pub n: *mut BIGNUM,
230            pub e: *mut BIGNUM,
231            pub d: *mut BIGNUM,
232            pub p: *mut BIGNUM,
233            pub q: *mut BIGNUM,
234            pub dmp1: *mut BIGNUM,
235            pub dmq1: *mut BIGNUM,
236            pub iqmp: *mut BIGNUM,
237
238            pub ex_data: CRYPTO_EX_DATA,
239            pub references: c_int,
240            pub flags: c_int,
241
242            pub _method_mod_n: *mut BN_MONT_CTX,
243            pub _method_mod_p: *mut BN_MONT_CTX,
244            pub _method_mod_q: *mut BN_MONT_CTX,
245
246            pub bignum_data: *mut c_char,
247            pub blinding: *mut BN_BLINDING,
248            pub mt_blinding: *mut BN_BLINDING,
249        }
250    }
251}
252pub enum RSA_METHOD {}
253
254pub enum EC_KEY {}
255
256cfg_if! {
257    if #[cfg(any(ossl110, libressl))] {
258        pub enum X509 {}
259    } else {
260        #[repr(C)]
261        pub struct X509 {
262            pub cert_info: *mut X509_CINF,
263            pub sig_alg: *mut X509_ALGOR,
264            pub signature: *mut ASN1_BIT_STRING,
265            pub valid: c_int,
266            pub references: c_int,
267            pub name: *mut c_char,
268            pub ex_data: CRYPTO_EX_DATA,
269            pub ex_pathlen: c_long,
270            pub ex_pcpathlen: c_long,
271            pub ex_flags: c_ulong,
272            pub ex_kusage: c_ulong,
273            pub ex_xkusage: c_ulong,
274            pub ex_nscert: c_ulong,
275            skid: *mut c_void,
276            akid: *mut c_void,
277            policy_cache: *mut c_void,
278            crldp: *mut c_void,
279            altname: *mut c_void,
280            nc: *mut c_void,
281            #[cfg(not(osslconf = "OPENSSL_NO_RFC3779"))]
282            rfc3779_addr: *mut c_void,
283            #[cfg(not(osslconf = "OPENSSL_NO_RFC3779"))]
284            rfc3779_asid: *mut c_void,
285            #[cfg(not(osslconf = "OPENSSL_NO_SHA"))]
286            sha1_hash: [c_uchar; 20],
287            aux: *mut c_void,
288        }
289    }
290}
291cfg_if! {
292    if #[cfg(any(ossl110, libressl382))] {
293        pub enum X509_ALGOR {}
294    } else {
295        #[repr(C)]
296        pub struct X509_ALGOR {
297            pub algorithm: *mut ASN1_OBJECT,
298            parameter: *mut c_void,
299        }
300    }
301}
302
303stack!(stack_st_X509_ALGOR);
304
305pub enum X509_LOOKUP_METHOD {}
306
307pub enum X509_NAME {}
308
309pub enum X509_PUBKEY {}
310
311cfg_if! {
312    if #[cfg(any(ossl110, libressl))] {
313        pub enum X509_STORE {}
314    } else {
315        #[repr(C)]
316        pub struct X509_STORE {
317            cache: c_int,
318            pub objs: *mut stack_st_X509_OBJECT,
319            get_cert_methods: *mut stack_st_X509_LOOKUP,
320            param: *mut X509_VERIFY_PARAM,
321            verify: Option<extern "C" fn(ctx: *mut X509_STORE_CTX) -> c_int>,
322            verify_cb: Option<extern "C" fn(ok: c_int, ctx: *mut X509_STORE_CTX) -> c_int>,
323            get_issuer: Option<
324                extern "C" fn(issuer: *mut *mut X509, ctx: *mut X509_STORE_CTX, x: *mut X509) -> c_int,
325            >,
326            check_issued:
327                Option<extern "C" fn(ctx: *mut X509_STORE_CTX, x: *mut X509, issuer: *mut X509) -> c_int>,
328            check_revocation: Option<extern "C" fn(ctx: *mut X509_STORE_CTX) -> c_int>,
329            get_crl: Option<
330                extern "C" fn(ctx: *mut X509_STORE_CTX, crl: *mut *mut X509_CRL, x: *mut X509) -> c_int,
331            >,
332            check_crl: Option<extern "C" fn(ctx: *mut X509_STORE_CTX, crl: *mut X509_CRL) -> c_int>,
333            cert_crl:
334                Option<extern "C" fn(ctx: *mut X509_STORE_CTX, crl: *mut X509_CRL, x: *mut X509) -> c_int>,
335            lookup_certs:
336                Option<extern "C" fn(ctx: *mut X509_STORE_CTX, nm: *const X509_NAME) -> *mut stack_st_X509>,
337            lookup_crls: Option<
338                extern "C" fn(ctx: *const X509_STORE_CTX, nm: *const X509_NAME) -> *mut stack_st_X509_CRL,
339            >,
340            cleanup: Option<extern "C" fn(ctx: *mut X509_STORE_CTX) -> c_int>,
341            ex_data: CRYPTO_EX_DATA,
342            references: c_int,
343        }
344    }
345}
346
347pub enum X509_STORE_CTX {}
348
349cfg_if! {
350    if #[cfg(any(ossl110, libressl))] {
351        pub enum X509_VERIFY_PARAM {}
352    } else {
353        #[repr(C)]
354        pub struct X509_VERIFY_PARAM {
355            pub name: *mut c_char,
356            pub check_time: time_t,
357            pub inh_flags: c_ulong,
358            pub flags: c_ulong,
359            pub purpose: c_int,
360            pub trust: c_int,
361            pub depth: c_int,
362            pub policies: *mut stack_st_ASN1_OBJECT,
363            #[cfg(ossl102)]
364            pub id: *mut X509_VERIFY_PARAM_ID,
365        }
366    }
367}
368
369cfg_if! {
370    if #[cfg(any(ossl110, libressl))] {
371        pub enum X509_OBJECT {}
372    } else {
373        #[repr(C)]
374        pub struct X509_OBJECT {
375            pub type_: c_int,
376            pub data: X509_OBJECT_data,
377        }
378        #[repr(C)]
379        pub union X509_OBJECT_data {
380            pub ptr: *mut c_char,
381            pub x509: *mut X509,
382            pub crl: *mut X509_CRL,
383            pub pkey: *mut EVP_PKEY,
384        }
385    }
386}
387
388pub enum X509_LOOKUP {}
389
390#[repr(C)]
391pub struct X509V3_CTX {
392    flags: c_int,
393    issuer_cert: *mut c_void,
394    subject_cert: *mut c_void,
395    subject_req: *mut c_void,
396    crl: *mut c_void,
397    #[cfg(not(libressl400))]
398    db_meth: *mut c_void,
399    db: *mut c_void,
400    #[cfg(ossl300)]
401    issuer_pkey: *mut c_void,
402    // I like the last comment line, it is copied from OpenSSL sources:
403    // Maybe more here
404}
405pub enum CONF {}
406#[cfg(ossl110)]
407pub enum OPENSSL_INIT_SETTINGS {}
408
409pub enum ENGINE {}
410cfg_if! {
411    if #[cfg(any(ossl110, libressl))] {
412        pub enum SSL {}
413    } else {
414        #[repr(C)]
415        pub struct SSL {
416            version: c_int,
417            type_: c_int,
418            method: *const SSL_METHOD,
419            rbio: *mut c_void,
420            wbio: *mut c_void,
421            bbio: *mut c_void,
422            rwstate: c_int,
423            in_handshake: c_int,
424            handshake_func: Option<unsafe extern "C" fn(*mut SSL) -> c_int>,
425            pub server: c_int,
426            new_session: c_int,
427            quiet_session: c_int,
428            shutdown: c_int,
429            state: c_int,
430            rstate: c_int,
431            init_buf: *mut c_void,
432            init_msg: *mut c_void,
433            init_num: c_int,
434            init_off: c_int,
435            packet: *mut c_uchar,
436            packet_length: c_uint,
437            s2: *mut c_void,
438            s3: *mut c_void,
439            d1: *mut c_void,
440            read_ahead: c_int,
441            msg_callback: Option<
442                unsafe extern "C" fn(c_int, c_int, c_int, *const c_void, size_t, *mut SSL, *mut c_void),
443            >,
444            msg_callback_arg: *mut c_void,
445            hit: c_int,
446            param: *mut c_void,
447            cipher_list: *mut stack_st_SSL_CIPHER,
448            cipher_list_by_id: *mut stack_st_SSL_CIPHER,
449            mac_flags: c_int,
450            enc_read_ctx: *mut EVP_CIPHER_CTX,
451            read_hash: *mut EVP_MD_CTX,
452            expand: *mut c_void,
453            enc_write_ctx: *mut EVP_CIPHER_CTX,
454            write_hash: *mut EVP_MD_CTX,
455            compress: *mut c_void,
456            cert: *mut c_void,
457            sid_ctx_length: c_uint,
458            sid_ctx: [c_uchar; SSL_MAX_SID_CTX_LENGTH as usize],
459            session: *mut SSL_SESSION,
460            generate_session_id: GEN_SESSION_CB,
461            verify_mode: c_int,
462            verify_callback: Option<unsafe extern "C" fn(c_int, *mut X509_STORE_CTX) -> c_int>,
463            info_callback: Option<unsafe extern "C" fn(*mut SSL, c_int, c_int)>,
464            error: c_int,
465            error_code: c_int,
466            #[cfg(not(osslconf = "OPENSSL_NO_KRB5"))]
467            kssl_ctx: *mut c_void,
468            #[cfg(not(osslconf = "OPENSSL_NO_PSK"))]
469            psk_client_callback: Option<
470                unsafe extern "C" fn(*mut SSL, *const c_char, *mut c_char, c_uint, *mut c_uchar, c_uint)
471                    -> c_uint,
472            >,
473            #[cfg(not(osslconf = "OPENSSL_NO_PSK"))]
474            psk_server_callback:
475                Option<unsafe extern "C" fn(*mut SSL, *const c_char, *mut c_uchar, c_uint) -> c_uint>,
476            ctx: *mut SSL_CTX,
477            debug: c_int,
478            verify_result: c_long,
479            ex_data: CRYPTO_EX_DATA,
480            client_CA: *mut stack_st_X509_NAME,
481            references: c_int,
482            options: c_ulong,
483            mode: c_ulong,
484            max_cert_list: c_long,
485            first_packet: c_int,
486            client_version: c_int,
487            max_send_fragment: c_uint,
488            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
489            tlsext_debug_cb:
490                Option<unsafe extern "C" fn(*mut SSL, c_int, c_int, *mut c_uchar, c_int, *mut c_void)>,
491            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
492            tlsext_debug_arg: *mut c_void,
493            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
494            tlsext_hostname: *mut c_char,
495            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
496            servername_done: c_int,
497            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
498            tlsext_status_type: c_int,
499            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
500            tlsext_status_expected: c_int,
501            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
502            tlsext_ocsp_ids: *mut c_void,
503            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
504            tlsext_ocsp_exts: *mut c_void,
505            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
506            tlsext_ocsp_resp: *mut c_uchar,
507            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
508            tlsext_ocsp_resplen: c_int,
509            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
510            tlsext_ticket_expected: c_int,
511            #[cfg(all(
512                not(osslconf = "OPENSSL_NO_TLSEXT"),
513                not(osslconf = "OPENSSL_NO_EC")
514            ))]
515            tlsext_ecpointformatlist_length: size_t,
516            #[cfg(all(
517                not(osslconf = "OPENSSL_NO_TLSEXT"),
518                not(osslconf = "OPENSSL_NO_EC")
519            ))]
520            tlsext_ecpointformatlist: *mut c_uchar,
521            #[cfg(all(
522                not(osslconf = "OPENSSL_NO_TLSEXT"),
523                not(osslconf = "OPENSSL_NO_EC")
524            ))]
525            tlsext_ellipticcurvelist_length: size_t,
526            #[cfg(all(
527                not(osslconf = "OPENSSL_NO_TLSEXT"),
528                not(osslconf = "OPENSSL_NO_EC")
529            ))]
530            tlsext_ellipticcurvelist: *mut c_uchar,
531            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
532            tlsext_opaque_prf_input: *mut c_void,
533            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
534            tlsext_opaque_prf_input_len: size_t,
535            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
536            tlsext_session_ticket: *mut c_void,
537            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
538            tlsext_session_ticket_ext_cb: tls_session_ticket_ext_cb_fn,
539            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
540            tls_session_ticket_ext_cb_arg: *mut c_void,
541            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
542            tls_session_secret_cb: tls_session_secret_cb_fn,
543            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
544            tls_session_secret_cb_arg: *mut c_void,
545            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
546            initial_ctx: *mut SSL_CTX,
547            #[cfg(all(
548                not(osslconf = "OPENSSL_NO_TLSEXT"),
549                not(osslconf = "OPENSSL_NO_NEXTPROTONEG")
550            ))]
551            next_proto_negotiated: *mut c_uchar,
552            #[cfg(all(
553                not(osslconf = "OPENSSL_NO_TLSEXT"),
554                not(osslconf = "OPENSSL_NO_NEXTPROTONEG")
555            ))]
556            next_proto_negotiated_len: c_uchar,
557            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
558            srtp_profiles: *mut c_void,
559            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
560            srtp_profile: *mut c_void,
561            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
562            tlsext_heartbeat: c_uint,
563            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
564            tlsext_hb_pending: c_uint,
565            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
566            tlsext_hb_seq: c_uint,
567            renegotiate: c_int,
568            #[cfg(not(osslconf = "OPENSSL_NO_SRP"))]
569            srp_ctx: SRP_CTX,
570            #[cfg(all(not(osslconf = "OPENSSL_NO_TLSEXT"), ossl102))]
571            alpn_client_proto_list: *mut c_uchar,
572            #[cfg(all(not(osslconf = "OPENSSL_NO_TLSEXT"), ossl102))]
573            alpn_client_proto_list_len: c_uint,
574        }
575    }
576}
577cfg_if! {
578    if #[cfg(any(ossl110, libressl))] {
579        pub enum SSL_CTX {}
580    } else {
581        #[repr(C)]
582        pub struct SSL_CTX {
583            method: *mut c_void,
584            cipher_list: *mut c_void,
585            cipher_list_by_id: *mut c_void,
586            cert_store: *mut c_void,
587            sessions: *mut c_void,
588            session_cache_size: c_ulong,
589            session_cache_head: *mut c_void,
590            session_cache_tail: *mut c_void,
591            session_cache_mode: c_int,
592            session_timeout: c_long,
593            new_session_cb: *mut c_void,
594            remove_session_cb: *mut c_void,
595            get_session_cb: *mut c_void,
596            stats: [c_int; 11],
597            pub references: c_int,
598            app_verify_callback: *mut c_void,
599            app_verify_arg: *mut c_void,
600            default_passwd_callback: *mut c_void,
601            default_passwd_callback_userdata: *mut c_void,
602            client_cert_cb: *mut c_void,
603            app_gen_cookie_cb: *mut c_void,
604            app_verify_cookie_cb: *mut c_void,
605            ex_dat: CRYPTO_EX_DATA,
606            rsa_md5: *mut c_void,
607            md5: *mut c_void,
608            sha1: *mut c_void,
609            extra_certs: *mut c_void,
610            comp_methods: *mut c_void,
611            info_callback: *mut c_void,
612            client_CA: *mut c_void,
613            options: c_ulong,
614            mode: c_ulong,
615            max_cert_list: c_long,
616            cert: *mut c_void,
617            read_ahead: c_int,
618            msg_callback: *mut c_void,
619            msg_callback_arg: *mut c_void,
620            verify_mode: c_int,
621            sid_ctx_length: c_uint,
622            sid_ctx: [c_uchar; 32],
623            default_verify_callback: *mut c_void,
624            generate_session_id: *mut c_void,
625            param: *mut c_void,
626            quiet_shutdown: c_int,
627            max_send_fragment: c_uint,
628
629            #[cfg(not(osslconf = "OPENSSL_NO_ENGINE"))]
630            client_cert_engine: *mut c_void,
631
632            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
633            tlsext_servername_callback: *mut c_void,
634            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
635            tlsect_servername_arg: *mut c_void,
636            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
637            tlsext_tick_key_name: [c_uchar; 16],
638            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
639            tlsext_tick_hmac_key: [c_uchar; 16],
640            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
641            tlsext_tick_aes_key: [c_uchar; 16],
642            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
643            tlsext_ticket_key_cb: *mut c_void,
644            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
645            tlsext_status_cb: *mut c_void,
646            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
647            tlsext_status_arg: *mut c_void,
648            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
649            tlsext_opaque_prf_input_callback: *mut c_void,
650            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
651            tlsext_opaque_prf_input_callback_arg: *mut c_void,
652
653            #[cfg(not(osslconf = "OPENSSL_NO_PSK"))]
654            psk_identity_hint: *mut c_void,
655            #[cfg(not(osslconf = "OPENSSL_NO_PSK"))]
656            psk_client_callback: *mut c_void,
657            #[cfg(not(osslconf = "OPENSSL_NO_PSK"))]
658            psk_server_callback: *mut c_void,
659
660            #[cfg(not(osslconf = "OPENSSL_NO_BUF_FREELISTS"))]
661            freelist_max_len: c_uint,
662            #[cfg(not(osslconf = "OPENSSL_NO_BUF_FREELISTS"))]
663            wbuf_freelist: *mut c_void,
664            #[cfg(not(osslconf = "OPENSSL_NO_BUF_FREELISTS"))]
665            rbuf_freelist: *mut c_void,
666
667            #[cfg(not(osslconf = "OPENSSL_NO_SRP"))]
668            srp_ctx: SRP_CTX,
669
670            #[cfg(all(
671                not(osslconf = "OPENSSL_NO_TLSEXT"),
672                not(osslconf = "OPENSSL_NO_NEXTPROTONEG")
673            ))]
674            next_protos_advertised_cb: *mut c_void,
675            #[cfg(all(
676                not(osslconf = "OPENSSL_NO_TLSEXT"),
677                not(osslconf = "OPENSSL_NO_NEXTPROTONEG")
678            ))]
679            next_protos_advertised_cb_arg: *mut c_void,
680            #[cfg(all(
681                not(osslconf = "OPENSSL_NO_TLSEXT"),
682                not(osslconf = "OPENSSL_NO_NEXTPROTONEG")
683            ))]
684            next_proto_select_cb: *mut c_void,
685            #[cfg(all(
686                not(osslconf = "OPENSSL_NO_TLSEXT"),
687                not(osslconf = "OPENSSL_NO_NEXTPROTONEG")
688            ))]
689            next_proto_select_cb_arg: *mut c_void,
690
691            #[cfg(not(osslconf = "OPENSSL_NO_TLSEXT"))]
692            srtp_profiles: *mut c_void,
693            #[cfg(all(not(osslconf = "OPENSSL_NO_TLSEXT"), ossl102))]
694            alpn_select_cb: *mut c_void,
695            #[cfg(all(not(osslconf = "OPENSSL_NO_TLSEXT"), ossl102))]
696            alpn_select_cb_arg: *mut c_void,
697            #[cfg(all(not(osslconf = "OPENSSL_NO_TLSEXT"), ossl102))]
698            alpn_client_proto_list: *mut c_void,
699            #[cfg(all(not(osslconf = "OPENSSL_NO_TLSEXT"), ossl102))]
700            alpn_client_proto_list_len: c_uint,
701
702            #[cfg(all(
703                not(osslconf = "OPENSSL_NO_TLSEXT"),
704                not(osslconf = "OPENSSL_NO_EC"),
705                ossl102
706            ))]
707            tlsext_ecpointformatlist_length: size_t,
708            #[cfg(all(
709                not(osslconf = "OPENSSL_NO_TLSEXT"),
710                not(osslconf = "OPENSSL_NO_EC"),
711                ossl102
712            ))]
713            tlsext_ecpointformatlist: *mut c_uchar,
714            #[cfg(all(
715                not(osslconf = "OPENSSL_NO_TLSEXT"),
716                not(osslconf = "OPENSSL_NO_EC"),
717                ossl102
718            ))]
719            tlsext_ellipticcurvelist_length: size_t,
720            #[cfg(all(
721                not(osslconf = "OPENSSL_NO_TLSEXT"),
722                not(osslconf = "OPENSSL_NO_EC"),
723                ossl102
724            ))]
725            tlsext_ellipticcurvelist: *mut c_uchar,
726        }
727
728        #[repr(C)]
729        #[cfg(not(osslconf = "OPENSSL_NO_SRP"))]
730        pub struct SRP_CTX {
731            SRP_cb_arg: *mut c_void,
732            TLS_ext_srp_username_callback: *mut c_void,
733            SRP_verify_param_callback: *mut c_void,
734            SRP_give_srp_client_pwd_callback: *mut c_void,
735            login: *mut c_void,
736            N: *mut c_void,
737            g: *mut c_void,
738            s: *mut c_void,
739            B: *mut c_void,
740            A: *mut c_void,
741            a: *mut c_void,
742            b: *mut c_void,
743            v: *mut c_void,
744            info: *mut c_void,
745            stringth: c_int,
746            srp_Mask: c_ulong,
747        }
748    }
749}
750cfg_if! {
751    if #[cfg(ossl320)] {
752        #[repr(C)]
753        pub struct SSL_CONN_CLOSE_INFO {
754            pub error_code: u64,
755            pub frame_type: u64,
756            pub reason: *const ::libc::c_char,
757            pub reason_len: usize,
758            pub flags: u32,
759        }
760        #[repr(C)]
761        pub struct SSL_SHUTDOWN_EX_ARGS {
762            pub quic_error_code: u64,
763            pub quic_reason: *const c_char,
764        }
765        #[repr(C)]
766        pub struct SSL_STREAM_RESET_ARGS {
767            pub quic_error_code: u64,
768        }
769    }
770}
771
772pub enum COMP_CTX {}
773
774cfg_if! {
775    if #[cfg(all(any(ossl110, libressl), not(osslconf = "OPENSSL_NO_COMP")))] {
776        pub enum COMP_METHOD {}
777    } else if #[cfg(not(osslconf = "OPENSSL_NO_COMP"))] {
778        #[repr(C)]
779        pub struct COMP_METHOD {
780            pub type_: c_int,
781            pub name: *const c_char,
782            init: Option<unsafe extern "C" fn(*mut COMP_CTX) -> c_int>,
783            finish: Option<unsafe extern "C" fn(*mut COMP_CTX)>,
784            compress: Option<
785                unsafe extern "C" fn(
786                    *mut COMP_CTX,
787                    *mut c_uchar,
788                    c_uint,
789                    *mut c_uchar,
790                    c_uint,
791                ) -> c_int,
792            >,
793            expand: Option<
794                unsafe extern "C" fn(
795                    *mut COMP_CTX,
796                    *mut c_uchar,
797                    c_uint,
798                    *mut c_uchar,
799                    c_uint,
800                ) -> c_int,
801            >,
802            ctrl: Option<unsafe extern "C" fn() -> c_long>,
803            callback_ctrl: Option<unsafe extern "C" fn() -> c_long>,
804        }
805    }
806}
807
808cfg_if! {
809    if #[cfg(any(ossl110, libressl))] {
810        pub enum CRYPTO_EX_DATA {}
811    } else {
812        #[repr(C)]
813        pub struct CRYPTO_EX_DATA {
814            pub sk: *mut stack_st_void,
815            pub dummy: c_int,
816        }
817    }
818}
819
820pub enum OCSP_RESPONSE {}
821
822#[cfg(ossl300)]
823pub enum OSSL_PROVIDER {}
824
825#[cfg(ossl300)]
826pub enum OSSL_LIB_CTX {}
827
828#[cfg(ossl300)]
829#[repr(C)]
830pub struct OSSL_PARAM {
831    key: *const c_char,
832    data_type: c_uint,
833    data: *mut c_void,
834    data_size: size_t,
835    return_size: size_t,
836}
837
838#[cfg(ossl300)]
839pub enum OSSL_PARAM_BLD {}
840
841#[cfg(ossl300)]
842pub enum EVP_KDF {}
843#[cfg(ossl300)]
844pub enum EVP_KDF_CTX {}
845
846#[cfg(ossl300)]
847pub enum OSSL_ENCODER_CTX {}
848#[cfg(ossl300)]
849pub enum OSSL_DECODER_CTX {}
850
851#[cfg(ossl300)]
852pub type OSSL_PASSPHRASE_CALLBACK = Option<
853    unsafe extern "C" fn(
854        pass: *mut c_char,
855        pass_size: size_t,
856        pass_len: *mut size_t,
857        params: *const OSSL_PARAM,
858        arg: *mut c_void,
859    ) -> c_int,
860>;
861
862#[cfg(ossl300)]
863pub enum EVP_MAC {}
864#[cfg(ossl300)]
865pub enum EVP_MAC_CTX {}