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