Operational Attributes and Syntaxes
authorgal <gal@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 30 Apr 2006 12:53:26 +0000 (12:53 +0000)
committergal <gal@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 30 Apr 2006 12:53:26 +0000 (12:53 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@18048 f5534014-38df-0310-8fa8-9805f1628bb7

13 files changed:
asn1/dap/dap-exp.cnf
asn1/dap/dap.cnf
asn1/dop/dop.asn
asn1/dop/dop.cnf
asn1/dop/packet-dop-template.c
asn1/x509if/x509if.cnf
asn1/x509sat/x509sat.cnf
epan/dissectors/packet-dap.c
epan/dissectors/packet-dap.h
epan/dissectors/packet-dop.c
epan/dissectors/packet-dop.h
epan/dissectors/packet-x509if.c
epan/dissectors/packet-x509sat.c

index 60efa31464f6c717b70511e96f3d1901771f58b5..185cd1f698bf10b5ece5123d1b38e599c69c73ad 100644 (file)
@@ -1,6 +1,7 @@
 #.IMPORT_TAG
 CommonResults            BER_CLASS_UNI BER_UNI_TAG_SET
 ContextSelection         BER_CLASS_ANY/*choice*/ -1/*choice*/
+Filter                   BER_CLASS_ANY/*choice*/ -1/*choice*/
 SecurityParameters       BER_CLASS_UNI BER_UNI_TAG_SET
 DirectoryBindArgument    BER_CLASS_UNI BER_UNI_TAG_SET
 DirectoryBindError       BER_CLASS_ANY/*choice*/ -1/*choice*/
@@ -36,6 +37,7 @@ UpdateError              BER_CLASS_ANY/*choice*/ -1/*choice*/
 #.TYPE_ATTR
 CommonResults            TYPE = FT_NONE    DISPLAY = BASE_NONE  STRINGS = NULL  BITMASK = 0
 ContextSelection         TYPE = FT_UINT32  DISPLAY = BASE_DEC   STRINGS = VALS(dap_ContextSelection_vals)  BITMASK = 0
+Filter                   TYPE = FT_UINT32  DISPLAY = BASE_DEC   STRINGS = VALS(dap_Filter_vals)  BITMASK = 0
 SecurityParameters       TYPE = FT_NONE    DISPLAY = BASE_NONE  STRINGS = NULL  BITMASK = 0
 DirectoryBindArgument    TYPE = FT_NONE    DISPLAY = BASE_NONE  STRINGS = NULL  BITMASK = 0
 DirectoryBindError       TYPE = FT_UINT32  DISPLAY = BASE_DEC   STRINGS = VALS(dap_DirectoryBindError_vals)  BITMASK = 0
index a44d0289d5712c2339302c3ff185dbec6698f35b..3c82a0a64bf946d87630d95e7ca681f8a8d2d4b5 100644 (file)
@@ -26,6 +26,7 @@ DirectoryShadowAbstractService        disp
 #.INCLUDE      ../acse/acse-exp.cnf
 
 #.EXPORTS
+Filter
 CommonResults
 Referral
 SecurityParameters
@@ -176,19 +177,21 @@ ModifyRights/_item/item/value                     value-assertion
 
        %(DEFAULT_BODY)s
 
-       len = tvb_length(out_tvb);
-       /* now see if we can add a string representation */
-       for(i=0; i<len; i++)
-               if(!g_ascii_isprint(tvb_get_guint8(out_tvb, i)))
-                       break;
+       if(out_tvb) {
+               len = tvb_length(out_tvb);
+               /* now see if we can add a string representation */
+               for(i=0; i<len; i++)
+                       if(!g_ascii_isprint(tvb_get_guint8(out_tvb, i)))
+                               break;
        
-       if(i == len) {
-               if((oct_item = get_ber_last_created_item())) {
-
-                       proto_item_append_text(oct_item," (");
-                       for(i=0; i<len; i++)
-                               proto_item_append_text(oct_item,"%%c",tvb_get_guint8(out_tvb,i));
-                       proto_item_append_text(oct_item,")");
+               if(i == len) {
+                       if((oct_item = get_ber_last_created_item())) {
+
+                               proto_item_append_text(oct_item," (");
+                               for(i=0; i<len; i++)
+                                       proto_item_append_text(oct_item,"%%c",tvb_get_guint8(out_tvb,i));
+                               proto_item_append_text(oct_item,")");
+                       }
                }
        }
        
index 626997c7c6de209044b38aff3dd9e18cba6d0eaf..8c0cfc8583f7f686aaeafeb912d31d34519e88b0 100644 (file)
@@ -15,7 +15,7 @@ IMPORTS
     FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
       usefulDefinitions(0) 4}
   ATTRIBUTE, MATCHING-RULE, Name, Attribute, DistinguishedName,
-  RelativeDistinguishedName
+  RelativeDistinguishedName, Refinement, SubtreeSpecification, AttributeType, ContextAssertion
     FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
       informationFramework(1) 4}
 --  OperationalBindingID
@@ -26,7 +26,7 @@ IMPORTS
     FROM DistributedOperations {joint-iso-itu-t ds(5) module(1)
       distributedOperations(3) 4}
   -- from ITU-T Rec. X.520 | ISO/IEC 9594-6
-  bitStringMatch
+  DirectoryString, NameAndOptionalUID,  bitStringMatch
     FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
       selectedAttributeTypes(5) 4}
   PresentationAddress, ProtocolInformation
@@ -38,11 +38,15 @@ IMPORTS
   -- from ITU-T Rec. X.509 | ISO/IEC 9594-8
   AlgorithmIdentifier
     FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
-      authenticationFramework(7) 4};
-
-
-
-
+      authenticationFramework(7) 4}
+  AttributeTypeAndValue
+    FROM BasicAccessControl {joint-iso-itu-t ds(5) module(1)
+      basicAccessControl(24) 4}
+  Filter
+    FROM DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
+      directoryAbstractService(2) 4}
+  EXTERNAL 
+    FROM ACSE-1 {joint-iso-itu-t association-control(2) modules(0) acse1(1) version1(1)};
 
 -- data types 
 DSEType ::= BIT STRING {
@@ -677,7 +681,200 @@ NHOBSubordinateToSuperior ::= SEQUENCE {
 --  ID                    id-op-binding-non-specific-hierarchical
 --}
 
-END -- HierarchicalOperationalBindings
+--END - - HierarchicalOperationalBindings
+
+-- Module BasicAccessControl (X.501:02/2001)
+--BasicAccessControl {joint-iso-itu-t ds(5) module(1) basicAccessControl(24) 4}
+--DEFINITIONS ::=
+--BEGIN
+
+-- EXPORTS All 
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained 
+-- within the Directory Specifications, and for the use of other applications which will use them to access 
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+--IMPORTS
+  -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
+--  directoryAbstractService, id-aca, id-acScheme, informationFramework,
+--    selectedAttributeTypes, upperBounds
+--    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+--      usefulDefinitions(0) 4}
+--  ATTRIBUTE, AttributeType, ContextAssertion, DistinguishedName, MATCHING-RULE,
+--    objectIdentifierMatch, Refinement, SubtreeSpecification,
+--    SupportedAttributes
+--    FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+--      informationFramework(1) 4}
+  -- from ITU-T Rec. X.511 | ISO/IEC 9594-3
+--  Filter
+--    FROM DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
+--      directoryAbstractService(2) 4}
+  -- from ITU-T Rec. X.520 | ISO/IEC 9594-6
+--  DirectoryString{}, directoryStringFirstComponentMatch, NameAndOptionalUID,
+--    UniqueIdentifier
+--    FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
+--      selectedAttributeTypes(5) 4}
+--  ub-tag
+--    FROM UpperBounds {joint-iso-itu-t ds(5) module(1) upperBounds(10) 4};
+
+-- types 
+ACIItem ::= SEQUENCE {
+  identificationTag   DirectoryString --{ub-tag}--, 
+  precedence           Precedence,
+  authenticationLevel  AuthenticationLevel,
+  itemOrUserFirst
+    CHOICE {itemFirst
+              [0]  SEQUENCE {protectedItems   ProtectedItems,
+                             itemPermissions  SET OF ItemPermission},
+            userFirst
+              [1]  SEQUENCE {userClasses      UserClasses,
+                             userPermissions  SET OF UserPermission}}
+}
+
+Precedence ::= INTEGER --(0..255)--
+
+ProtectedItems ::= SEQUENCE {
+  entry                           [0]  NULL OPTIONAL,
+  allUserAttributeTypes           [1]  NULL OPTIONAL,
+  attributeType
+    [2]  SET --SIZE (1..MAX)-- OF AttributeType OPTIONAL,
+  allAttributeValues
+    [3]  SET --SIZE (1..MAX)-- OF AttributeType OPTIONAL,
+  allUserAttributeTypesAndValues  [4]  NULL OPTIONAL,
+  attributeValue
+    [5]  SET --SIZE (1..MAX)-- OF AttributeTypeAndValue OPTIONAL,
+  selfValue
+    [6]  SET --SIZE (1..MAX)-- OF AttributeType OPTIONAL,
+  rangeOfValues                   [7]  Filter OPTIONAL,
+  maxValueCount
+    [8]  SET --SIZE (1..MAX)-- OF MaxValueCount OPTIONAL,
+  maxImmSub                       [9]  INTEGER OPTIONAL,
+  restrictedBy
+    [10]  SET --SIZE (1..MAX)-- OF RestrictedValue OPTIONAL,
+  contexts
+    [11]  SET --SIZE (1..MAX)-- OF ContextAssertion OPTIONAL,
+  classes                         [12]  Refinement OPTIONAL
+}
+
+MaxValueCount ::= SEQUENCE {type      AttributeType,
+                            maxCount  INTEGER
+}
+
+RestrictedValue ::= SEQUENCE {type      AttributeType,
+                              valuesIn  AttributeType
+}
+
+UserClasses ::= SEQUENCE {
+  allUsers   [0]  NULL OPTIONAL,
+  thisEntry  [1]  NULL OPTIONAL,
+  name       [2]  SET --SIZE (1..MAX)-- OF NameAndOptionalUID OPTIONAL,
+  userGroup  [3]  SET --SIZE (1..MAX)-- OF NameAndOptionalUID OPTIONAL,
+  -- dn component shall be the name of an
+  -- entry of GroupOfUniqueNames 
+  subtree    [4]  SET --SIZE (1..MAX)-- OF SubtreeSpecification OPTIONAL
+}
+
+ItemPermission ::= SEQUENCE {
+  precedence        Precedence OPTIONAL,
+  -- defaults to precedence in ACIItem
+  userClasses       UserClasses,
+  grantsAndDenials  GrantsAndDenials
+}
+
+UserPermission ::= SEQUENCE {
+  precedence        Precedence OPTIONAL,
+  -- defaults to precedence in ACIItem
+  protectedItems    ProtectedItems,
+  grantsAndDenials  GrantsAndDenials
+}
+
+AuthenticationLevel ::= CHOICE {
+  basicLevels
+    SEQUENCE {level           ENUMERATED {none(0), simple(1), strong(2)},
+              localQualifier  INTEGER OPTIONAL,
+              signed          BOOLEAN DEFAULT FALSE},
+  other        EXTERNAL
+}
+
+GrantsAndDenials ::= BIT STRING {
+  -- permissions that may be used in conjunction
+  -- with any component of ProtectedItems 
+  grantAdd(0), denyAdd(1), grantDiscloseOnError(2), denyDiscloseOnError(3),
+  grantRead(4), denyRead(5), grantRemove(6),
+  denyRemove(7),
+  -- permissions that may be used only in conjunction
+  -- with the entry component
+  grantBrowse(8), denyBrowse(9), grantExport(10), denyExport(11),
+  grantImport(12), denyImport(13), grantModify(14), denyModify(15),
+  grantRename(16), denyRename(17), grantReturnDN(18),
+  denyReturnDN(19),
+  -- permissions that may be used in conjunction
+  -- with any component, except entry, of ProtectedItems
+  grantCompare(20), denyCompare(21), grantFilterMatch(22), denyFilterMatch(23),
+  grantInvoke(24), denyInvoke(25)}
+
+--AttributeTypeAndValue ::= SEQUENCE {
+--  type   ATTRIBUTE.&id({SupportedAttributes}),
+--  value  ATTRIBUTE.&Type({SupportedAttributes}{@type})
+--}
+
+-- attributes 
+--accessControlScheme ATTRIBUTE ::= {
+--  WITH SYNTAX             OBJECT IDENTIFIER
+--  EQUALITY MATCHING RULE  objectIdentifierMatch
+--  SINGLE VALUE            TRUE
+--  USAGE                   directoryOperation
+--  ID                      id-aca-accessControlScheme
+--}
+
+--prescriptiveACI ATTRIBUTE ::= {
+--  WITH SYNTAX             ACIItem
+--  EQUALITY MATCHING RULE  directoryStringFirstComponentMatch
+--  USAGE                   directoryOperation
+--  ID                      id-aca-prescriptiveACI
+--}
+
+--entryACI ATTRIBUTE ::= {
+--  WITH SYNTAX             ACIItem
+--  EQUALITY MATCHING RULE  directoryStringFirstComponentMatch
+--  USAGE                   directoryOperation
+--  ID                      id-aca-entryACI
+--}
+
+--subentryACI ATTRIBUTE ::= {
+--  WITH SYNTAX             ACIItem
+--  EQUALITY MATCHING RULE  directoryStringFirstComponentMatch
+--  USAGE                   directoryOperation
+--  ID                      id-aca-subentryACI
+--}
+
+-- object identifier assignments 
+-- attributes 
+--id-aca-accessControlScheme OBJECT IDENTIFIER ::=
+--  {id-aca 1}
+
+--id-aca-prescriptiveACI OBJECT IDENTIFIER ::= {id-aca 4}
+
+--id-aca-entryACI OBJECT IDENTIFIER ::= {id-aca 5}
+
+--id-aca-subentryACI OBJECT IDENTIFIER ::= {id-aca 6}
+
+-- access control schemes -
+--basicAccessControlScheme OBJECT IDENTIFIER ::=
+--  {id-acScheme 1}
+
+--simplifiedAccessControlScheme OBJECT IDENTIFIER ::= {id-acScheme 2}
+
+--rule-based-access-control OBJECT IDENTIFIER ::= {id-acScheme 3}
+
+--rule-and-basic-access-control OBJECT IDENTIFIER ::= {id-acScheme 4}
+
+--rule-and-simple-access-control OBJECT IDENTIFIER ::= {id-acScheme 5}
+
+END -- BasicAccessControl
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
+
 
 -- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
 
