diff options
-rw-r--r-- | asn1/dap/dap-exp.cnf | 2 | ||||
-rw-r--r-- | asn1/dap/dap.cnf | 27 | ||||
-rw-r--r-- | asn1/dop/dop.asn | 213 | ||||
-rw-r--r-- | asn1/dop/dop.cnf | 18 | ||||
-rw-r--r-- | asn1/dop/packet-dop-template.c | 18 | ||||
-rw-r--r-- | asn1/x509if/x509if.cnf | 16 | ||||
-rw-r--r-- | asn1/x509sat/x509sat.cnf | 9 | ||||
-rw-r--r-- | epan/dissectors/packet-dap.c | 70 | ||||
-rw-r--r-- | epan/dissectors/packet-dap.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-dop.c | 1050 | ||||
-rw-r--r-- | epan/dissectors/packet-dop.h | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-x509if.c | 34 | ||||
-rw-r--r-- | epan/dissectors/packet-x509sat.c | 7 |
13 files changed, 1376 insertions, 94 deletions
diff --git a/asn1/dap/dap-exp.cnf b/asn1/dap/dap-exp.cnf index 60efa31464..185cd1f698 100644 --- a/asn1/dap/dap-exp.cnf +++ b/asn1/dap/dap-exp.cnf @@ -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 diff --git a/asn1/dap/dap.cnf b/asn1/dap/dap.cnf index a44d0289d5..3c82a0a64b 100644 --- a/asn1/dap/dap.cnf +++ b/asn1/dap/dap.cnf @@ -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,")"); + } } } diff --git a/asn1/dop/dop.asn b/asn1/dop/dop.asn index 626997c7c6..8c0cfc8583 100644 --- a/asn1/dop/dop.asn +++ b/asn1/dop/dop.asn @@ -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 diff --git a/asn1/dop/dop.cnf b/asn1/dop/dop.cnf index ad192bde1e..99e6cd83e2 100644 --- a/asn1/dop/dop.cnf +++ b/asn1/dop/dop.cnf @@ -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); + diff --git a/asn1/dop/packet-dop-template.c b/asn1/dop/packet-dop-template.c index da0c9f6572..701d2b26ea 100644 --- a/asn1/dop/packet-dop-template.c +++ b/asn1/dop/packet-dop-template.c @@ -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"); diff --git a/asn1/x509if/x509if.cnf b/asn1/x509if/x509if.cnf index f3726d9291..66bfd93c19 100644 --- a/asn1/x509if/x509if.cnf +++ b/asn1/x509if/x509if.cnf @@ -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 diff --git a/asn1/x509sat/x509sat.cnf b/asn1/x509sat/x509sat.cnf index 005c27e59e..0b8aa7afcf 100644 --- a/asn1/x509sat/x509sat.cnf +++ b/asn1/x509sat/x509sat.cnf @@ -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" diff --git a/epan/dissectors/packet-dap.c b/epan/dissectors/packet-dap.c index 66277f7ff5..51501343ce 100644 --- a/epan/dissectors/packet-dap.c +++ b/epan/dissectors/packet-dap.c @@ -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, diff --git a/epan/dissectors/packet-dap.h b/epan/dissectors/packet-dap.h index 667ffe097a..7756cf6637 100644 --- a/epan/dissectors/packet-dap.h +++ b/epan/dissectors/packet-dap.h @@ -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); diff --git a/epan/dissectors/packet-dop.c b/epan/dissectors/packet-dop.c index 0f0b037225..84f41968c7 100644 --- a/epan/dissectors/packet-dop.c +++ b/epan/dissectors/packet-dop.c @@ -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"); diff --git a/epan/dissectors/packet-dop.h b/epan/dissectors/packet-dop.h index b5077a6d5c..e5941bee36 100644 --- a/epan/dissectors/packet-dop.h +++ b/epan/dissectors/packet-dop.h @@ -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 */ diff --git a/epan/dissectors/packet-x509if.c b/epan/dissectors/packet-x509if.c index 98f3c90110..56ac22c9a2 100644 --- a/epan/dissectors/packet-x509if.c +++ b/epan/dissectors/packet-x509if.c @@ -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"); diff --git a/epan/dissectors/packet-x509sat.c b/epan/dissectors/packet-x509sat.c index adc41eada9..d218e10b69 100644 --- a/epan/dissectors/packet-x509sat.c +++ b/epan/dissectors/packet-x509sat.c @@ -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"); |