1 -- Module Lightweight-Directory-Access-Protocol-V3 (RFC 2251:12/1997)
2 Lightweight-Directory-Access-Protocol-V3
4 -- This is based on the ASN.1 definitions in RFC 2251, with changes made
5 -- as necessary for Wireshark.
6 -- Copyright (C) The Internet Society (1997). This version of
7 -- this ASN.1 module is part of RFC 2251;
8 -- see the RFC itself for full legal notices.
10 DEFINITIONS IMPLICIT TAGS ::=
13 LDAPMessage ::= SEQUENCE {
15 protocolOp ProtocolOp,
16 controls [0] Controls OPTIONAL
19 MessageID ::= INTEGER(0..maxInt)
21 ProtocolOp ::= CHOICE {
22 bindRequest BindRequest,
23 bindResponse BindResponse,
24 unbindRequest UnbindRequest,
25 searchRequest SearchRequest,
26 searchResEntry SearchResultEntry,
27 searchResDone SearchResultDone,
28 searchResRef SearchResultReference,
29 modifyRequest ModifyRequest,
30 modifyResponse ModifyResponse,
31 addRequest AddRequest,
32 addResponse AddResponse,
33 delRequest DelRequest,
34 delResponse DelResponse,
35 modDNRequest ModifyDNRequest,
36 modDNResponse ModifyDNResponse,
37 compareRequest CompareRequest,
38 compareResponse CompareResponse,
39 abandonRequest AbandonRequest,
40 extendedReq ExtendedRequest,
41 extendedResp ExtendedResponse,
42 intermediateResponse IntermediateResponse
46 maxInt INTEGER ::= 2147483647 -- (2^^31 - 1)
48 LDAPString ::= OCTET STRING
50 LDAPOID ::= OCTET STRING
54 RelativeLDAPDN ::= LDAPString
56 AttributeType ::= LDAPString
58 AttributeDescription ::= LDAPString
60 AttributeDescriptionList ::= SEQUENCE OF AttributeDescription
62 AttributeValue ::= OCTET STRING
64 AttributeValueAssertion ::= SEQUENCE {
65 attributeDesc AttributeDescription,
66 assertionValue AssertionValue
69 AssertionValue ::= OCTET STRING
71 Attribute ::= SEQUENCE {type AttributeDescription,
72 vals SET OF AttributeValue
75 MatchingRuleId ::= LDAPString
77 LDAPResult ::= SEQUENCE {
79 ENUMERATED {success(0), operationsError(1), protocolError(2),
80 timeLimitExceeded(3), sizeLimitExceeded(4), compareFalse(5),
81 compareTrue(6), authMethodNotSupported(7),
82 strongAuthRequired(8),
84 referral(10),-- new-- adminLimitExceeded(11),-- new--
85 unavailableCriticalExtension(12),-- new--
86 confidentialityRequired(13),-- new--
87 saslBindInProgress(14),-- new-- noSuchAttribute(16),
88 undefinedAttributeType(17), inappropriateMatching(18),
89 constraintViolation(19), attributeOrValueExists(20),
90 invalidAttributeSyntax(21),
92 noSuchObject(32), aliasProblem(33),
94 -- 35 reserved for undefined isLeaf
95 aliasDereferencingProblem(36),
97 inappropriateAuthentication(48), invalidCredentials(49),
98 insufficientAccessRights(50), busy(51), unavailable(52),
99 unwillingToPerform(53),
102 namingViolation(64), objectClassViolation(65),
103 notAllowedOnNonLeaf(66), notAllowedOnRDN(67),
104 entryAlreadyExists(68),
105 objectClassModsProhibited(69),
106 -- 70 reserved for CLDAP
107 affectsMultipleDSAs(71),-- new--
110 canceled(118), noSuchOperation(119), tooLate(120), cannotCancel(121) -- RFC 3909
112 -- 81-90 reserved for APIs
114 errorMessage ErrorMessage,
115 referral [3] Referral OPTIONAL
118 Referral ::= SEQUENCE OF LDAPURL
120 LDAPURL ::= OCTET STRING -- LDAPString - - limited to characters permitted in URLs
122 Controls ::= SEQUENCE OF Control
124 Control ::= SEQUENCE {
125 controlType ControlType,
126 criticality BOOLEAN DEFAULT FALSE,
127 controlValue OCTET STRING OPTIONAL
130 ControlType ::= LDAPOID
132 BindRequest ::= [APPLICATION 0] SEQUENCE {
133 version INTEGER(1..127),
135 authentication AuthenticationChoice
138 AuthenticationChoice ::= CHOICE {
141 sasl [3] SaslCredentials,
142 -- 10,11 from bug 1148
143 ntlmsspNegotiate [10] IMPLICIT OCTET STRING,
144 ntlmsspAuth [11] IMPLICIT OCTET STRING
147 Simple ::= OCTET STRING
149 SaslCredentials ::= SEQUENCE {
151 credentials Credentials OPTIONAL
154 --4.1.2. String Types
156 -- The LDAPString is a notational convenience to indicate that, although
157 -- strings of LDAPString type encode as OCTET STRING types, the ISO
158 -- 10646 [13] character set (a superset of Unicode) is used, encoded
159 -- following the UTF-8 algorithm [14]. Note that in the UTF-8 algorithm
160 -- characters which are the same as ASCII (0x0000 through 0x007F) are
161 -- represented as that same ASCII character in a single byte. The other
162 -- byte values are used to form a variable-length encoding of an
163 -- arbitrary character.
165 -- Mechanism ::= LDAPString
166 Mechanism ::= OCTET STRING
168 Credentials ::= OCTET STRING
170 BindResponse ::= [APPLICATION 1] SEQUENCE {
171 -- COMPONENTS OF LDAPResult,
173 ENUMERATED {success(0), operationsError(1), protocolError(2),
174 timeLimitExceeded(3), sizeLimitExceeded(4), compareFalse(5),
175 compareTrue(6), authMethodNotSupported(7),
176 strongAuthRequired(8),
178 referral(10),-- new-- adminLimitExceeded(11),-- new--
179 unavailableCriticalExtension(12),-- new--
180 confidentialityRequired(13),-- new--
181 saslBindInProgress(14),-- new-- noSuchAttribute(16),
182 undefinedAttributeType(17), inappropriateMatching(18),
183 constraintViolation(19), attributeOrValueExists(20),
184 invalidAttributeSyntax(21),
186 noSuchObject(32), aliasProblem(33),
188 -- 35 reserved for undefined isLeaf
189 aliasDereferencingProblem(36),
191 inappropriateAuthentication(48), invalidCredentials(49),
192 insufficientAccessRights(50), busy(51), unavailable(52),
193 unwillingToPerform(53),
196 namingViolation(64), objectClassViolation(65),
197 notAllowedOnNonLeaf(66), notAllowedOnRDN(67),
198 entryAlreadyExists(68),
199 objectClassModsProhibited(69),
200 -- 70 reserved for CLDAP
201 affectsMultipleDSAs(71),-- new--
204 canceled(118), noSuchOperation(119), tooLate(120), cannotCancel(121) -- RFC 3909
206 -- 81-90 reserved for APIs
208 errorMessage ErrorMessage,
209 referral [3] Referral OPTIONAL,
212 serverSaslCreds [7] ServerSaslCreds OPTIONAL
215 ServerSaslCreds ::= OCTET STRING
217 ErrorMessage ::= LDAPString
219 UnbindRequest ::= [APPLICATION 2] NULL
221 SearchRequest ::= [APPLICATION 3] SEQUENCE {
223 scope ENUMERATED {baseObject(0), singleLevel(1), wholeSubtree(2)},
225 ENUMERATED {neverDerefAliases(0), derefInSearching(1),
226 derefFindingBaseObj(2), derefAlways(3)},
227 sizeLimit INTEGER(0..maxInt),
228 timeLimit INTEGER(0..maxInt),
231 attributes AttributeDescriptionList
235 and [0] SET OF Filter,
236 or [1] SET OF Filter,
238 equalityMatch [3] AttributeValueAssertion,
239 substrings [4] SubstringFilter,
240 greaterOrEqual [5] AttributeValueAssertion,
241 lessOrEqual [6] AttributeValueAssertion,
242 present [7] AttributeDescription,
243 approxMatch [8] AttributeValueAssertion,
244 extensibleMatch [9] MatchingRuleAssertion
247 SubstringFilter ::= SEQUENCE {
248 type AttributeDescription,
249 -- at least one must be present
252 CHOICE {initial [0] LDAPString,
254 final [2] LDAPString}
257 MatchingRuleAssertion ::= SEQUENCE {
258 matchingRule [1] MatchingRuleId OPTIONAL,
259 type [2] AttributeDescription OPTIONAL,
260 matchValue [3] AssertionValue,
261 dnAttributes [4] BOOLEAN DEFAULT FALSE
264 SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
266 attributes PartialAttributeList
269 PartialAttributeList ::=
270 SEQUENCE OF SEQUENCE {type AttributeDescription,
271 vals SET OF AttributeValue}
273 SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL
275 SearchResultDone ::= [APPLICATION 5] LDAPResult
277 ModifyRequest ::= [APPLICATION 6] SEQUENCE {
281 SEQUENCE {operation ENUMERATED {add(0), delete(1), replace(2), increment(3)},
282 modification AttributeTypeAndValues}
285 AttributeTypeAndValues ::= SEQUENCE {
286 type AttributeDescription,
287 vals SET OF AttributeValue
290 ModifyResponse ::= [APPLICATION 7] LDAPResult
292 AddRequest ::= [APPLICATION 8] SEQUENCE {
294 attributes AttributeList
298 SEQUENCE OF SEQUENCE {type AttributeDescription,
299 vals SET OF AttributeValue}
301 AddResponse ::= [APPLICATION 9] LDAPResult
303 DelRequest ::= [APPLICATION 10] LDAPDN
305 DelResponse ::= [APPLICATION 11] LDAPResult
307 ModifyDNRequest ::= [APPLICATION 12] SEQUENCE {
309 newrdn RelativeLDAPDN,
310 deleteoldrdn BOOLEAN,
311 newSuperior [0] LDAPDN OPTIONAL
314 ModifyDNResponse ::= [APPLICATION 13] LDAPResult
316 CompareRequest ::= [APPLICATION 14] SEQUENCE {
318 ava AttributeValueAssertion
321 CompareResponse ::= [APPLICATION 15] LDAPResult
323 AbandonRequest ::= [APPLICATION 16] MessageID
325 ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
326 requestName [0] LDAPOID,
327 requestValue [1] OCTET STRING OPTIONAL
330 ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
331 -- COMPONENTS OF LDAPResult,
333 ENUMERATED {success(0), operationsError(1), protocolError(2),
334 timeLimitExceeded(3), sizeLimitExceeded(4), compareFalse(5),
335 compareTrue(6), authMethodNotSupported(7),
336 strongAuthRequired(8),
338 referral(10),-- new-- adminLimitExceeded(11),-- new--
339 unavailableCriticalExtension(12),-- new--
340 confidentialityRequired(13),-- new--
341 saslBindInProgress(14),-- new-- noSuchAttribute(16),
342 undefinedAttributeType(17), inappropriateMatching(18),
343 constraintViolation(19), attributeOrValueExists(20),
344 invalidAttributeSyntax(21),
346 noSuchObject(32), aliasProblem(33),
348 -- 35 reserved for undefined isLeaf
349 aliasDereferencingProblem(36),
351 inappropriateAuthentication(48), invalidCredentials(49),
352 insufficientAccessRights(50), busy(51), unavailable(52),
353 unwillingToPerform(53),
356 namingViolation(64), objectClassViolation(65),
357 notAllowedOnNonLeaf(66), notAllowedOnRDN(67),
358 entryAlreadyExists(68),
359 objectClassModsProhibited(69),
360 -- 70 reserved for CLDAP
361 affectsMultipleDSAs(71),-- new--
364 canceled(118), noSuchOperation(119), tooLate(120), cannotCancel(121) -- RFC 3909
366 -- 81-90 reserved for APIs
368 errorMessage ErrorMessage,
369 referral [3] Referral OPTIONAL,
371 responseName [10] ResponseName OPTIONAL,
372 response [11] OCTET STRING OPTIONAL
375 IntermediateResponse ::= [APPLICATION 25] SEQUENCE {
376 responseName [0] ResponseName OPTIONAL,
377 responseValue [1] OCTET STRING OPTIONAL
380 ResponseName ::= LDAPOID
382 -- RFC 2696 - Simple Paged Results Manipulation
384 SearchControlValue ::= SEQUENCE {
385 size INTEGER --(0..maxInt)--,
386 -- requested page size from client
387 -- result set size estimate from server
391 -- RFC 2891 - Server Side Sorting of Search Results
393 SortKeyList ::= SEQUENCE OF SEQUENCE {
394 attributeType AttributeDescription,
395 orderingRule [0] MatchingRuleId OPTIONAL,
396 reverseOrder [1] BOOLEAN DEFAULT FALSE }
398 SortResult ::= SEQUENCE {
399 sortResult ENUMERATED {
400 success (0), -- results are sorted
401 operationsError (1), -- server internal failure
402 timeLimitExceeded (3), -- timelimit reached before
403 -- sorting was completed
404 strongAuthRequired (8), -- refused to return sorted
405 -- results via insecure
407 adminLimitExceeded (11), -- too many matching entries
408 -- for the server to sort
409 noSuchAttribute (16), -- unrecognized attribute
411 inappropriateMatching (18), -- unrecognized or
412 -- inappropriate matching
414 insufficientAccessRights (50), -- refused to return sorted
415 -- results to this client
416 busy (51), -- too busy to process
417 unwillingToPerform (53), -- unable to sort
420 attributeType [0] AttributeDescription OPTIONAL }
423 -- Draft RFC - but used in some implementations
424 -- Normaly it's an integer but we want to generate a subitem
425 DirSyncFlagsSubEntry ::= SEQUENCE {
429 DirSyncFlags ::= INTEGER
431 DirSyncControlValue ::= SEQUENCE {
439 --passwdModifyOID OBJECT IDENTIFIER ::= 1.3.6.1.4.1.4203.1.11.1
441 PasswdModifyRequestValue ::= SEQUENCE {
442 userIdentity [0] OCTET STRING OPTIONAL,
443 oldPasswd [1] OCTET STRING OPTIONAL,
444 newPasswd [2] OCTET STRING OPTIONAL
447 PasswdModifyResponseValue ::= SEQUENCE {
448 genPasswd [0] OCTET STRING OPTIONAL
453 --cancelRequestOID OBJECT IDENTIFIER ::= 1.3.6.1.1.8
455 CancelRequestValue ::= SEQUENCE {
461 --syncRequestOID OBJECT IDENTIFIER ::= 1.3.6.1.4.1.4203.1.9.1.1
463 SyncRequestValue ::= SEQUENCE {
468 refreshAndPersist (3)
470 cookie OCTET STRING OPTIONAL, -- SyncCookie OPTIONAL
471 reloadHint BOOLEAN DEFAULT FALSE
474 --syncStateOID OBJECT IDENTIFIER ::= 1.3.6.1.4.1.4203.1.9.1.2
476 SyncStateValue ::= SEQUENCE {
484 cookie OCTET STRING OPTIONAL -- SyncCookie OPTIONAL
487 --syncDoneOID OBJECT IDENTIFIER ::= 1.3.6.1.4.1.4203.1.9.1.3
489 SyncDoneValue ::= SEQUENCE {
490 cookie OCTET STRING OPTIONAL, -- SyncCookie OPTIONAL
491 refreshDeletes BOOLEAN DEFAULT FALSE
494 --syncInfoOID OBJECT IDENTIFIER ::= 1.3.6.1.4.1.4203.1.9.1.4
496 SyncInfoValue ::= CHOICE {
497 newcookie [0] OCTET STRING, -- SyncCookie
498 refreshDelete [1] SEQUENCE {
499 cookie OCTET STRING OPTIONAL, -- SyncCookie OPTIONAL
500 refreshDone BOOLEAN DEFAULT TRUE
502 refreshPresent [2] SEQUENCE {
503 cookie OCTET STRING OPTIONAL, -- SyncCookie OPTIONAL
504 refreshDone BOOLEAN DEFAULT TRUE
506 syncIdSet [3] SEQUENCE {
507 cookie OCTET STRING OPTIONAL, -- SyncCookie OPTIONAL
508 refreshDeletes BOOLEAN DEFAULT FALSE,
509 syncUUIDs SET OF SyncUUID
513 SyncUUID ::= OCTET STRING(SIZE(16))
515 -- SyncCookie ::= OCTET STRING
519 -- Draft RFC - Password Policy for LDAP Directories
520 -- https://opends.dev.java.net/public/standards/draft-behera-ldap-password-policy.txt
522 PasswordPolicyResponseValue ::= SEQUENCE {
524 timeBeforeExpiration [0] INTEGER (0 .. maxInt),
525 graceAuthNsRemaining [1] INTEGER (0 .. maxInt) } OPTIONAL,
526 error [1] ENUMERATED {
529 changeAfterReset (2),
530 passwordModNotAllowed (3),
531 mustSupplyOldPassword (4),
532 insufficientPasswordQuality (5),
533 passwordTooShort (6),
534 passwordTooYoung (7),
535 passwordInHistory (8) } OPTIONAL }
539 -- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D