index ad192bde1e9965d5d7062d2001533655a977678b..99e6cd83e271bf331d07558044b9cb953935385b 100644 (file)
@@ -4,12 +4,17 @@ DistributedOperations         dsp
 DirectoryAbstractService       dap
 InformationFramework           x509if
 AuthenticationFramework                x509af
+BasicAccessControl             crmf
+ACSE-1                         acse
 
 #.INCLUDE ../x509sat/x509sat-exp.cnf
 #.INCLUDE ../x509if/x509if-exp.cnf
 #.INCLUDE ../x509af/x509af-exp.cnf
 #.INCLUDE ../dsp/dsp-exp.cnf
 #.INCLUDE ../dap/dap-exp.cnf
+#.INCLUDE ../pkixcrmf/crmf-exp.cnf
+#.INCLUDE ../acse/acse-exp.cnf
+
 
 #.EXPORTS
 DSEType
@@ -85,6 +90,10 @@ NHOBSuperiorToSubordinate            B "dop.modify.rolea.2.5.19.3" "non-specific-hierarchi
 NHOBSubordinateToSuperior              B "dop.establish.roleb.2.5.19.3" "non-specific-hierarchical-establish-roleb"
 NHOBSubordinateToSuperior              B "dop.modify.roleb.2.5.19.3"  "non-specific-hierarchical-modify-roleb"
 
+ACIItem                B       "2.5.24.4" "id-aca-prescriptiveACI"
+ACIItem                B       "2.5.24.5" "id-aca-entryACI"
+ACIItem                B       "2.5.24.6" "id-aca-subentryACI"
+
 #.FN_PARS      OBJECT_IDENTIFIER
        FN_VARIANT = _str VAL_PTR = &binding_type
 
@@ -179,3 +188,12 @@ NHOBSubordinateToSuperior          B "dop.modify.roleb.2.5.19.3"  "non-specific-hierarch
                }
        }
 
+#.FN_PARS Precedence VAL_PTR = &precedence
+
+#.FN_BODY Precedence
+  guint32 precedence = 0;
+
+  %(DEFAULT_BODY)s
+
+  proto_item_append_text(tree, " precedence=%%d", precedence);
+
index da0c9f6572017a7fe7d66d8c2c9a30eb4209281c..701d2b26eae639730a22794c5b80d70feab55d9d 100644 (file)
@@ -44,6 +44,7 @@
 #include "packet-x509if.h"
 #include "packet-dap.h"
 #include "packet-dsp.h"
+#include "packet-crmf.h"
 
 
 #include "packet-dop.h"
@@ -273,6 +274,23 @@ void proto_reg_handoff_dop(void) {
   register_ber_oid_name("2.5.19.2", "hierarchical-agreement");
   register_ber_oid_name("2.5.19.3", "non-specific-hierarchical-agreement");
 
+  /* ACCESS CONTROL SCHEMES */
+  register_ber_oid_name("2.5.28.1", "basic-ACS");
+  register_ber_oid_name("2.5.28.2", "simplified-ACS");
+  register_ber_oid_name("2.5.28.3", "ruleBased-ACS");
+  register_ber_oid_name("2.5.28.4", "ruleAndBasic-ACS");
+  register_ber_oid_name("2.5.28.5", "ruleAndSimple-ACS");
+
+  /* ADMINISTRATIVE ROLES */
+  register_ber_oid_name("2.5.23.1", "id-ar-autonomousArea");
+  register_ber_oid_name("2.5.23.2", "id-ar-accessControlSpecificArea");
+  register_ber_oid_name("2.5.23.3", "id-ar-accessControlInnerArea");
+  register_ber_oid_name("2.5.23.4", "id-ar-subschemaAdminSpecificArea");
+  register_ber_oid_name("2.5.23.5", "id-ar-collectiveAttributeSpecificArea");
+  register_ber_oid_name("2.5.23.6", "id-ar-collectiveAttributeInnerArea");
+  register_ber_oid_name("2.5.23.7", "id-ar-contextDefaultSpecificArea");
+  register_ber_oid_name("2.5.23.8", "id-ar-serviceSpecificArea");
+
   /* remember the tpkt handler for change in preferences */
   tpkt_handle = find_dissector("tpkt");
 
index f3726d9291165fae439f34b13c5718408a3b4d2d..66bfd93c195a349b416922651b5bafdec68d60a4 100644 (file)
@@ -97,6 +97,14 @@ DistinguishedName    B       "2.5.4.33"      "id-at-roleOccupant"
 DistinguishedName      B       "2.5.4.34"      "id-at-seeAlso"
 DistinguishedName      B       "2.5.4.49"      "id-at-distinguishedName"
 
+DistinguishedName      B       "2.5.18.3"      "id-oa-creatorsName"
+DistinguishedName      B       "2.5.18.4"      "id-oa-modifiersName"
+#SubtreeSpecification  B       "2.5.18.6"      "id-oa-subtreeSpecification"
+DistinguishedName      B       "2.5.18.10"     "id-oa-subschemaSubentry"
+DistinguishedName      B       "2.5.18.11"     "id-oa-subschemaSubentry"
+DistinguishedName      B       "2.5.18.12"     "id-oa-collectiveAttributeSubentry"
+DistinguishedName      B       "2.5.18.13"     "id-oa-contextDefaultSubentry"
+
 # X402 - see master list in acp133.cnf
 DistinguishedName B "2.6.5.2.5" "id-at-mhs-message-store-dn"
 DistinguishedName B "2.6.5.2.14" "id-at-mhs-dl-related-lists"
@@ -117,6 +125,8 @@ DistinguishedName B "2.16.840.1.101.2.2.1.138" "id-at-plasServed"
 DistinguishedName B "2.16.840.1.101.2.2.1.139" "id-at-deployed"
 DistinguishedName B "2.16.840.1.101.2.2.1.140" "id-at-garrison"
 
+
+
 #.FN_PARS ContextId
   FN_VARIANT = _str  HF_INDEX = hf_x509if_object_identifier_id  VAL_PTR = &object_identifier_id
 
@@ -162,9 +172,14 @@ DistinguishedName B "2.16.840.1.101.2.2.1.140" "id-at-garrison"
   char         *value = NULL;
   const char   *fmt; 
   const char   *name = NULL;
+  const char    *orig_oid = object_identifier_id;
 
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
 
+  /* in dissecting the value we may have overridden the OID of the value - which is
+     a problem if there are multiple values */
+  object_identifier_id = orig_oid;
+
   /* try and dissect as a string */
   dissect_ber_octet_string(FALSE, pinfo, NULL, tvb, old_offset, hf_x509if_any_string, &out_tvb);
   
@@ -268,7 +283,6 @@ DistinguishedName B "2.16.840.1.101.2.2.1.140" "id-at-garrison"
        col_append_fstr(pinfo->cinfo, COL_INFO, " %%s%%s", fmt, last_dn);
   }
 
-  last_dn = NULL;
 
 #.FN_BODY RDNSequence/_item
 
index 005c27e59e4a7a92a6965c6f68ec4aed187a9512..0b8aa7afcf5a4d37faadfea6dc48ccb68d42c985 100644 (file)
@@ -164,6 +164,15 @@ DirectoryString        B "2.5.4.65"   "id-at-pseudonym"
 ObjectIdentifier       B "2.5.4.66" "id-at-communuicationsService"
 ObjectIdentifier       B "2.5.4.67" "id-at-communuicationsNetwork"
 
+SyntaxGeneralizedTime  B "2.5.18.1" "id-oa-createTimeStamp"    
+SyntaxGeneralizedTime  B "2.5.18.2" "id-oa-modifyTimeStamp"    
+ObjectIdentifier       B "2.5.18.5" "id-oa-administrativeRole"
+ObjectIdentifier       B "2.5.18.7" "id-oa-collectiveExclusions"
+SyntaxGeneralizedTime  B "2.5.18.8" "id-oa-subschemaTimeStamp" 
+Boolean                       B "2.5.18.9" "id-oa-hasSubordinates"
+
+ObjectIdentifier       B "2.5.24.1" "id-aca-accessControlScheme"
+
 # X402 - see master list in acp133.cnf
 ObjectIdentifier B "2.6.5.2.8" "id-at-mhs-supported-automatic-actions"
 ObjectIdentifier B "2.6.5.2.10" "id-at-mhs-supported-attributes"
