msvcirt: Fix ostream_print_char on 0 character.
[wine.git] / libs / ldap / libldap / ldap-tls.h
blobef2a1d88060d5b0376740fd2bdbada995d28ccba
1 /* ldap-tls.h - TLS defines & prototypes internal to the LDAP library */
2 /* $OpenLDAP$ */
3 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
5 * Copyright 2008-2022 The OpenLDAP Foundation.
6 * All rights reserved.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted only as authorized by the OpenLDAP
10 * Public License.
12 * A copy of this license is available in the file LICENSE in the
13 * top-level directory of the distribution or, alternatively, at
14 * <http://www.OpenLDAP.org/license.html>.
17 #ifndef _LDAP_TLS_H
18 #define _LDAP_TLS_H 1
20 struct tls_impl;
22 struct tls_ctx;
23 struct tls_session;
25 typedef struct tls_ctx tls_ctx;
26 typedef struct tls_session tls_session;
28 typedef int (TI_tls_init)(void);
29 typedef void (TI_tls_destroy)(void);
31 typedef tls_ctx *(TI_ctx_new)(struct ldapoptions *lo);
32 typedef void (TI_ctx_ref)(tls_ctx *ctx);
33 typedef void (TI_ctx_free)(tls_ctx *ctx);
34 typedef int (TI_ctx_init)(struct ldapoptions *lo, struct ldaptls *lt, int is_server);
36 typedef tls_session *(TI_session_new)(tls_ctx *ctx, int is_server);
37 typedef int (TI_session_connect)(LDAP *ld, tls_session *s, const char *name_in);
38 typedef int (TI_session_accept)(tls_session *s);
39 typedef int (TI_session_upflags)(Sockbuf *sb, tls_session *s, int rc);
40 typedef char *(TI_session_errmsg)(tls_session *s, int rc, char *buf, size_t len );
41 typedef int (TI_session_dn)(tls_session *sess, struct berval *dn);
42 typedef int (TI_session_chkhost)(LDAP *ld, tls_session *s, const char *name_in);
43 typedef int (TI_session_strength)(tls_session *sess);
44 typedef int (TI_session_unique)(tls_session *sess, struct berval *buf, int is_server);
45 typedef int (TI_session_endpoint)(tls_session *sess, struct berval *buf, int is_server);
46 typedef const char *(TI_session_name)(tls_session *s);
47 typedef int (TI_session_peercert)(tls_session *s, struct berval *der);
48 typedef int (TI_session_pinning)(LDAP *ld, tls_session *s, char *hashalg, struct berval *hash);
50 typedef void (TI_thr_init)(void);
52 typedef struct tls_impl {
53 const char *ti_name;
55 TI_tls_init *ti_tls_init; /* library initialization */
56 TI_tls_destroy *ti_tls_destroy;
58 TI_ctx_new *ti_ctx_new;
59 TI_ctx_ref *ti_ctx_ref;
60 TI_ctx_free *ti_ctx_free;
61 TI_ctx_init *ti_ctx_init;
63 TI_session_new *ti_session_new;
64 TI_session_connect *ti_session_connect;
65 TI_session_accept *ti_session_accept;
66 TI_session_upflags *ti_session_upflags;
67 TI_session_errmsg *ti_session_errmsg;
68 TI_session_dn *ti_session_my_dn;
69 TI_session_dn *ti_session_peer_dn;
70 TI_session_chkhost *ti_session_chkhost;
71 TI_session_strength *ti_session_strength;
72 TI_session_unique *ti_session_unique;
73 TI_session_endpoint *ti_session_endpoint;
74 TI_session_name *ti_session_version;
75 TI_session_name *ti_session_cipher;
76 TI_session_peercert *ti_session_peercert;
77 TI_session_pinning *ti_session_pinning;
79 Sockbuf_IO *ti_sbio;
81 TI_thr_init *ti_thr_init;
83 int ti_inited;
84 } tls_impl;
86 extern tls_impl ldap_int_tls_impl;
88 #endif /* _LDAP_TLS_H */