Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / asn1 / ldap / Lightweight-Directory-Access-Protocol-V3.asn
blob4e847c80be1a6c3b4d45069e74fca4d41ba6869f
1 -- Module Lightweight-Directory-Access-Protocol-V3 (RFC 2251:12/1997)
2 Lightweight-Directory-Access-Protocol-V3
3 --
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.
9 --
10 DEFINITIONS IMPLICIT TAGS ::=
11 BEGIN
13 LDAPMessage ::= SEQUENCE {
14   messageID             MessageID,
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
43                         }
46 maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) 
48 LDAPString ::= OCTET STRING
50 LDAPOID ::= OCTET STRING
52 LDAPDN ::= LDAPString
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 {
78   resultCode
79     ENUMERATED {success(0), operationsError(1), protocolError(2),
80                 timeLimitExceeded(3), sizeLimitExceeded(4), compareFalse(5),
81                 compareTrue(6), authMethodNotSupported(7),
82                 strongAuthRequired(8),
83                 -- 9 reserved 
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),
91                 -- 22-31 unused 
92                 noSuchObject(32), aliasProblem(33),
93                 invalidDNSyntax(34),
94                 -- 35 reserved for undefined isLeaf 
95                 aliasDereferencingProblem(36),
96                 -- 37-47 unused 
97                 inappropriateAuthentication(48), invalidCredentials(49),
98                 insufficientAccessRights(50), busy(51), unavailable(52),
99                 unwillingToPerform(53),
100                 loopDetect(54),
101                 -- 55-63 unused 
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--
108                 -- 72-79 unused 
109                 other(80),
110                 canceled(118), noSuchOperation(119), tooLate(120), cannotCancel(121) -- RFC 3909
111                 },
112   -- 81-90 reserved for APIs 
113   matchedDN     LDAPDN,
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),
134   name            LDAPDN,
135   authentication  AuthenticationChoice
138 AuthenticationChoice ::= CHOICE {
139   simple  [0]  Simple,
140   -- 1 and 2 reserved
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 {
150   mechanism    Mechanism,
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,
172   resultCode
173     ENUMERATED {success(0), operationsError(1), protocolError(2),
174                 timeLimitExceeded(3), sizeLimitExceeded(4), compareFalse(5),
175                 compareTrue(6), authMethodNotSupported(7),
176                 strongAuthRequired(8),
177                 -- 9 reserved 
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),
185                 -- 22-31 unused 
186                 noSuchObject(32), aliasProblem(33),
187                 invalidDNSyntax(34),
188                 -- 35 reserved for undefined isLeaf 
189                 aliasDereferencingProblem(36),
190                 -- 37-47 unused 
191                 inappropriateAuthentication(48), invalidCredentials(49),
192                 insufficientAccessRights(50), busy(51), unavailable(52),
193                 unwillingToPerform(53),
194                 loopDetect(54),
195                 -- 55-63 unused 
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--
202                 -- 72-79 unused 
203                 other(80),
204                 canceled(118), noSuchOperation(119), tooLate(120), cannotCancel(121) -- RFC 3909
205                 },
206   -- 81-90 reserved for APIs 
207   matchedDN     LDAPDN,
208   errorMessage  ErrorMessage,
209   referral      [3]  Referral OPTIONAL,
211 -- end of components
212   serverSaslCreds  [7] ServerSaslCreds  OPTIONAL
215 ServerSaslCreds ::= OCTET STRING
217 ErrorMessage ::= LDAPString
219 UnbindRequest ::= [APPLICATION 2]  NULL
221 SearchRequest ::= [APPLICATION 3]  SEQUENCE {
222   baseObject    LDAPDN,
223   scope         ENUMERATED {baseObject(0), singleLevel(1), wholeSubtree(2)},
224   derefAliases
225     ENUMERATED {neverDerefAliases(0), derefInSearching(1),
226                 derefFindingBaseObj(2), derefAlways(3)},
227   sizeLimit     INTEGER(0..maxInt),
228   timeLimit     INTEGER(0..maxInt),
229   typesOnly     BOOLEAN,
230   filter        Filter,
231   attributes    AttributeDescriptionList
234 Filter ::= CHOICE {
235   and              [0]  SET OF Filter,
236   or               [1]  SET OF Filter,
237   not              [2]  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
250   substrings
251     SEQUENCE OF
252       CHOICE {initial  [0]  LDAPString,
253               any      [1]  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 {
265   objectName  LDAPDN,
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 {
278   object        LDAPDN,
279   modification
280     SEQUENCE OF
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 {
293   entry       LDAPDN,
294   attributes  AttributeList
297 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 {
308   entry         LDAPDN,
309   newrdn        RelativeLDAPDN,
310   deleteoldrdn  BOOLEAN,
311   newSuperior   [0]  LDAPDN OPTIONAL
314 ModifyDNResponse ::= [APPLICATION 13]  LDAPResult
316 CompareRequest ::= [APPLICATION 14]  SEQUENCE {
317   entry  LDAPDN,
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,
332   resultCode
333     ENUMERATED {success(0), operationsError(1), protocolError(2),
334                 timeLimitExceeded(3), sizeLimitExceeded(4), compareFalse(5),
335                 compareTrue(6), authMethodNotSupported(7),
336                 strongAuthRequired(8),
337                 -- 9 reserved 
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),
345                 -- 22-31 unused 
346                 noSuchObject(32), aliasProblem(33),
347                 invalidDNSyntax(34),
348                 -- 35 reserved for undefined isLeaf 
349                 aliasDereferencingProblem(36),
350                 -- 37-47 unused 
351                 inappropriateAuthentication(48), invalidCredentials(49),
352                 insufficientAccessRights(50), busy(51), unavailable(52),
353                 unwillingToPerform(53),
354                 loopDetect(54),
355                 -- 55-63 unused 
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--
362                 -- 72-79 unused 
363                 other(80),
364                 canceled(118), noSuchOperation(119), tooLate(120), cannotCancel(121) -- RFC 3909
365                 },
366   -- 81-90 reserved for APIs 
367   matchedDN     LDAPDN,
368   errorMessage  ErrorMessage,
369   referral      [3]  Referral OPTIONAL,
370 -- end of COMPONENTS
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
388   cookie OCTET STRING
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
406     -- protocol
407     adminLimitExceeded       (11), -- too many matching entries
408     -- for the server to sort
409     noSuchAttribute          (16), -- unrecognized attribute
410     -- type in sort key
411     inappropriateMatching    (18), -- unrecognized or
412     -- inappropriate matching
413     -- rule in sort key
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
418     other                    (80)
419   },
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 {
426   value [0] INTEGER
429 DirSyncFlags ::= INTEGER
431 DirSyncControlValue ::= SEQUENCE {
432   flags  DirSyncFlags,
433   maxBytes      INTEGER,
434   cookie                OCTET STRING
437 -- RFC 3062
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 
451 -- RFC 3909
453 --cancelRequestOID OBJECT IDENTIFIER ::= 1.3.6.1.1.8
455 CancelRequestValue ::= SEQUENCE {
456   cancelID        MessageID
459 -- RFC 4533
461 --syncRequestOID OBJECT IDENTIFIER ::= 1.3.6.1.4.1.4203.1.9.1.1
463 SyncRequestValue ::= SEQUENCE {
464   mode ENUMERATED {
465     -- 0 unused
466     refreshOnly       (1),
467     -- 2 reserved
468     refreshAndPersist (3)
469   },
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 {
477   state ENUMERATED {
478     present (0),
479     add (1),
480     modify (2),
481     delete (3)
482   },
483   entryUUID SyncUUID,
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
501   },
502   refreshPresent [2] SEQUENCE {
503     cookie         OCTET STRING OPTIONAL, -- SyncCookie OPTIONAL
504     refreshDone    BOOLEAN DEFAULT TRUE
505   },
506   syncIdSet      [3] SEQUENCE {
507     cookie         OCTET STRING OPTIONAL, -- SyncCookie OPTIONAL
508     refreshDeletes BOOLEAN DEFAULT FALSE,
509     syncUUIDs      SET OF SyncUUID
510   }
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 {
523       warning [0] CHOICE {
524          timeBeforeExpiration [0] INTEGER (0 .. maxInt),
525          graceAuthNsRemaining [1] INTEGER (0 .. maxInt) } OPTIONAL,
526       error   [1] ENUMERATED {
527          passwordExpired             (0),
528          accountLocked               (1),
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