index 66277f7ff58e3037927363058f8d62caaa7da5d7..51501343ce28b8c07e1a8ab948e329f06be186e3 100644 (file)
@@ -1,6 +1,6 @@
 /* Do not modify this file.                                                   */
 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
-/* .\packet-dap.c                                                             */
+/* ./packet-dap.c                                                             */
 /* ../../tools/asn2eth.py -X -b -e -p dap -c dap.cnf -s packet-dap-template dap.asn */
 
 /* Input file: packet-dap-template.c */
@@ -624,7 +624,7 @@ static int dissect_family_info_item(packet_info *pinfo, proto_tree *tree, tvbuff
 
 /* Filter -> SetOfFilter -> Filter */
 /* Filter -> Filter */
-static int dissect_dap_Filter(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_Filter(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
 
 static int dissect_not(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dap_not);
@@ -1219,7 +1219,7 @@ static const ber_choice_t Name_choice[] = {
 
 static int
 dissect_dap_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 257 "dap.cnf"
+#line 260 "dap.cnf"
        const char *dn;
 
          offset = dissect_ber_choice(pinfo, tree, tvb, offset,
@@ -1812,7 +1812,7 @@ dissect_dap_FamilyEntries(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
 
 static int
 dissect_dap_T_initial(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 117 "dap.cnf"
+#line 118 "dap.cnf"
        proto_item *it;
        it = proto_tree_add_item(tree, hf_index, tvb, offset, -1, FALSE);
        proto_item_append_text(it," XXX: Not yet implemented!");
@@ -1829,7 +1829,7 @@ static int dissect_initial(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
 
 static int
 dissect_dap_T_any(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 122 "dap.cnf"
+#line 123 "dap.cnf"
        /* XXX: not yet implemented */
 
 
@@ -1844,7 +1844,7 @@ static int dissect_any(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int
 
 static int
 dissect_dap_T_final(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 125 "dap.cnf"
+#line 126 "dap.cnf"
        /* XXX: not yet implemented */
 
 
@@ -1938,7 +1938,7 @@ static int dissect_matchingRule(packet_info *pinfo, proto_tree *tree, tvbuff_t *
 
 static int
 dissect_dap_T_matchValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 128 "dap.cnf"
+#line 129 "dap.cnf"
        /* XXX: not yet implemented */
 
 
@@ -2026,7 +2026,7 @@ static int dissect_or(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int o
 }
 
 
-static const value_string dap_Filter_vals[] = {
+const value_string dap_Filter_vals[] = {
   {   0, "item" },
   {   1, "and" },
   {   2, "or" },
@@ -2042,7 +2042,7 @@ static const ber_choice_t Filter_choice[] = {
   { 0, 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_dap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
                                  Filter_choice, hf_index, ett_dap_Filter,
@@ -2109,7 +2109,7 @@ static int dissect_newRequest(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
 
 static int
 dissect_dap_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 172 "dap.cnf"
+#line 173 "dap.cnf"
        tvbuff_t *out_tvb;
        int     i;
        int     len;
@@ -2119,19 +2119,21 @@ dissect_dap_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, p
                                        &out_tvb);
 
 
-       len = tvb_length(out_tvb);
-       /* now see if we can add a string representation */
-       for(i=0; i<len; i++)
-               if(!g_ascii_isprint(tvb_get_guint8(out_tvb, i)))
-                       break;
+       if(out_tvb) {
+               len = tvb_length(out_tvb);
+               /* now see if we can add a string representation */
+               for(i=0; i<len; i++)
+                       if(!g_ascii_isprint(tvb_get_guint8(out_tvb, i)))
+                               break;
        
-       if(i == len) {
-               if((oct_item = get_ber_last_created_item())) {
-
-                       proto_item_append_text(oct_item," (");
-                       for(i=0; i<len; i++)
-                               proto_item_append_text(oct_item,"%c",tvb_get_guint8(out_tvb,i));
-                       proto_item_append_text(oct_item,")");
+               if(i == len) {
+                       if((oct_item = get_ber_last_created_item())) {
+
+                               proto_item_append_text(oct_item," (");
+                               for(i=0; i<len; i++)
+                                       proto_item_append_text(oct_item,"%c",tvb_get_guint8(out_tvb,i));
+                               proto_item_append_text(oct_item,")");
+                       }
                }
        }
        
@@ -2298,7 +2300,7 @@ static const ber_sequence_t SimpleCredentials_sequence[] = {
 
 static int
 dissect_dap_SimpleCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 162 "dap.cnf"
+#line 163 "dap.cnf"
 
          offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
                                    SimpleCredentials_sequence, hf_index, ett_dap_SimpleCredentials);
@@ -2319,7 +2321,7 @@ static int dissect_simple(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, i
 
 static int
 dissect_dap_T_bind_token(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 131 "dap.cnf"
+#line 132 "dap.cnf"
        /* XXX: not yet implemented */
 
 
@@ -2354,7 +2356,7 @@ static int dissect_strong(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, i
 
 static int
 dissect_dap_T_req(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 134 "dap.cnf"
+#line 135 "dap.cnf"
        /* XXX: not yet implemented */
 
 
@@ -2369,7 +2371,7 @@ static int dissect_req(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int
 
 static int
 dissect_dap_T_rep(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 137 "dap.cnf"
+#line 138 "dap.cnf"
        /* XXX: not yet implemented */
 
 
@@ -2462,7 +2464,7 @@ static const ber_sequence_t DirectoryBindArgument_set[] = {
 
 int
 dissect_dap_DirectoryBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 143 "dap.cnf"
+#line 144 "dap.cnf"
 
        guint32 len;
 
@@ -2521,7 +2523,7 @@ static const value_string dap_ServiceProblem_vals[] = {
 
 static int
 dissect_dap_ServiceProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 211 "dap.cnf"
+#line 214 "dap.cnf"
   guint32 problem;
 
     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
@@ -2560,7 +2562,7 @@ static const value_string dap_SecurityProblem_vals[] = {
 
 static int
 dissect_dap_SecurityProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 199 "dap.cnf"
+#line 202 "dap.cnf"
   guint32 problem;
 
     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
@@ -3267,7 +3269,7 @@ static const ber_sequence_t T_subordinates_item_sequence[] = {
 
 static int
 dissect_dap_T_subordinates_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 267 "dap.cnf"
+#line 270 "dap.cnf"
        proto_item *sub_item;
 
          offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
@@ -3314,7 +3316,7 @@ static const value_string dap_LimitProblem_vals[] = {
 
 static int
 dissect_dap_LimitProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 235 "dap.cnf"
+#line 238 "dap.cnf"
   guint32 problem;
 
     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
@@ -3530,7 +3532,7 @@ static const value_string dap_T_subset_vals[] = {
 
 static int
 dissect_dap_T_subset(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 247 "dap.cnf"
+#line 250 "dap.cnf"
   guint32 subset;
 
     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
@@ -5070,7 +5072,7 @@ dissect_dap_Referral(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packe
 
 static int
 dissect_dap_T_spkmInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 140 "dap.cnf"
+#line 141 "dap.cnf"
        /* XXX: not yet implemented */
 
 
@@ -5232,7 +5234,7 @@ static const value_string dap_UpdateProblem_vals[] = {
 
 static int
 dissect_dap_UpdateProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 223 "dap.cnf"
+#line 226 "dap.cnf"
   guint32 problem;
 
     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
index 667ffe097ab15d2703306dc3b9299baba228cdd2..7756cf663756833425f4409be189af22a2ce5273 100644 (file)
@@ -1,6 +1,6 @@
 /* Do not modify this file.                                                   */
 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
-/* .\packet-dap.h                                                             */
+/* ./packet-dap.h                                                             */
 /* ../../tools/asn2eth.py -X -b -e -p dap -c dap.cnf -s packet-dap-template dap.asn */
 
 /* Input file: packet-dap-template.h */
@@ -38,6 +38,7 @@
 /*--- Included file: packet-dap-exp.h ---*/
 #line 1 "packet-dap-exp.h"
 extern const value_string dap_ContextSelection_vals[];
+extern const value_string dap_Filter_vals[];
 extern const value_string dap_DirectoryBindError_vals[];
 extern const value_string dap_ReadArgument_vals[];
 extern const value_string dap_ReadResult_vals[];
@@ -67,6 +68,7 @@ extern const value_string dap_ServiceError_vals[];
 extern const value_string dap_UpdateError_vals[];
 int dissect_dap_CommonResults(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
 int dissect_dap_ContextSelection(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_dap_Filter(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
 int dissect_dap_SecurityParameters(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
 int dissect_dap_DirectoryBindArgument(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
 int dissect_dap_DirectoryBindError(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
index 0f0b037225f1c6c3bfa0621aae4c21a6c07ef1f8..84f41968c7f47879f900512f5ac293f10c7124bd 100644 (file)
@@ -1,6 +1,6 @@
 /* Do not modify this file.                                                   */
 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
-/* .\packet-dop.c                                                             */
+/* ./packet-dop.c                                                             */
 /* ../../tools/asn2eth.py -X -b -e -p dop -c dop.cnf -s packet-dop-template dop.asn */
 
 /* Input file: packet-dop-template.c */
@@ -52,6 +52,7 @@
 #include "packet-x509if.h"
 #include "packet-dap.h"
 #include "packet-dsp.h"
+#include "packet-crmf.h"
 
 
 #include "packet-dop.h"
@@ -87,6 +88,7 @@ static int hf_dop_SuperiorToSubordinateModification_PDU = -1;  /* SuperiorToSubo
 static int hf_dop_NonSpecificHierarchicalAgreement_PDU = -1;  /* NonSpecificHierarchicalAgreement */
 static int hf_dop_NHOBSuperiorToSubordinate_PDU = -1;  /* NHOBSuperiorToSubordinate */
 static int hf_dop_NHOBSubordinateToSuperior_PDU = -1;  /* NHOBSubordinateToSuperior */
+static int hf_dop_ACIItem_PDU = -1;               /* ACIItem */
 static int hf_dop_ae_title = -1;                  /* Name */
 static int hf_dop_address = -1;                   /* PresentationAddress */
 static int hf_dop_protocolInformation = -1;       /* SET_OF_ProtocolInformation */
@@ -171,6 +173,55 @@ static int hf_dop_accessPoints = -1;              /* MasterAndShadowAccessPoints
 static int hf_dop_info = -1;                      /* SET_OF_Attribute */
 static int hf_dop_info_item = -1;                 /* Attribute */
 static int hf_dop_alias = -1;                     /* BOOLEAN */
+static int hf_dop_identificationTag = -1;         /* DirectoryString */
+static int hf_dop_precedence = -1;                /* Precedence */
+static int hf_dop_authenticationLevel = -1;       /* AuthenticationLevel */
+static int hf_dop_itemOrUserFirst = -1;           /* T_itemOrUserFirst */
+static int hf_dop_itemFirst = -1;                 /* T_itemFirst */
+static int hf_dop_protectedItems = -1;            /* ProtectedItems */
+static int hf_dop_itemPermissions = -1;           /* SET_OF_ItemPermission */
+static int hf_dop_itemPermissions_item = -1;      /* ItemPermission */
+static int hf_dop_userFirst = -1;                 /* T_userFirst */
+static int hf_dop_userClasses = -1;               /* UserClasses */
+static int hf_dop_userPermissions = -1;           /* SET_OF_UserPermission */
+static int hf_dop_userPermissions_item = -1;      /* UserPermission */
+static int hf_dop_entry = -1;                     /* NULL */
+static int hf_dop_allUserAttributeTypes = -1;     /* NULL */
+static int hf_dop_attributeType = -1;             /* SET_OF_AttributeType */
+static int hf_dop_attributeType_item = -1;        /* AttributeType */
+static int hf_dop_allAttributeValues = -1;        /* SET_OF_AttributeType */
+static int hf_dop_allAttributeValues_item = -1;   /* AttributeType */
+static int hf_dop_allUserAttributeTypesAndValues = -1;  /* NULL */
+static int hf_dop_attributeValue = -1;            /* SET_OF_AttributeTypeAndValue */
+static int hf_dop_attributeValue_item = -1;       /* AttributeTypeAndValue */
+static int hf_dop_selfValue = -1;                 /* SET_OF_AttributeType */
+static int hf_dop_selfValue_item = -1;            /* AttributeType */
+static int hf_dop_rangeOfValues = -1;             /* Filter */
+static int hf_dop_maxValueCount = -1;             /* SET_OF_MaxValueCount */
+static int hf_dop_maxValueCount_item = -1;        /* MaxValueCount */
+static int hf_dop_maxImmSub = -1;                 /* INTEGER */
+static int hf_dop_restrictedBy = -1;              /* SET_OF_RestrictedValue */
+static int hf_dop_restrictedBy_item = -1;         /* RestrictedValue */
+static int hf_dop_contexts = -1;                  /* SET_OF_ContextAssertion */
+static int hf_dop_contexts_item = -1;             /* ContextAssertion */
+static int hf_dop_classes = -1;                   /* Refinement */
+static int hf_dop_type = -1;                      /* AttributeType */
+static int hf_dop_maxCount = -1;                  /* INTEGER */
+static int hf_dop_valuesIn = -1;                  /* AttributeType */
+static int hf_dop_allUsers = -1;                  /* NULL */
+static int hf_dop_thisEntry = -1;                 /* NULL */
+static int hf_dop_name = -1;                      /* SET_OF_NameAndOptionalUID */
+static int hf_dop_name_item = -1;                 /* NameAndOptionalUID */
+static int hf_dop_userGroup = -1;                 /* SET_OF_NameAndOptionalUID */
+static int hf_dop_userGroup_item = -1;            /* NameAndOptionalUID */
+static int hf_dop_subtree = -1;                   /* SET_OF_SubtreeSpecification */
+static int hf_dop_subtree_item = -1;              /* SubtreeSpecification */
+static int hf_dop_grantsAndDenials = -1;          /* GrantsAndDenials */
+static int hf_dop_basicLevels = -1;               /* T_basicLevels */
+static int hf_dop_level = -1;                     /* T_level */
+static int hf_dop_localQualifier = -1;            /* INTEGER */
+static int hf_dop_signed = -1;                    /* BOOLEAN */
+static int hf_dop_other = -1;                     /* EXTERNAL */
 /* named bits */
 static int hf_dop_DSEType_root = -1;
 static int hf_dop_DSEType_glue = -1;
@@ -189,9 +240,35 @@ static int hf_dop_DSEType_rhob = -1;
 static int hf_dop_DSEType_sa = -1;
 static int hf_dop_DSEType_dsSubentry = -1;
 static int hf_dop_DSEType_familyMember = -1;
+static int hf_dop_GrantsAndDenials_grantAdd = -1;
+static int hf_dop_GrantsAndDenials_denyAdd = -1;
+static int hf_dop_GrantsAndDenials_grantDiscloseOnError = -1;
+static int hf_dop_GrantsAndDenials_denyDiscloseOnError = -1;
+static int hf_dop_GrantsAndDenials_grantRead = -1;
+static int hf_dop_GrantsAndDenials_denyRead = -1;
+static int hf_dop_GrantsAndDenials_grantRemove = -1;
+static int hf_dop_GrantsAndDenials_denyRemove = -1;
+static int hf_dop_GrantsAndDenials_grantBrowse = -1;
+static int hf_dop_GrantsAndDenials_denyBrowse = -1;
+static int hf_dop_GrantsAndDenials_grantExport = -1;
+static int hf_dop_GrantsAndDenials_denyExport = -1;
+static int hf_dop_GrantsAndDenials_grantImport = -1;
+static int hf_dop_GrantsAndDenials_denyImport = -1;
+static int hf_dop_GrantsAndDenials_grantModify = -1;
+static int hf_dop_GrantsAndDenials_denyModify = -1;
+static int hf_dop_GrantsAndDenials_grantRename = -1;
+static int hf_dop_GrantsAndDenials_denyRename = -1;
+static int hf_dop_GrantsAndDenials_grantReturnDN = -1;
+static int hf_dop_GrantsAndDenials_denyReturnDN = -1;
+static int hf_dop_GrantsAndDenials_grantCompare = -1;
+static int hf_dop_GrantsAndDenials_denyCompare = -1;
+static int hf_dop_GrantsAndDenials_grantFilterMatch = -1;
+static int hf_dop_GrantsAndDenials_denyFilterMatch = -1;
+static int hf_dop_GrantsAndDenials_grantInvoke = -1;
+static int hf_dop_GrantsAndDenials_denyInvoke = -1;
 
 /*--- End of included file: packet-dop-hf.c ---*/
-#line 69 "packet-dop-template.c"
+#line 70 "packet-dop-template.c"
 
 /* Initialize the subtree pointers */
 static gint ett_dop = -1;
@@ -243,9 +320,31 @@ static gint ett_dop_SuperiorToSubordinateModification = -1;
 static gint ett_dop_NonSpecificHierarchicalAgreement = -1;
 static gint ett_dop_NHOBSuperiorToSubordinate = -1;
 static gint ett_dop_NHOBSubordinateToSuperior = -1;
+static gint ett_dop_ACIItem = -1;
+static gint ett_dop_T_itemOrUserFirst = -1;
+static gint ett_dop_T_itemFirst = -1;
+static gint ett_dop_SET_OF_ItemPermission = -1;
+static gint ett_dop_T_userFirst = -1;
+static gint ett_dop_SET_OF_UserPermission = -1;
+static gint ett_dop_ProtectedItems = -1;
+static gint ett_dop_SET_OF_AttributeType = -1;
+static gint ett_dop_SET_OF_AttributeTypeAndValue = -1;
+static gint ett_dop_SET_OF_MaxValueCount = -1;
+static gint ett_dop_SET_OF_RestrictedValue = -1;
+static gint ett_dop_SET_OF_ContextAssertion = -1;
+static gint ett_dop_MaxValueCount = -1;
+static gint ett_dop_RestrictedValue = -1;
+static gint ett_dop_UserClasses = -1;
+static gint ett_dop_SET_OF_NameAndOptionalUID = -1;
+static gint ett_dop_SET_OF_SubtreeSpecification = -1;
+static gint ett_dop_ItemPermission = -1;
+static gint ett_dop_UserPermission = -1;
+static gint ett_dop_AuthenticationLevel = -1;
+static gint ett_dop_T_basicLevels = -1;
+static gint ett_dop_GrantsAndDenials = -1;
 
 /*--- End of included file: packet-dop-ett.c ---*/
-#line 73 "packet-dop-template.c"
+#line 74 "packet-dop-template.c"
 
 
 /*--- Included file: packet-dop-fn.c ---*/
@@ -303,6 +402,48 @@ static int dissect_accessPoints(packet_info *pinfo, proto_tree *tree, tvbuff_t *
 static int dissect_info_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_dop_info_item);
 }
+static int dissect_identificationTag(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509sat_DirectoryString(FALSE, tvb, offset, pinfo, tree, hf_dop_identificationTag);
+}
+static int dissect_attributeType_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_attributeType_item);
+}
+static int dissect_allAttributeValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_allAttributeValues_item);
+}
+static int dissect_attributeValue_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_crmf_AttributeTypeAndValue(FALSE, tvb, offset, pinfo, tree, hf_dop_attributeValue_item);
+}
+static int dissect_selfValue_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_selfValue_item);
+}
+static int dissect_rangeOfValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dap_Filter(FALSE, tvb, offset, pinfo, tree, hf_dop_rangeOfValues);
+}
+static int dissect_contexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dop_contexts_item);
+}
+static int dissect_classes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_dop_classes);
+}
+static int dissect_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_type);
+}
+static int dissect_valuesIn(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_valuesIn);
+}
+static int dissect_name_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509sat_NameAndOptionalUID(FALSE, tvb, offset, pinfo, tree, hf_dop_name_item);
+}
+static int dissect_userGroup_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509sat_NameAndOptionalUID(FALSE, tvb, offset, pinfo, tree, hf_dop_userGroup_item);
+}
+static int dissect_subtree_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_x509if_SubtreeSpecification(FALSE, tvb, offset, pinfo, tree, hf_dop_subtree_item);
+}
+static int dissect_other(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_acse_EXTERNAL(FALSE, tvb, offset, pinfo, tree, hf_dop_other);
+}
 
 
 static const asn_namedbit DSEType_bits[] = {
@@ -355,7 +496,7 @@ static int dissect_protocolInformation(packet_info *pinfo, proto_tree *tree, tvb
 
 static int
 dissect_dop_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 170 "dop.cnf"
+#line 179 "dop.cnf"
        guint32 value;
 
          offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
@@ -380,6 +521,15 @@ static int dissect_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
 static int dissect_version(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_dop_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dop_version);
 }
+static int dissect_maxImmSub(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dop_maxImmSub);
+}
+static int dissect_maxCount(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dop_maxCount);
+}
+static int dissect_localQualifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_dop_localQualifier);
+}
 
 
 static const ber_sequence_t OperationalBindingID_sequence[] = {
@@ -439,6 +589,9 @@ static int dissect_aliasDereferenced(packet_info *pinfo, proto_tree *tree, tvbuf
 static int dissect_alias(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_dop_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dop_alias);
 }
+static int dissect_signed(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_dop_signed);
+}
 
 
 static const ber_sequence_t SupplierInformation_set[] = {
@@ -532,7 +685,7 @@ dissect_dop_DSAOperationalManagementBindError(gboolean implicit_tag _U_, tvbuff_
 
 static int
 dissect_dop_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 92 "dop.cnf"
+#line 101 "dop.cnf"
   const char *name;
 
     offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &binding_type);
@@ -555,7 +708,7 @@ static int dissect_bindingType(packet_info *pinfo, proto_tree *tree, tvbuff_t *t
 
 static int
 dissect_dop_EstablishSymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 102 "dop.cnf"
+#line 111 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.establish.symmetric", tvb, offset, pinfo, tree, "symmetric");
 
@@ -571,7 +724,7 @@ static int dissect_establishSymmetric(packet_info *pinfo, proto_tree *tree, tvbu
 
 static int
 dissect_dop_EstablishRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 106 "dop.cnf"
+#line 115 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.establish.rolea", tvb, offset, pinfo, tree, "roleA");
 
@@ -587,7 +740,7 @@ static int dissect_establishRoleAInitiates(packet_info *pinfo, proto_tree *tree,
 
 static int
 dissect_dop_EstablishRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 110 "dop.cnf"
+#line 119 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.establish.roleb", tvb, offset, pinfo, tree, "roleB");
 
@@ -630,7 +783,7 @@ static int dissect_establishInitiator(packet_info *pinfo, proto_tree *tree, tvbu
 
 static int
 dissect_dop_T_agreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 138 "dop.cnf"
+#line 147 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree, NULL);
 
@@ -659,6 +812,21 @@ static int dissect_explicitTermination(packet_info *pinfo, proto_tree *tree, tvb
 static int dissect_null(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_null);
 }
+static int dissect_entry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_entry);
+}
+static int dissect_allUserAttributeTypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_allUserAttributeTypes);
+}
+static int dissect_allUserAttributeTypesAndValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_allUserAttributeTypesAndValues);
+}
+static int dissect_allUsers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_allUsers);
+}
+static int dissect_thisEntry(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_NULL(FALSE, tvb, offset, pinfo, tree, hf_dop_thisEntry);
+}
 
 
 
@@ -873,7 +1041,7 @@ dissect_dop_EstablishOperationalBindingArgument(gboolean implicit_tag _U_, tvbuf
 
 static int
 dissect_dop_T_symmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 142 "dop.cnf"
+#line 151 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.establish.symmetric", tvb, offset, pinfo, tree, "symmetric"); 
 
@@ -889,7 +1057,7 @@ static int dissect_symmetric(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb
 
 static int
 dissect_dop_T_roleA_replies(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 146 "dop.cnf"
+#line 155 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.establish.rolea", tvb, offset, pinfo, tree, "roleA");
 
@@ -905,7 +1073,7 @@ static int dissect_roleA_replies(packet_info *pinfo, proto_tree *tree, tvbuff_t
 
 static int
 dissect_dop_T_roleB_replies(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 150 "dop.cnf"
+#line 159 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.establish.roleb", tvb, offset, pinfo, tree, "roleB");
 
@@ -985,7 +1153,7 @@ dissect_dop_EstablishOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_
 
 static int
 dissect_dop_ModifySymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 114 "dop.cnf"
+#line 123 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.modify.symmetric", tvb, offset, pinfo, tree, "symmetric");
 
@@ -1001,7 +1169,7 @@ static int dissect_modifySymmetric(packet_info *pinfo, proto_tree *tree, tvbuff_
 
 static int
 dissect_dop_ModifyRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 118 "dop.cnf"
+#line 127 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.modify.rolea", tvb, offset, pinfo, tree, "roleA");
 
@@ -1017,7 +1185,7 @@ static int dissect_modifyRoleAInitiates(packet_info *pinfo, proto_tree *tree, tv
 
 static int
 dissect_dop_ModifyRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 122 "dop.cnf"
+#line 131 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.modify.roleb", tvb, offset, pinfo, tree, "roleB");
 
@@ -1060,7 +1228,7 @@ static int dissect_modifyInitiator(packet_info *pinfo, proto_tree *tree, tvbuff_
 
 static int
 dissect_dop_ArgumentNewAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 162 "dop.cnf"
+#line 171 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree, NULL);
 
@@ -1145,7 +1313,7 @@ dissect_dop_ModifyOperationalBindingArgument(gboolean implicit_tag _U_, tvbuff_t
 
 static int
 dissect_dop_ResultNewAgreement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 158 "dop.cnf"
+#line 167 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree, NULL);
 
@@ -1226,7 +1394,7 @@ dissect_dop_ModifyOperationalBindingResult(gboolean implicit_tag _U_, tvbuff_t *
 
 static int
 dissect_dop_TerminateSymmetric(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 126 "dop.cnf"
+#line 135 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.terminate.symmetric", tvb, offset, pinfo, tree, "symmetric");
 
@@ -1242,7 +1410,7 @@ static int dissect_terminateSymmetric(packet_info *pinfo, proto_tree *tree, tvbu
 
 static int
 dissect_dop_TerminateRoleAInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 130 "dop.cnf"
+#line 139 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.terminate.rolea", tvb, offset, pinfo, tree, "roleA");
 
@@ -1258,7 +1426,7 @@ static int dissect_terminateRoleAInitiates(packet_info *pinfo, proto_tree *tree,
 
 static int
 dissect_dop_TerminateRoleBInitiates(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 134 "dop.cnf"
+#line 143 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.terminate.roleb", tvb, offset, pinfo, tree, "roleB");
 
@@ -1458,7 +1626,7 @@ static int dissect_problem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
 
 static int
 dissect_dop_T_agreementProposal(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 154 "dop.cnf"
+#line 163 "dop.cnf"
 
   offset = call_dop_oid_callback("dop.agreement", tvb, offset, pinfo, tree, NULL);
 
@@ -1693,6 +1861,489 @@ dissect_dop_NHOBSubordinateToSuperior(gboolean implicit_tag _U_, tvbuff_t *tvb,
   return offset;
 }
 
+
+
+static int
+dissect_dop_Precedence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+#line 194 "dop.cnf"
+  guint32 precedence = 0;
+
+    offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+                                  &precedence);
+
+
+  proto_item_append_text(tree, " precedence=%d", precedence);
+
+
+
+  return offset;
+}
+static int dissect_precedence(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_Precedence(FALSE, tvb, offset, pinfo, tree, hf_dop_precedence);
+}
+
+
+static const value_string dop_T_level_vals[] = {
+  {   0, "none" },
+  {   1, "simple" },
+  {   2, "strong" },
+  { 0, NULL }
+};
+
+
+static int
+dissect_dop_T_level(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+                                  NULL);
+
+  return offset;
+}
+static int dissect_level(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_T_level(FALSE, tvb, offset, pinfo, tree, hf_dop_level);
+}
+
+
+static const ber_sequence_t T_basicLevels_sequence[] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_level },
+  { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_localQualifier },
+  { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_signed },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_T_basicLevels(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   T_basicLevels_sequence, hf_index, ett_dop_T_basicLevels);
+
+  return offset;
+}
+static int dissect_basicLevels(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_T_basicLevels(FALSE, tvb, offset, pinfo, tree, hf_dop_basicLevels);
+}
+
+
+static const value_string dop_AuthenticationLevel_vals[] = {
+  {   0, "basicLevels" },
+  {   1, "other" },
+  { 0, NULL }
+};
+
+static const ber_choice_t AuthenticationLevel_choice[] = {
+  {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_basicLevels },
+  {   1, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_other },
+  { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_AuthenticationLevel(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 AuthenticationLevel_choice, hf_index, ett_dop_AuthenticationLevel,
+                                 NULL);
+
+  return offset;
+}
+static int dissect_authenticationLevel(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_AuthenticationLevel(FALSE, tvb, offset, pinfo, tree, hf_dop_authenticationLevel);
+}
+
+
+static const ber_sequence_t SET_OF_AttributeType_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType_item },
+};
+
+static int
+dissect_dop_SET_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_AttributeType_set_of, hf_index, ett_dop_SET_OF_AttributeType);
+
+  return offset;
+}
+static int dissect_attributeType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_attributeType);
+}
+static int dissect_allAttributeValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_allAttributeValues);
+}
+static int dissect_selfValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_dop_selfValue);
+}
+
+
+static const ber_sequence_t SET_OF_AttributeTypeAndValue_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_attributeValue_item },
+};
+
+static int
+dissect_dop_SET_OF_AttributeTypeAndValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_AttributeTypeAndValue_set_of, hf_index, ett_dop_SET_OF_AttributeTypeAndValue);
+
+  return offset;
+}
+static int dissect_attributeValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_AttributeTypeAndValue(FALSE, tvb, offset, pinfo, tree, hf_dop_attributeValue);
+}
+
+
+static const ber_sequence_t MaxValueCount_sequence[] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
+  { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_maxCount },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_MaxValueCount(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   MaxValueCount_sequence, hf_index, ett_dop_MaxValueCount);
+
+  return offset;
+}
+static int dissect_maxValueCount_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_MaxValueCount(FALSE, tvb, offset, pinfo, tree, hf_dop_maxValueCount_item);
+}
+
+
+static const ber_sequence_t SET_OF_MaxValueCount_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_maxValueCount_item },
+};
+
+static int
+dissect_dop_SET_OF_MaxValueCount(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_MaxValueCount_set_of, hf_index, ett_dop_SET_OF_MaxValueCount);
+
+  return offset;
+}
+static int dissect_maxValueCount(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_MaxValueCount(FALSE, tvb, offset, pinfo, tree, hf_dop_maxValueCount);
+}
+
+
+static const ber_sequence_t RestrictedValue_sequence[] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
+  { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_valuesIn },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_RestrictedValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   RestrictedValue_sequence, hf_index, ett_dop_RestrictedValue);
+
+  return offset;
+}
+static int dissect_restrictedBy_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_RestrictedValue(FALSE, tvb, offset, pinfo, tree, hf_dop_restrictedBy_item);
+}
+
+
+static const ber_sequence_t SET_OF_RestrictedValue_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_restrictedBy_item },
+};
+
+static int
+dissect_dop_SET_OF_RestrictedValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_RestrictedValue_set_of, hf_index, ett_dop_SET_OF_RestrictedValue);
+
+  return offset;
+}
+static int dissect_restrictedBy(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_RestrictedValue(FALSE, tvb, offset, pinfo, tree, hf_dop_restrictedBy);
+}
+
+
+static const ber_sequence_t SET_OF_ContextAssertion_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contexts_item },
+};
+
+static int
+dissect_dop_SET_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_ContextAssertion_set_of, hf_index, ett_dop_SET_OF_ContextAssertion);
+
+  return offset;
+}
+static int dissect_contexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_dop_contexts);
+}
+
+
+static const ber_sequence_t ProtectedItems_sequence[] = {
+  { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_entry },
+  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_allUserAttributeTypes },
+  { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_attributeType },
+  { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_allAttributeValues },
+  { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_allUserAttributeTypesAndValues },
+  { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_attributeValue },
+  { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_selfValue },
+  { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_rangeOfValues },
+  { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_maxValueCount },
+  { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_maxImmSub },
+  { BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_restrictedBy },
+  { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_contexts },
+  { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_classes },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_ProtectedItems(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   ProtectedItems_sequence, hf_index, ett_dop_ProtectedItems);
+
+  return offset;
+}
+static int dissect_protectedItems(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_ProtectedItems(FALSE, tvb, offset, pinfo, tree, hf_dop_protectedItems);
+}
+
+
+static const ber_sequence_t SET_OF_NameAndOptionalUID_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_name_item },
+};
+
+static int
+dissect_dop_SET_OF_NameAndOptionalUID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_NameAndOptionalUID_set_of, hf_index, ett_dop_SET_OF_NameAndOptionalUID);
+
+  return offset;
+}
+static int dissect_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_NameAndOptionalUID(FALSE, tvb, offset, pinfo, tree, hf_dop_name);
+}
+static int dissect_userGroup(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_NameAndOptionalUID(FALSE, tvb, offset, pinfo, tree, hf_dop_userGroup);
+}
+
+
+static const ber_sequence_t SET_OF_SubtreeSpecification_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_subtree_item },
+};
+
+static int
+dissect_dop_SET_OF_SubtreeSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_SubtreeSpecification_set_of, hf_index, ett_dop_SET_OF_SubtreeSpecification);
+
+  return offset;
+}
+static int dissect_subtree(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_SubtreeSpecification(FALSE, tvb, offset, pinfo, tree, hf_dop_subtree);
+}
+
+
+static const ber_sequence_t UserClasses_sequence[] = {
+  { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_allUsers },
+  { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_thisEntry },
+  { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_name },
+  { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_userGroup },
+  { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_subtree },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_UserClasses(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   UserClasses_sequence, hf_index, ett_dop_UserClasses);
+
+  return offset;
+}
+static int dissect_userClasses(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_UserClasses(FALSE, tvb, offset, pinfo, tree, hf_dop_userClasses);
+}
+
+
+static const asn_namedbit GrantsAndDenials_bits[] = {
+  {  0, &hf_dop_GrantsAndDenials_grantAdd, -1, -1, "grantAdd", NULL },
+  {  1, &hf_dop_GrantsAndDenials_denyAdd, -1, -1, "denyAdd", NULL },
+  {  2, &hf_dop_GrantsAndDenials_grantDiscloseOnError, -1, -1, "grantDiscloseOnError", NULL },
+  {  3, &hf_dop_GrantsAndDenials_denyDiscloseOnError, -1, -1, "denyDiscloseOnError", NULL },
+  {  4, &hf_dop_GrantsAndDenials_grantRead, -1, -1, "grantRead", NULL },
+  {  5, &hf_dop_GrantsAndDenials_denyRead, -1, -1, "denyRead", NULL },
+  {  6, &hf_dop_GrantsAndDenials_grantRemove, -1, -1, "grantRemove", NULL },
+  {  7, &hf_dop_GrantsAndDenials_denyRemove, -1, -1, "denyRemove", NULL },
+  {  8, &hf_dop_GrantsAndDenials_grantBrowse, -1, -1, "grantBrowse", NULL },
+  {  9, &hf_dop_GrantsAndDenials_denyBrowse, -1, -1, "denyBrowse", NULL },
+  { 10, &hf_dop_GrantsAndDenials_grantExport, -1, -1, "grantExport", NULL },
+  { 11, &hf_dop_GrantsAndDenials_denyExport, -1, -1, "denyExport", NULL },
+  { 12, &hf_dop_GrantsAndDenials_grantImport, -1, -1, "grantImport", NULL },
+  { 13, &hf_dop_GrantsAndDenials_denyImport, -1, -1, "denyImport", NULL },
+  { 14, &hf_dop_GrantsAndDenials_grantModify, -1, -1, "grantModify", NULL },
+  { 15, &hf_dop_GrantsAndDenials_denyModify, -1, -1, "denyModify", NULL },
+  { 16, &hf_dop_GrantsAndDenials_grantRename, -1, -1, "grantRename", NULL },
+  { 17, &hf_dop_GrantsAndDenials_denyRename, -1, -1, "denyRename", NULL },
+  { 18, &hf_dop_GrantsAndDenials_grantReturnDN, -1, -1, "grantReturnDN", NULL },
+  { 19, &hf_dop_GrantsAndDenials_denyReturnDN, -1, -1, "denyReturnDN", NULL },
+  { 20, &hf_dop_GrantsAndDenials_grantCompare, -1, -1, "grantCompare", NULL },
+  { 21, &hf_dop_GrantsAndDenials_denyCompare, -1, -1, "denyCompare", NULL },
+  { 22, &hf_dop_GrantsAndDenials_grantFilterMatch, -1, -1, "grantFilterMatch", NULL },
+  { 23, &hf_dop_GrantsAndDenials_denyFilterMatch, -1, -1, "denyFilterMatch", NULL },
+  { 24, &hf_dop_GrantsAndDenials_grantInvoke, -1, -1, "grantInvoke", NULL },
+  { 25, &hf_dop_GrantsAndDenials_denyInvoke, -1, -1, "denyInvoke", NULL },
+  { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_dop_GrantsAndDenials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+                                    GrantsAndDenials_bits, hf_index, ett_dop_GrantsAndDenials,
+                                    NULL);
+
+  return offset;
+}
+static int dissect_grantsAndDenials(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_GrantsAndDenials(FALSE, tvb, offset, pinfo, tree, hf_dop_grantsAndDenials);
+}
+
+
+static const ber_sequence_t ItemPermission_sequence[] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_precedence },
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_userClasses },
+  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_grantsAndDenials },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_ItemPermission(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   ItemPermission_sequence, hf_index, ett_dop_ItemPermission);
+
+  return offset;
+}
+static int dissect_itemPermissions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_ItemPermission(FALSE, tvb, offset, pinfo, tree, hf_dop_itemPermissions_item);
+}
+
+
+static const ber_sequence_t SET_OF_ItemPermission_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_itemPermissions_item },
+};
+
+static int
+dissect_dop_SET_OF_ItemPermission(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_ItemPermission_set_of, hf_index, ett_dop_SET_OF_ItemPermission);
+
+  return offset;
+}
+static int dissect_itemPermissions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_ItemPermission(FALSE, tvb, offset, pinfo, tree, hf_dop_itemPermissions);
+}
+
+
+static const ber_sequence_t T_itemFirst_sequence[] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protectedItems },
+  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_itemPermissions },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_T_itemFirst(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   T_itemFirst_sequence, hf_index, ett_dop_T_itemFirst);
+
+  return offset;
+}
+static int dissect_itemFirst(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_T_itemFirst(FALSE, tvb, offset, pinfo, tree, hf_dop_itemFirst);
+}
+
+
+static const ber_sequence_t UserPermission_sequence[] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_precedence },
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_protectedItems },
+  { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_grantsAndDenials },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_UserPermission(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   UserPermission_sequence, hf_index, ett_dop_UserPermission);
+
+  return offset;
+}
+static int dissect_userPermissions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_UserPermission(FALSE, tvb, offset, pinfo, tree, hf_dop_userPermissions_item);
+}
+
+
+static const ber_sequence_t SET_OF_UserPermission_set_of[1] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_userPermissions_item },
+};
+
+static int
+dissect_dop_SET_OF_UserPermission(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
+                                 SET_OF_UserPermission_set_of, hf_index, ett_dop_SET_OF_UserPermission);
+
+  return offset;
+}
+static int dissect_userPermissions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_SET_OF_UserPermission(FALSE, tvb, offset, pinfo, tree, hf_dop_userPermissions);
+}
+
+
+static const ber_sequence_t T_userFirst_sequence[] = {
+  { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_userClasses },
+  { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_userPermissions },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_T_userFirst(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   T_userFirst_sequence, hf_index, ett_dop_T_userFirst);
+
+  return offset;
+}
+static int dissect_userFirst(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_T_userFirst(FALSE, tvb, offset, pinfo, tree, hf_dop_userFirst);
+}
+
+
+static const value_string dop_T_itemOrUserFirst_vals[] = {
+  {   0, "itemFirst" },
+  {   1, "userFirst" },
+  { 0, NULL }
+};
+
+static const ber_choice_t T_itemOrUserFirst_choice[] = {
+  {   0, BER_CLASS_CON, 0, 0, dissect_itemFirst },
+  {   1, BER_CLASS_CON, 1, 0, dissect_userFirst },
+  { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_T_itemOrUserFirst(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 T_itemOrUserFirst_choice, hf_index, ett_dop_T_itemOrUserFirst,
+                                 NULL);
+
+  return offset;
+}
+static int dissect_itemOrUserFirst(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_dop_T_itemOrUserFirst(FALSE, tvb, offset, pinfo, tree, hf_dop_itemOrUserFirst);
+}
+
+
+static const ber_sequence_t ACIItem_sequence[] = {
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_identificationTag },
+  { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_precedence },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_authenticationLevel },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_itemOrUserFirst },
+  { 0, 0, 0, NULL }
+};
+
+static int
+dissect_dop_ACIItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+                                   ACIItem_sequence, hf_index, ett_dop_ACIItem);
+
+  return offset;
+}
+
 /*--- PDUs ---*/
 
 static void dissect_DSEType_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
