OLD | NEW |
| (Empty) |
1 /* This Source Code Form is subject to the terms of the Mozilla Public | |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this | |
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
4 | |
5 #ifndef _LDAP_H_ | |
6 #define _LDAP_H_ | |
7 | |
8 #include "certt.h" | |
9 #include "pkixt.h" | |
10 | |
11 #ifdef __cplusplus | |
12 extern "C" { | |
13 #endif | |
14 | |
15 extern const SEC_ASN1Template PKIX_PL_LDAPCrossCertPairTemplate[]; | |
16 SEC_ASN1_CHOOSER_DECLARE(PKIX_PL_LDAPCrossCertPairTemplate) | |
17 extern const SEC_ASN1Template PKIX_PL_LDAPMessageTemplate[]; | |
18 SEC_ASN1_CHOOSER_DECLARE(PKIX_PL_LDAPMessageTemplate) | |
19 extern const SEC_ASN1Template LDAPFilterTemplate[]; | |
20 SEC_ASN1_CHOOSER_DECLARE(LDAPFilterTemplate) | |
21 | |
22 /* ********************************************************************** */ | |
23 | |
24 #define SEC_ASN1_LDAP_STRING SEC_ASN1_OCTET_STRING | |
25 | |
26 #define LDAPATTR_CACERT (1<<0) | |
27 #define LDAPATTR_USERCERT (1<<1) | |
28 #define LDAPATTR_CROSSPAIRCERT (1<<2) | |
29 #define LDAPATTR_CERTREVLIST (1<<3) | |
30 #define LDAPATTR_AUTHREVLIST (1<<4) | |
31 #define MAX_LDAPATTRS 5 | |
32 typedef PKIX_UInt32 LdapAttrMask; | |
33 | |
34 typedef enum { | |
35 SIMPLE_AUTH = 0, | |
36 KRBV42LDAP_AUTH = 1, | |
37 KRBV42DSA_AUTH = 2 | |
38 } AuthType; | |
39 | |
40 typedef enum { | |
41 BASE_OBJECT = 0, | |
42 SINGLE_LEVEL = 1, | |
43 WHOLE_SUBTREE = 2 | |
44 } ScopeType; | |
45 | |
46 typedef enum { | |
47 NEVER_DEREF = 0, | |
48 DEREF_IN_SEARCHING = 1, | |
49 DEREF_FINDING_BASEOBJ = 2, | |
50 ALWAYS_DEREF = 3 | |
51 } DerefType; | |
52 | |
53 typedef enum { | |
54 LDAP_INITIALSUBSTRING_TYPE = 0, | |
55 LDAP_ANYSUBSTRING_TYPE = 1, | |
56 LDAP_FINALSUBSTRING_TYPE = 2 | |
57 } LDAPSubstringFilterType; | |
58 | |
59 typedef enum { | |
60 LDAP_ANDFILTER_TYPE = 0, | |
61 LDAP_ORFILTER_TYPE = 1, | |
62 LDAP_NOTFILTER_TYPE = 2, | |
63 LDAP_EQUALFILTER_TYPE = 3, | |
64 LDAP_SUBSTRINGFILTER_TYPE = 4, | |
65 LDAP_GREATEROREQUALFILTER_TYPE = 5, | |
66 LDAP_LESSOREQUALFILTER_TYPE = 6, | |
67 LDAP_PRESENTFILTER_TYPE = 7, | |
68 LDAP_APPROXMATCHFILTER_TYPE = 8 | |
69 } LDAPFilterType; | |
70 | |
71 typedef enum { | |
72 LDAP_BIND_TYPE = 0, | |
73 LDAP_BINDRESPONSE_TYPE = 1, | |
74 LDAP_UNBIND_TYPE = 2, | |
75 LDAP_SEARCH_TYPE = 3, | |
76 LDAP_SEARCHRESPONSEENTRY_TYPE = 4, | |
77 LDAP_SEARCHRESPONSERESULT_TYPE = 5, | |
78 LDAP_ABANDONREQUEST_TYPE = 16 | |
79 } LDAPMessageType; | |
80 | |
81 typedef enum { | |
82 SUCCESS = 0, | |
83 OPERATIONSERROR = 1, | |
84 PROTOCOLERROR = 2, | |
85 TIMELIMITEXCEEDED = 3, | |
86 SIZELIMITEXCEEDED = 4, | |
87 COMPAREFALSE = 5, | |
88 COMPARETRUE = 6, | |
89 AUTHMETHODNOTSUPPORTED = 7, | |
90 STRONGAUTHREQUIRED = 8, | |
91 NOSUCHATTRIBUTE = 16, | |
92 UNDEFINEDATTRIBUTETYPE = 17, | |
93 INAPPROPRIATEMATCHING = 18, | |
94 CONSTRAINTVIOLATION = 19, | |
95 ATTRIBUTEORVALUEEXISTS = 20, | |
96 INVALIDATTRIBUTESYNTAX = 21, | |
97 NOSUCHOBJECT = 32, | |
98 ALIASPROBLEM = 33, | |
99 INVALIDDNSYNTAX = 34, | |
100 ISLEAF = 35, | |
101 ALIASDEREFERENCINGPROBLEM = 36, | |
102 INAPPROPRIATEAUTHENTICATION = 48, | |
103 INVALIDCREDENTIALS = 49, | |
104 INSUFFICIENTACCESSRIGHTS = 50, | |
105 BUSY = 51, | |
106 UNAVAILABLE = 52, | |
107 UNWILLINGTOPERFORM = 53, | |
108 LOOPDETECT = 54, | |
109 NAMINGVIOLATION = 64, | |
110 OBJECTCLASSVIOLATION = 65, | |
111 NOTALLOWEDONNONLEAF = 66, | |
112 NOTALLOWEDONRDN = 67, | |
113 ENTRYALREADYEXISTS = 68, | |
114 OBJECTCLASSMODSPROHIBITED = 69, | |
115 OTHER = 80 | |
116 } LDAPResultCode; | |
117 | |
118 typedef struct LDAPLocationStruct LDAPLocation; | |
119 typedef struct LDAPCertPairStruct LDAPCertPair; | |
120 typedef struct LDAPSimpleBindStruct LDAPSimpleBind; | |
121 typedef struct LDAPBindAPIStruct LDAPBindAPI; | |
122 typedef struct LDAPBindStruct LDAPBind; | |
123 typedef struct LDAPResultStruct LDAPBindResponse; | |
124 typedef struct LDAPResultStruct LDAPResult; | |
125 typedef struct LDAPSearchResponseAttrStruct LDAPSearchResponseAttr; | |
126 typedef struct LDAPSearchResponseEntryStruct LDAPSearchResponseEntry; | |
127 typedef struct LDAPResultStruct LDAPSearchResponseResult; | |
128 typedef struct LDAPUnbindStruct LDAPUnbind; | |
129 typedef struct LDAPFilterStruct LDAPFilter; | |
130 typedef struct LDAPAndFilterStruct LDAPAndFilter; | |
131 typedef struct LDAPNotFilterStruct LDAPNotFilter; | |
132 typedef struct LDAPSubstringStruct LDAPSubstring; | |
133 typedef struct LDAPSubstringFilterStruct LDAPSubstringFilter; | |
134 typedef struct LDAPPresentFilterStruct LDAPPresentFilter; | |
135 typedef struct LDAPAttributeValueAssertionStruct LDAPAttributeValueAssertion; | |
136 typedef struct LDAPNameComponentStruct LDAPNameComponent; | |
137 typedef struct LDAPRequestParamsStruct LDAPRequestParams; | |
138 typedef struct LDAPSearchStruct LDAPSearch; | |
139 typedef struct LDAPAbandonRequestStruct LDAPAbandonRequest; | |
140 typedef struct protocolOpStruct LDAPProtocolOp; | |
141 typedef struct LDAPMessageStruct LDAPMessage; | |
142 typedef LDAPAndFilter LDAPOrFilter; | |
143 typedef LDAPAttributeValueAssertion LDAPEqualFilter; | |
144 typedef LDAPAttributeValueAssertion LDAPGreaterOrEqualFilter; | |
145 typedef LDAPAttributeValueAssertion LDAPLessOrEqualFilter; | |
146 typedef LDAPAttributeValueAssertion LDAPApproxMatchFilter; | |
147 | |
148 struct LDAPLocationStruct { | |
149 PLArenaPool *arena; | |
150 void *serverSite; | |
151 void **filterString; | |
152 void **attrBitString; | |
153 }; | |
154 | |
155 struct LDAPCertPairStruct { | |
156 SECItem forward; | |
157 SECItem reverse; | |
158 }; | |
159 | |
160 struct LDAPSimpleBindStruct { | |
161 char *bindName; | |
162 char *authentication; | |
163 }; | |
164 | |
165 struct LDAPBindAPIStruct { | |
166 AuthType selector; | |
167 union { | |
168 LDAPSimpleBind simple; | |
169 } chooser; | |
170 }; | |
171 | |
172 struct LDAPBindStruct { | |
173 SECItem version; | |
174 SECItem bindName; | |
175 SECItem authentication; | |
176 }; | |
177 | |
178 struct LDAPResultStruct { | |
179 SECItem resultCode; | |
180 SECItem matchedDN; | |
181 SECItem errorMessage; | |
182 }; | |
183 | |
184 struct LDAPSearchResponseAttrStruct { | |
185 SECItem attrType; | |
186 SECItem **val; | |
187 }; | |
188 | |
189 struct LDAPSearchResponseEntryStruct { | |
190 SECItem objectName; | |
191 LDAPSearchResponseAttr **attributes; | |
192 }; | |
193 | |
194 struct LDAPUnbindStruct { | |
195 SECItem dummy; | |
196 }; | |
197 | |
198 struct LDAPAndFilterStruct { | |
199 LDAPFilter **filters; | |
200 }; | |
201 | |
202 struct LDAPNotFilterStruct { | |
203 LDAPFilter *filter; | |
204 }; | |
205 | |
206 struct LDAPSubstringStruct { | |
207 LDAPSubstringFilterType selector; | |
208 SECItem item; | |
209 }; | |
210 | |
211 struct LDAPSubstringFilterStruct { | |
212 SECItem attrType; | |
213 LDAPSubstring *strings; | |
214 }; | |
215 | |
216 struct LDAPPresentFilterStruct { | |
217 SECItem attrType; | |
218 }; | |
219 | |
220 struct LDAPAttributeValueAssertionStruct { | |
221 SECItem attrType; | |
222 SECItem attrValue; | |
223 }; | |
224 | |
225 struct LDAPFilterStruct { | |
226 LDAPFilterType selector; | |
227 union { | |
228 LDAPAndFilter andFilter; | |
229 LDAPOrFilter orFilter; | |
230 LDAPNotFilter notFilter; | |
231 LDAPEqualFilter equalFilter; | |
232 LDAPSubstringFilter substringFilter; | |
233 LDAPGreaterOrEqualFilter greaterOrEqualFilter; | |
234 LDAPLessOrEqualFilter lessOrEqualFilter; | |
235 LDAPPresentFilter presentFilter; | |
236 LDAPApproxMatchFilter approxMatchFilter; | |
237 } filter; | |
238 }; | |
239 | |
240 struct LDAPNameComponentStruct { | |
241 unsigned char *attrType; | |
242 unsigned char *attrValue; | |
243 }; | |
244 | |
245 struct LDAPRequestParamsStruct { | |
246 char *baseObject; /* e.g. "c=US" */ | |
247 ScopeType scope; | |
248 DerefType derefAliases; | |
249 PKIX_UInt32 sizeLimit; /* 0 = no limit */ | |
250 PRIntervalTime timeLimit; /* 0 = no limit */ | |
251 LDAPNameComponent **nc; /* e.g. {{"cn","xxx"},{"o","yyy"},NULL} */ | |
252 LdapAttrMask attributes; | |
253 }; | |
254 | |
255 struct LDAPSearchStruct { | |
256 SECItem baseObject; | |
257 SECItem scope; | |
258 SECItem derefAliases; | |
259 SECItem sizeLimit; | |
260 SECItem timeLimit; | |
261 SECItem attrsOnly; | |
262 LDAPFilter filter; | |
263 SECItem **attributes; | |
264 }; | |
265 | |
266 struct LDAPAbandonRequestStruct { | |
267 SECItem messageID; | |
268 }; | |
269 | |
270 struct protocolOpStruct { | |
271 LDAPMessageType selector; | |
272 union { | |
273 LDAPBind bindMsg; | |
274 LDAPBindResponse bindResponseMsg; | |
275 LDAPUnbind unbindMsg; | |
276 LDAPSearch searchMsg; | |
277 LDAPSearchResponseEntry searchResponseEntryMsg; | |
278 LDAPSearchResponseResult searchResponseResultMsg; | |
279 LDAPAbandonRequest abandonRequestMsg; | |
280 } op; | |
281 }; | |
282 | |
283 struct LDAPMessageStruct { | |
284 SECItem messageID; | |
285 LDAPProtocolOp protocolOp; | |
286 }; | |
287 | |
288 typedef struct PKIX_PL_LdapClientStruct PKIX_PL_LdapClient; | |
289 | |
290 typedef PKIX_Error * | |
291 (*PKIX_PL_LdapClient_InitiateFcn)( | |
292 PKIX_PL_LdapClient *client, | |
293 LDAPRequestParams *requestParams, | |
294 void **pNBIO, | |
295 PKIX_List **pResponse, | |
296 void *plContext); | |
297 | |
298 typedef PKIX_Error * | |
299 (*PKIX_PL_LdapClient_ResumeFcn)( | |
300 PKIX_PL_LdapClient *client, | |
301 void **pNBIO, | |
302 PKIX_List **pResponse, | |
303 void *plContext); | |
304 | |
305 struct PKIX_PL_LdapClientStruct { | |
306 PKIX_PL_LdapClient_InitiateFcn initiateFcn; | |
307 PKIX_PL_LdapClient_ResumeFcn resumeFcn; | |
308 }; | |
309 | |
310 #ifdef __cplusplus | |
311 } | |
312 #endif | |
313 | |
314 #endif | |
OLD | NEW |