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 {} cfg_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 }
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 {}