@@ -1728,10 +2379,13 @@ static void dissect_NHOBSuperiorToSubordinate_PDU(tvbuff_t *tvb, packet_info *pi
 static void dissect_NHOBSubordinateToSuperior_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
   dissect_dop_NHOBSubordinateToSuperior(FALSE, tvb, 0, pinfo, tree, hf_dop_NHOBSubordinateToSuperior_PDU);
 }
+static void dissect_ACIItem_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+  dissect_dop_ACIItem(FALSE, tvb, 0, pinfo, tree, hf_dop_ACIItem_PDU);
+}
 
 
 /*--- End of included file: packet-dop-fn.c ---*/
-#line 75 "packet-dop-template.c"
+#line 76 "packet-dop-template.c"
 
 static int
 call_dop_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, char *col_info)
@@ -1921,6 +2575,10 @@ void proto_register_dop(void) {
       { "NHOBSubordinateToSuperior", "dop.NHOBSubordinateToSuperior",
         FT_NONE, BASE_NONE, NULL, 0,
         "NHOBSubordinateToSuperior", HFILL }},
+    { &hf_dop_ACIItem_PDU,
+      { "ACIItem", "dop.ACIItem",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ACIItem", HFILL }},
     { &hf_dop_ae_title,
       { "ae-title", "dop.ae_title",
         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
@@ -2257,6 +2915,202 @@ void proto_register_dop(void) {
       { "alias", "dop.alias",
         FT_BOOLEAN, 8, NULL, 0,
         "SubordinateToSuperior/alias", HFILL }},
+    { &hf_dop_identificationTag,
+      { "identificationTag", "dop.identificationTag",
+        FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
+        "ACIItem/identificationTag", HFILL }},
+    { &hf_dop_precedence,
+      { "precedence", "dop.precedence",
+        FT_INT32, BASE_DEC, NULL, 0,
+        "", HFILL }},
+    { &hf_dop_authenticationLevel,
+      { "authenticationLevel", "dop.authenticationLevel",
+        FT_UINT32, BASE_DEC, VALS(dop_AuthenticationLevel_vals), 0,
+        "ACIItem/authenticationLevel", HFILL }},
+    { &hf_dop_itemOrUserFirst,
+      { "itemOrUserFirst", "dop.itemOrUserFirst",
+        FT_UINT32, BASE_DEC, VALS(dop_T_itemOrUserFirst_vals), 0,
+        "ACIItem/itemOrUserFirst", HFILL }},
+    { &hf_dop_itemFirst,
+      { "itemFirst", "dop.itemFirst",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ACIItem/itemOrUserFirst/itemFirst", HFILL }},
+    { &hf_dop_protectedItems,
+      { "protectedItems", "dop.protectedItems",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "", HFILL }},
+    { &hf_dop_itemPermissions,
+      { "itemPermissions", "dop.itemPermissions",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ACIItem/itemOrUserFirst/itemFirst/itemPermissions", HFILL }},
+    { &hf_dop_itemPermissions_item,
+      { "Item", "dop.itemPermissions_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ACIItem/itemOrUserFirst/itemFirst/itemPermissions/_item", HFILL }},
+    { &hf_dop_userFirst,
+      { "userFirst", "dop.userFirst",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ACIItem/itemOrUserFirst/userFirst", HFILL }},
+    { &hf_dop_userClasses,
+      { "userClasses", "dop.userClasses",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "", HFILL }},
+    { &hf_dop_userPermissions,
+      { "userPermissions", "dop.userPermissions",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ACIItem/itemOrUserFirst/userFirst/userPermissions", HFILL }},
+    { &hf_dop_userPermissions_item,
+      { "Item", "dop.userPermissions_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ACIItem/itemOrUserFirst/userFirst/userPermissions/_item", HFILL }},
+    { &hf_dop_entry,
+      { "entry", "dop.entry",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ProtectedItems/entry", HFILL }},
+    { &hf_dop_allUserAttributeTypes,
+      { "allUserAttributeTypes", "dop.allUserAttributeTypes",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ProtectedItems/allUserAttributeTypes", HFILL }},
+    { &hf_dop_attributeType,
+      { "attributeType", "dop.attributeType",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/attributeType", HFILL }},
+    { &hf_dop_attributeType_item,
+      { "Item", "dop.attributeType_item",
+        FT_OID, BASE_NONE, NULL, 0,
+        "ProtectedItems/attributeType/_item", HFILL }},
+    { &hf_dop_allAttributeValues,
+      { "allAttributeValues", "dop.allAttributeValues",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/allAttributeValues", HFILL }},
+    { &hf_dop_allAttributeValues_item,
+      { "Item", "dop.allAttributeValues_item",
+        FT_OID, BASE_NONE, NULL, 0,
+        "ProtectedItems/allAttributeValues/_item", HFILL }},
+    { &hf_dop_allUserAttributeTypesAndValues,
+      { "allUserAttributeTypesAndValues", "dop.allUserAttributeTypesAndValues",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ProtectedItems/allUserAttributeTypesAndValues", HFILL }},
+    { &hf_dop_attributeValue,
+      { "attributeValue", "dop.attributeValue",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/attributeValue", HFILL }},
+    { &hf_dop_attributeValue_item,
+      { "Item", "dop.attributeValue_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ProtectedItems/attributeValue/_item", HFILL }},
+    { &hf_dop_selfValue,
+      { "selfValue", "dop.selfValue",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/selfValue", HFILL }},
+    { &hf_dop_selfValue_item,
+      { "Item", "dop.selfValue_item",
+        FT_OID, BASE_NONE, NULL, 0,
+        "ProtectedItems/selfValue/_item", HFILL }},
+    { &hf_dop_rangeOfValues,
+      { "rangeOfValues", "dop.rangeOfValues",
+        FT_UINT32, BASE_DEC, VALS(dap_Filter_vals), 0,
+        "ProtectedItems/rangeOfValues", HFILL }},
+    { &hf_dop_maxValueCount,
+      { "maxValueCount", "dop.maxValueCount",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/maxValueCount", HFILL }},
+    { &hf_dop_maxValueCount_item,
+      { "Item", "dop.maxValueCount_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ProtectedItems/maxValueCount/_item", HFILL }},
+    { &hf_dop_maxImmSub,
+      { "maxImmSub", "dop.maxImmSub",
+        FT_INT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/maxImmSub", HFILL }},
+    { &hf_dop_restrictedBy,
+      { "restrictedBy", "dop.restrictedBy",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/restrictedBy", HFILL }},
+    { &hf_dop_restrictedBy_item,
+      { "Item", "dop.restrictedBy_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ProtectedItems/restrictedBy/_item", HFILL }},
+    { &hf_dop_contexts,
+      { "contexts", "dop.contexts",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "ProtectedItems/contexts", HFILL }},
+    { &hf_dop_contexts_item,
+      { "Item", "dop.contexts_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "ProtectedItems/contexts/_item", HFILL }},
+    { &hf_dop_classes,
+      { "classes", "dop.classes",
+        FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
+        "ProtectedItems/classes", HFILL }},
+    { &hf_dop_type,
+      { "type", "dop.type",
+        FT_OID, BASE_NONE, NULL, 0,
+        "", HFILL }},
+    { &hf_dop_maxCount,
+      { "maxCount", "dop.maxCount",
+        FT_INT32, BASE_DEC, NULL, 0,
+        "MaxValueCount/maxCount", HFILL }},
+    { &hf_dop_valuesIn,
+      { "valuesIn", "dop.valuesIn",
+        FT_OID, BASE_NONE, NULL, 0,
+        "RestrictedValue/valuesIn", HFILL }},
+    { &hf_dop_allUsers,
+      { "allUsers", "dop.allUsers",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "UserClasses/allUsers", HFILL }},
+    { &hf_dop_thisEntry,
+      { "thisEntry", "dop.thisEntry",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "UserClasses/thisEntry", HFILL }},
+    { &hf_dop_name,
+      { "name", "dop.name",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "UserClasses/name", HFILL }},
+    { &hf_dop_name_item,
+      { "Item", "dop.name_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "UserClasses/name/_item", HFILL }},
+    { &hf_dop_userGroup,
+      { "userGroup", "dop.userGroup",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "UserClasses/userGroup", HFILL }},
+    { &hf_dop_userGroup_item,
+      { "Item", "dop.userGroup_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "UserClasses/userGroup/_item", HFILL }},
+    { &hf_dop_subtree,
+      { "subtree", "dop.subtree",
+        FT_UINT32, BASE_DEC, NULL, 0,
+        "UserClasses/subtree", HFILL }},
+    { &hf_dop_subtree_item,
+      { "Item", "dop.subtree_item",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "UserClasses/subtree/_item", HFILL }},
+    { &hf_dop_grantsAndDenials,
+      { "grantsAndDenials", "dop.grantsAndDenials",
+        FT_BYTES, BASE_HEX, NULL, 0,
+        "", HFILL }},
+    { &hf_dop_basicLevels,
+      { "basicLevels", "dop.basicLevels",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "AuthenticationLevel/basicLevels", HFILL }},
+    { &hf_dop_level,
+      { "level", "dop.level",
+        FT_UINT32, BASE_DEC, VALS(dop_T_level_vals), 0,
+        "AuthenticationLevel/basicLevels/level", HFILL }},
+    { &hf_dop_localQualifier,
+      { "localQualifier", "dop.localQualifier",
+        FT_INT32, BASE_DEC, NULL, 0,
+        "AuthenticationLevel/basicLevels/localQualifier", HFILL }},
+    { &hf_dop_signed,
+      { "signed", "dop.signed",
+        FT_BOOLEAN, 8, NULL, 0,
+        "AuthenticationLevel/basicLevels/signed", HFILL }},
+    { &hf_dop_other,
+      { "other", "dop.other",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "AuthenticationLevel/other", HFILL }},
     { &hf_dop_DSEType_root,
       { "root", "dop.root",
         FT_BOOLEAN, 8, NULL, 0x80,
@@ -2325,9 +3179,113 @@ void proto_register_dop(void) {
       { "familyMember", "dop.familyMember",
         FT_BOOLEAN, 8, NULL, 0x40,
         "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantAdd,
+      { "grantAdd", "dop.grantAdd",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyAdd,
+      { "denyAdd", "dop.denyAdd",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantDiscloseOnError,
+      { "grantDiscloseOnError", "dop.grantDiscloseOnError",
+        FT_BOOLEAN, 8, NULL, 0x20,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyDiscloseOnError,
+      { "denyDiscloseOnError", "dop.denyDiscloseOnError",
+        FT_BOOLEAN, 8, NULL, 0x10,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantRead,
+      { "grantRead", "dop.grantRead",
+        FT_BOOLEAN, 8, NULL, 0x08,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyRead,
+      { "denyRead", "dop.denyRead",
+        FT_BOOLEAN, 8, NULL, 0x04,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantRemove,
+      { "grantRemove", "dop.grantRemove",
+        FT_BOOLEAN, 8, NULL, 0x02,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyRemove,
+      { "denyRemove", "dop.denyRemove",
+        FT_BOOLEAN, 8, NULL, 0x01,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantBrowse,
+      { "grantBrowse", "dop.grantBrowse",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyBrowse,
+      { "denyBrowse", "dop.denyBrowse",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantExport,
+      { "grantExport", "dop.grantExport",
+        FT_BOOLEAN, 8, NULL, 0x20,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyExport,
+      { "denyExport", "dop.denyExport",
+        FT_BOOLEAN, 8, NULL, 0x10,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantImport,
+      { "grantImport", "dop.grantImport",
+        FT_BOOLEAN, 8, NULL, 0x08,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyImport,
+      { "denyImport", "dop.denyImport",
+        FT_BOOLEAN, 8, NULL, 0x04,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantModify,
+      { "grantModify", "dop.grantModify",
+        FT_BOOLEAN, 8, NULL, 0x02,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyModify,
+      { "denyModify", "dop.denyModify",
+        FT_BOOLEAN, 8, NULL, 0x01,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantRename,
+      { "grantRename", "dop.grantRename",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyRename,
+      { "denyRename", "dop.denyRename",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantReturnDN,
+      { "grantReturnDN", "dop.grantReturnDN",
+        FT_BOOLEAN, 8, NULL, 0x20,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyReturnDN,
+      { "denyReturnDN", "dop.denyReturnDN",
+        FT_BOOLEAN, 8, NULL, 0x10,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantCompare,
+      { "grantCompare", "dop.grantCompare",
+        FT_BOOLEAN, 8, NULL, 0x08,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyCompare,
+      { "denyCompare", "dop.denyCompare",
+        FT_BOOLEAN, 8, NULL, 0x04,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantFilterMatch,
+      { "grantFilterMatch", "dop.grantFilterMatch",
+        FT_BOOLEAN, 8, NULL, 0x02,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyFilterMatch,
+      { "denyFilterMatch", "dop.denyFilterMatch",
+        FT_BOOLEAN, 8, NULL, 0x01,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_grantInvoke,
+      { "grantInvoke", "dop.grantInvoke",
+        FT_BOOLEAN, 8, NULL, 0x80,
+        "", HFILL }},
+    { &hf_dop_GrantsAndDenials_denyInvoke,
+      { "denyInvoke", "dop.denyInvoke",
+        FT_BOOLEAN, 8, NULL, 0x40,
+        "", HFILL }},
 
 /*--- End of included file: packet-dop-hfarr.c ---*/
-#line 218 "packet-dop-template.c"
+#line 219 "packet-dop-template.c"
   };
 
   /* List of subtrees */
@@ -2381,9 +3339,31 @@ void proto_register_dop(void) {
     &ett_dop_NonSpecificHierarchicalAgreement,
     &ett_dop_NHOBSuperiorToSubordinate,
     &ett_dop_NHOBSubordinateToSuperior,
+    &ett_dop_ACIItem,
+    &ett_dop_T_itemOrUserFirst,
+    &ett_dop_T_itemFirst,
+    &ett_dop_SET_OF_ItemPermission,
+    &ett_dop_T_userFirst,
+    &ett_dop_SET_OF_UserPermission,
+    &ett_dop_ProtectedItems,
+    &ett_dop_SET_OF_AttributeType,
+    &ett_dop_SET_OF_AttributeTypeAndValue,
+    &ett_dop_SET_OF_MaxValueCount,
+    &ett_dop_SET_OF_RestrictedValue,
+    &ett_dop_SET_OF_ContextAssertion,
+    &ett_dop_MaxValueCount,
+    &ett_dop_RestrictedValue,
+    &ett_dop_UserClasses,
+    &ett_dop_SET_OF_NameAndOptionalUID,
+    &ett_dop_SET_OF_SubtreeSpecification,
+    &ett_dop_ItemPermission,
+    &ett_dop_UserPermission,
+    &ett_dop_AuthenticationLevel,
+    &ett_dop_T_basicLevels,
+    &ett_dop_GrantsAndDenials,
 
 /*--- End of included file: packet-dop-ettarr.c ---*/
-#line 224 "packet-dop-template.c"
+#line 225 "packet-dop-template.c"
   };
 
   module_t *dop_module;
@@ -2435,10 +3415,13 @@ void proto_reg_handoff_dop(void) {
   register_ber_oid_dissector("dop.modify.rolea.2.5.19.3", dissect_NHOBSuperiorToSubordinate_PDU, proto_dop, "non-specific-hierarchical-modify-rolea");
   register_ber_oid_dissector("dop.establish.roleb.2.5.19.3", dissect_NHOBSubordinateToSuperior_PDU, proto_dop, "non-specific-hierarchical-establish-roleb");
   register_ber_oid_dissector("dop.modify.roleb.2.5.19.3", dissect_NHOBSubordinateToSuperior_PDU, proto_dop, "non-specific-hierarchical-modify-roleb");
+  register_ber_oid_dissector("2.5.24.4", dissect_ACIItem_PDU, proto_dop, "id-aca-prescriptiveACI");
+  register_ber_oid_dissector("2.5.24.5", dissect_ACIItem_PDU, proto_dop, "id-aca-entryACI");
+  register_ber_oid_dissector("2.5.24.6", dissect_ACIItem_PDU, proto_dop, "id-aca-subentryACI");
 
 
 /*--- End of included file: packet-dop-dis-tab.c ---*/
-#line 259 "packet-dop-template.c"
+#line 260 "packet-dop-template.c"
   /* APPLICATION CONTEXT */
 
   register_ber_oid_name("2.5.3.3", "id-ac-directory-operational-binding-management");
@@ -2456,6 +3439,23 @@ void proto_reg_handoff_dop(void) {
   register_ber_oid_name("2.5.19.2", "hierarchical-agreement");
   register_ber_oid_name("2.5.19.3", "non-specific-hierarchical-agreement");
 
+  /* ACCESS CONTROL SCHEMES */
+  register_ber_oid_name("2.5.28.1", "basic-ACS");
+  register_ber_oid_name("2.5.28.2", "simplified-ACS");
+  register_ber_oid_name("2.5.28.3", "ruleBased-ACS");
+  register_ber_oid_name("2.5.28.4", "ruleAndBasic-ACS");
+  register_ber_oid_name("2.5.28.5", "ruleAndSimple-ACS");
+
+  /* ADMINISTRATIVE ROLES */
+  register_ber_oid_name("2.5.23.1", "id-ar-autonomousArea");
+  register_ber_oid_name("2.5.23.2", "id-ar-accessControlSpecificArea");
+  register_ber_oid_name("2.5.23.3", "id-ar-accessControlInnerArea");
+  register_ber_oid_name("2.5.23.4", "id-ar-subschemaAdminSpecificArea");
+  register_ber_oid_name("2.5.23.5", "id-ar-collectiveAttributeSpecificArea");
+  register_ber_oid_name("2.5.23.6", "id-ar-collectiveAttributeInnerArea");
+  register_ber_oid_name("2.5.23.7", "id-ar-contextDefaultSpecificArea");
+  register_ber_oid_name("2.5.23.8", "id-ar-serviceSpecificArea");
+
   /* remember the tpkt handler for change in preferences */
   tpkt_handle = find_dissector("tpkt");
 
index b5077a6d5cb7221b71b9d4a25e7671110159d825..e5941bee36f07d6b927bb840ce02772eaeabd171 100644 (file)
@@ -1,6 +1,6 @@
 /* Do not modify this file.                                                   */
 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
-/* .\packet-dop.h                                                             */
+/* ./packet-dop.h                                                             */
 /* ../../tools/asn2eth.py -X -b -e -p dop -c dop.cnf -s packet-dop-template dop.asn */
 
 /* Input file: packet-dop-template.h */
index 98f3c9011022fe658808959e56919851945abd44..56ac22c9a28638dd74d70513fcc8b64b71a0a7f7 100644 (file)
@@ -372,7 +372,7 @@ static int dissect_description(packet_info *pinfo, proto_tree *tree, tvbuff_t *t
 
 static int
 dissect_x509if_AttributeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 130 "x509if.cnf"
+#line 140 "x509if.cnf"
   const char *fmt; 
   const char *name;
 
@@ -433,15 +433,20 @@ static int dissect_restrictionType(packet_info *pinfo, proto_tree *tree, tvbuff_
 
 int
 dissect_x509if_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 160 "x509if.cnf"
+#line 170 "x509if.cnf"
   int old_offset = offset;
   tvbuff_t     *out_tvb;
   char         *value = NULL;
   const char   *fmt; 
   const char   *name = NULL;
+  const char    *orig_oid = object_identifier_id;
 
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
 
+  /* in dissecting the value we may have overridden the OID of the value - which is
+     a problem if there are multiple values */
+  object_identifier_id = orig_oid;
+
   /* try and dissect as a string */
   dissect_ber_octet_string(FALSE, pinfo, NULL, tvb, old_offset, hf_x509if_any_string, &out_tvb);
   
@@ -501,7 +506,7 @@ static int dissect_selectedValues_item(packet_info *pinfo, proto_tree *tree, tvb
 
 static int
 dissect_x509if_ValuesWithContextValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 207 "x509if.cnf"
+#line 222 "x509if.cnf"
   offset=call_ber_oid_callback("unknown", tvb, offset, pinfo, tree);
 
 
@@ -686,7 +691,7 @@ static int dissect_ca_contextType(packet_info *pinfo, proto_tree *tree, tvbuff_t
 
 static int
 dissect_x509if_ContextValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 124 "x509if.cnf"
+#line 134 "x509if.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
 
 
@@ -785,7 +790,7 @@ static const ber_sequence_t AttributeValueAssertion_sequence[] = {
 
 int
 dissect_x509if_AttributeValueAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 285 "x509if.cnf"
+#line 299 "x509if.cnf"
 
        ava_hf_index = hf_index;
        last_ava = ep_alloc(MAX_AVA_STR_LEN); *last_ava = '\0';
@@ -887,7 +892,7 @@ dissect_x509if_AttributeTypeAndDistinguishedValue(gboolean implicit_tag _U_, tvb
 
 static int
 dissect_x509if_RelativeDistinguishedName_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 238 "x509if.cnf"
+#line 253 "x509if.cnf"
 
   if(!rdn_one_value) {
     top_of_rdn = tree;
@@ -918,7 +923,7 @@ static const ber_sequence_t RelativeDistinguishedName_set_of[1] = {
 
 int
 dissect_x509if_RelativeDistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 210 "x509if.cnf"
+#line 225 "x509if.cnf"
   char *temp_dn;
 
   rdn_one_value = FALSE;
@@ -957,7 +962,7 @@ dissect_x509if_RelativeDistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tv
 
 static int
 dissect_x509if_RDNSequence_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 274 "x509if.cnf"
+#line 288 "x509if.cnf"
 
   if(!dn_one_rdn)  {
     /* this is the first element - record the top */
@@ -984,7 +989,7 @@ static const ber_sequence_t RDNSequence_sequence_of[1] = {
 
 int
 dissect_x509if_RDNSequence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 253 "x509if.cnf"
+#line 268 "x509if.cnf"
   const char *fmt; 
 
   dn_one_rdn = FALSE; /* reset */
@@ -1005,7 +1010,6 @@ dissect_x509if_RDNSequence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
        col_append_fstr(pinfo->cinfo, COL_INFO, " %s%s", fmt, last_dn);
   }
 
-  last_dn = NULL;
 
 
 
@@ -1506,7 +1510,7 @@ static int dissect_level(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, in
 
 static int
 dissect_x509if_SelectedValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 198 "x509if.cnf"
+#line 213 "x509if.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
 
 
@@ -1549,7 +1553,7 @@ static int dissect_entryType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb
 
 static int
 dissect_x509if_DefaultValueValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-#line 204 "x509if.cnf"
+#line 219 "x509if.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
 
 
@@ -2959,6 +2963,12 @@ void proto_reg_handoff_x509if(void) {
   register_ber_oid_dissector("2.5.4.33", dissect_DistinguishedName_PDU, proto_x509if, "id-at-roleOccupant");
   register_ber_oid_dissector("2.5.4.34", dissect_DistinguishedName_PDU, proto_x509if, "id-at-seeAlso");
   register_ber_oid_dissector("2.5.4.49", dissect_DistinguishedName_PDU, proto_x509if, "id-at-distinguishedName");
+  register_ber_oid_dissector("2.5.18.3", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-creatorsName");
+  register_ber_oid_dissector("2.5.18.4", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-modifiersName");
+  register_ber_oid_dissector("2.5.18.10", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-subschemaSubentry");
+  register_ber_oid_dissector("2.5.18.11", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-subschemaSubentry");
+  register_ber_oid_dissector("2.5.18.12", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-collectiveAttributeSubentry");
+  register_ber_oid_dissector("2.5.18.13", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-contextDefaultSubentry");
   register_ber_oid_dissector("2.6.5.2.5", dissect_DistinguishedName_PDU, proto_x509if, "id-at-mhs-message-store-dn");
   register_ber_oid_dissector("2.6.5.2.14", dissect_DistinguishedName_PDU, proto_x509if, "id-at-mhs-dl-related-lists");
   register_ber_oid_dissector("2.16.840.1.101.2.2.1.3", dissect_DistinguishedName_PDU, proto_x509if, "id-at-alternateRecipient");
index adc41eada93ab0fdc1a6111fa97f932d00902319..d218e10b69995293c0c350f768970737f1da6541 100644 (file)
@@ -2831,6 +2831,13 @@ void proto_reg_handoff_x509sat(void) {
   register_ber_oid_dissector("2.5.4.65", dissect_DirectoryString_PDU, proto_x509sat, "id-at-pseudonym");
   register_ber_oid_dissector("2.5.4.66", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-at-communuicationsService");
   register_ber_oid_dissector("2.5.4.67", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-at-communuicationsNetwork");
+  register_ber_oid_dissector("2.5.18.1", dissect_SyntaxGeneralizedTime_PDU, proto_x509sat, "id-oa-createTimeStamp");
+  register_ber_oid_dissector("2.5.18.2", dissect_SyntaxGeneralizedTime_PDU, proto_x509sat, "id-oa-modifyTimeStamp");
+  register_ber_oid_dissector("2.5.18.5", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-oa-administrativeRole");
+  register_ber_oid_dissector("2.5.18.7", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-oa-collectiveExclusions");
+  register_ber_oid_dissector("2.5.18.8", dissect_SyntaxGeneralizedTime_PDU, proto_x509sat, "id-oa-subschemaTimeStamp");
+  register_ber_oid_dissector("2.5.18.9", dissect_Boolean_PDU, proto_x509sat, "id-oa-hasSubordinates");
+  register_ber_oid_dissector("2.5.24.1", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-aca-accessControlScheme");
   register_ber_oid_dissector("2.6.5.2.8", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-at-mhs-supported-automatic-actions");
   register_ber_oid_dissector("2.6.5.2.10", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-at-mhs-supported-attributes");
   register_ber_oid_dissector("2.6.5.2.11", dissect_ObjectIdentifier_PDU, proto_x509sat, "id-at-mhs-supported-matching-rules");