1 /* ldap-tls.h - TLS defines & prototypes internal to the LDAP library */
3 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
5 * Copyright 2008-2022 The OpenLDAP Foundation.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted only as authorized by the OpenLDAP
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>.
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
{
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
;
81 TI_thr_init
*ti_thr_init
;
86 extern tls_impl ldap_int_tls_impl
;
88 #endif /* _LDAP_TLS_H */