aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--asn1/x509if/InformationFramework.asn478
-rw-r--r--asn1/x509if/x509if.cnf57
-rw-r--r--asn1/x509if/x509if_exp.cnf75
-rw-r--r--epan/dissectors/packet-x509if.c2223
-rw-r--r--epan/dissectors/packet-x509if.h39
5 files changed, 2623 insertions, 249 deletions
diff --git a/asn1/x509if/InformationFramework.asn b/asn1/x509if/InformationFramework.asn
index 01b8c213b2..30f81b0fca 100644
--- a/asn1/x509if/InformationFramework.asn
+++ b/asn1/x509if/InformationFramework.asn
@@ -15,7 +15,7 @@ IMPORTS
usefulDefinitions(0) 3}
commonName, generalizedTimeMatch, generalizedTimeOrderingMatch, booleanMatch,
integerMatch, integerOrderingMatch, objectIdentifierFirstComponentMatch,
- integerFirstComponentMatch, DirectoryString{}
+ integerFirstComponentMatch, DirectoryString
FROM SelectedAttributeTypes selectedAttributeTypes
TypeAndContextAssertion, ServiceControlOptions, SearchControlOptions,
HierarchySelections, FamilyGrouping, FamilyReturn
@@ -27,48 +27,49 @@ AttributeId ::= OBJECT IDENTIFIER
AttributeValue ::= ANY
+ValuesWithContextValue ::= ANY
+
-- attribute data types
Attribute ::= SEQUENCE {
- type AttributeId,
- values
- SET SIZE (0..MAX) OF AttributeValue
--- valuesWithContext
--- SET SIZE (1..MAX) OF
--- SEQUENCE {value ANY,
--- contextList SET SIZE (1..MAX) OF Context} OPTIONAL
+ type AttributeId,
+ values SET OF AttributeValue,
+ valuesWithContext SET OF SEQUENCE {
+ value ValuesWithContextValue,
+ contextList SET OF Context
+ } OPTIONAL
}
AttributeType ::= AttributeId
---
--- Context ::= SEQUENCE {
--- contextType AttributeId,
--- contextValues
--- SET SIZE (1..MAX) OF ANY,
--- fallback BOOLEAN DEFAULT FALSE
--- }
---
--- AttributeValueAssertion ::= SEQUENCE {
--- type AttributeId,
--- assertion
--- ATTRIBUTE.&equality-match.&AssertionType({SupportedAttributes}{@type}),
--- assertedContexts
--- CHOICE {allContexts [0] NULL,
--- selectedContexts [1] SET SIZE (1..MAX) OF ContextAssertion
--- } OPTIONAL
--- }
---
--- ContextAssertion ::= SEQUENCE {
--- contextType CONTEXT.&id({SupportedContexts}),
--- contextValues
--- SET SIZE (1..MAX) OF CONTEXT.&Assertion({SupportedContexts}{@contextType})
--- }
---
--- AttributeTypeAssertion ::= SEQUENCE {
--- type AttributeId,
--- assertedContexts SEQUENCE SIZE (1..MAX) OF ContextAssertion OPTIONAL
--- }
---
+Context ::= SEQUENCE {
+ contextType AttributeId,
+ contextValues SET OF AttributeValue,
+ fallback BOOLEAN OPTIONAL
+}
+
+AttributeValueAssertion ::= SEQUENCE {
+ type AttributeId,
+ assertion AttributeValue,
+ assertedContexts CHOICE {
+ allContexts [0] NULL,
+ selectedContexts [1] SET OF ContextAssertion
+ } OPTIONAL
+}
+
+ContextId ::= OBJECT IDENTIFIER
+
+ContextValue ::= ANY
+
+ContextAssertion ::= SEQUENCE {
+ contextType ContextId,
+ contextValues SET OF ContextValue
+}
+
+AttributeTypeAssertion ::= SEQUENCE {
+ type AttributeId,
+ assertedContexts SEQUENCE OF ContextAssertion OPTIONAL
+}
+
-- Definition of the following information object set is deferred, perhaps to standardized
-- profiles or to protocol implementation conformance statements. The set is required to
-- specify a table constraint on the values component of Attribute, the value component
@@ -83,6 +84,7 @@ AttributeType ::= AttributeId
-- {...}
--
-- naming data types
+
Name ::= CHOICE {
rdnSequence RDNSequence
}
@@ -97,42 +99,46 @@ RelativeDistinguishedName ::=
AttributeTypeAndDistinguishedValue ::= SEQUENCE {
type AttributeId,
value AttributeValue,
- primaryDistinguished BOOLEAN OPTIONAL
--- valuesWithContext
--- SET SIZE (1..MAX) OF
--- SEQUENCE {distingAttrValue
--- [0] ANY OPTIONAL,
--- contextList SET SIZE (1..MAX) OF Context} OPTIONAL
+ primaryDistinguished BOOLEAN OPTIONAL,
+ valuesWithContext SET OF SEQUENCE {
+ distingAttrValue [0] ValuesWithContextValue OPTIONAL,
+ contextList SET OF Context
+ } OPTIONAL
}
-- subtree data types
--- SubtreeSpecification ::= SEQUENCE {
--- base [0] LocalName DEFAULT {},
--- COMPONENTS OF ChopSpecification,
--- specificationFilter [4] Refinement OPTIONAL
--- }
---
+SubtreeSpecification ::= SEQUENCE {
+ base [0] LocalName OPTIONAL,
+ specificExclusions
+ [1] SET SIZE (1..MAX) OF
+ CHOICE {chopBefore [0] LocalName,
+ chopAfter [1] LocalName} OPTIONAL,
+ minimum [2] BaseDistance OPTIONAL,
+ maximum [3] BaseDistance OPTIONAL,
+ specificationFilter [4] Refinement OPTIONAL
+}
+
-- empty sequence specifies whole administrative area
--- LocalName ::= RDNSequence
---
--- ChopSpecification ::= SEQUENCE {
--- specificExclusions
--- [1] SET SIZE (1..MAX) OF
--- CHOICE {chopBefore [0] LocalName,
--- chopAfter [1] LocalName} OPTIONAL,
--- minimum [2] BaseDistance DEFAULT 0,
--- maximum [3] BaseDistance OPTIONAL
--- }
---
--- BaseDistance ::= INTEGER(0..MAX)
---
--- Refinement ::= CHOICE {
--- item [0] OBJECT-CLASS.&id,
--- and [1] SET OF Refinement,
--- or [2] SET OF Refinement,
--- not [3] Refinement
--- }
---
+LocalName ::= RDNSequence
+
+ChopSpecification ::= SEQUENCE {
+ specificExclusions
+ [1] SET SIZE (1..MAX) OF
+ CHOICE {chopBefore [0] LocalName,
+ chopAfter [1] LocalName} OPTIONAL,
+ minimum [2] BaseDistance OPTIONAL,
+ maximum [3] BaseDistance OPTIONAL
+}
+
+BaseDistance ::= INTEGER
+
+Refinement ::= CHOICE {
+ item [0] OBJECT IDENTIFIER,
+ and [1] SET OF Refinement,
+ or [2] SET OF Refinement,
+ not [3] Refinement
+}
+
-- OBJECT-CLASS information object class specification
-- OBJECT-CLASS ::= CLASS {
-- &Superclasses OBJECT-CLASS OPTIONAL,
@@ -199,11 +205,11 @@ ObjectClassKind ::= ENUMERATED {abstract(0), structural(1), auxiliary(2)}
-- [USAGE &usage]
-- ID &id
-- }
---
--- AttributeUsage ::= ENUMERATED {
--- userApplications(0), directoryOperation(1), distributedOperation(2),
--- dSAOperation(3)}
---
+
+AttributeUsage ::= ENUMERATED {
+ userApplications(0), directoryOperation(1), distributedOperation(2),
+ dSAOperation(3)}
+
-- attributes
-- objectClass ATTRIBUTE ::= {
-- WITH SYNTAX OBJECT IDENTIFIER
@@ -292,16 +298,16 @@ ObjectClassKind ::= ENUMERATED {abstract(0), structural(1), auxiliary(2)}
-- [SUPERIOR RULES &SuperiorStructureRules]
-- ID &id
-- }
---
--- DITStructureRule ::= SEQUENCE {
--- ruleIdentifier RuleIdentifier,
--- must be unique within the scope of the subschema
--- nameForm NAME-FORM.&id,
--- superiorStructureRules SET SIZE (1..MAX) OF RuleIdentifier OPTIONAL
--- }
---
--- RuleIdentifier ::= INTEGER
---
+
+DITStructureRule ::= SEQUENCE {
+ ruleIdentifier RuleIdentifier,
+-- must be unique within the scope of the subschema
+ nameForm OBJECT IDENTIFIER,
+ superiorStructureRules SET OF RuleIdentifier OPTIONAL
+}
+
+RuleIdentifier ::= INTEGER
+
-- CONTENT-RULE class and DIT content rule data types
-- CONTENT-RULE ::= CLASS {
-- &structuralClass OBJECT-CLASS.&id UNIQUE,
@@ -317,15 +323,15 @@ ObjectClassKind ::= ENUMERATED {abstract(0), structural(1), auxiliary(2)}
-- [MAY CONTAIN &Optional]
-- [MUST-NOT CONTAIN &Precluded]
-- }
---
--- DITContentRule ::= SEQUENCE {
--- structuralObjectClass OBJECT-CLASS.&id,
--- auxiliaries SET SIZE (1..MAX) OF OBJECT-CLASS.&id OPTIONAL,
--- mandatory [1] SET SIZE (1..MAX) OF AttributeId OPTIONAL,
--- optional [2] SET SIZE (1..MAX) OF AttributeId OPTIONAL,
--- precluded [3] SET SIZE (1..MAX) OF AttributeId OPTIONAL
--- }
---
+
+DITContentRule ::= SEQUENCE {
+ structuralObjectClass OBJECT IDENTIFIER,
+ auxiliaries SET OF OBJECT IDENTIFIER OPTIONAL,
+ mandatory [1] SET SIZE (1..MAX) OF AttributeId OPTIONAL,
+ optional [2] SET SIZE (1..MAX) OF AttributeId OPTIONAL,
+ precluded [3] SET SIZE (1..MAX) OF AttributeId OPTIONAL
+}
+
-- CONTEXT ::= CLASS {
-- &Type ,
-- &Assertion OPTIONAL,
@@ -334,13 +340,13 @@ ObjectClassKind ::= ENUMERATED {abstract(0), structural(1), auxiliary(2)}
-- [ASSERTED AS &Assertion]
-- ID &id
-- }
---
--- DITContextUse ::= SEQUENCE {
--- attributeType AttributeId,
--- mandatoryContexts [1] SET SIZE (1..MAX) OF CONTEXT.&id OPTIONAL,
--- optionalContexts [2] SET SIZE (1..MAX) OF CONTEXT.&id OPTIONAL
--- }
---
+
+DITContextUse ::= SEQUENCE {
+ attributeType AttributeId,
+ mandatoryContexts [1] SET OF OBJECT IDENTIFIER OPTIONAL,
+ optionalContexts [2] SET OF OBJECT IDENTIFIER OPTIONAL
+}
+
-- DIT-CONTEXT-USE-RULE ::= CLASS {
-- &attributeType AttributeId UNIQUE,
-- &Mandatory CONTEXT OPTIONAL,
@@ -524,14 +530,30 @@ ObjectClassKind ::= ENUMERATED {abstract(0), structural(1), auxiliary(2)}
-- USAGE directoryOperation
-- ID id-oa-searchRules
-- }
---
--- SearchRuleDescription ::= SEQUENCE {
--- COMPONENTS OF SearchRule,
--- name [28] SET SIZE (1..MAX) OF DirectoryString{ub-search} OPTIONAL,
--- description [29] DirectoryString{ub-search} OPTIONAL,
--- obsolete [30] BOOLEAN DEFAULT FALSE
--- }
---
+
+SearchRuleDescription ::= SEQUENCE {
+ id INTEGER,
+ dmdId [0] OBJECT IDENTIFIER,
+ serviceType [1] OBJECT IDENTIFIER OPTIONAL,
+ userClass [2] INTEGER OPTIONAL,
+ inputAttributeTypes [3] SEQUENCE OF RequestAttribute OPTIONAL,
+ attributeCombination [4] AttributeCombination OPTIONAL,
+ outputAttributeTypes [5] SEQUENCE OF ResultAttribute OPTIONAL,
+ defaultControls [6] ControlOptions OPTIONAL,
+ mandatoryControls [7] ControlOptions OPTIONAL,
+ searchRuleControls [8] ControlOptions OPTIONAL,
+-- familyGrouping [9] FamilyGrouping OPTIONAL,
+-- familyReturn [10] FamilyReturn OPTIONAL,
+ relaxation [11] RelaxationPolicy OPTIONAL,
+ additionalControl [12] SEQUENCE OF AttributeType OPTIONAL,
+ allowedSubset [13] AllowedSubset OPTIONAL,
+ imposedSubset [14] ImposedSubset OPTIONAL,
+ entryLimit [15] EntryLimit OPTIONAL,
+ name [28] SET OF DirectoryString OPTIONAL,
+ description [29] DirectoryString OPTIONAL,
+ obsolete [30] BOOLEAN OPTIONAL
+}
+
-- hierarchyLevel ATTRIBUTE ::= {
-- WITH SYNTAX INTEGER
-- EQUALITY MATCHING RULE integerMatch
@@ -559,141 +581,133 @@ ObjectClassKind ::= ENUMERATED {abstract(0), structural(1), auxiliary(2)}
-- ID id-oa-hierarchyParent
-- }
--
--- SearchRule ::= SEQUENCE {
--- COMPONENTS OF SearchRuleId,
--- serviceType [1] OBJECT IDENTIFIER OPTIONAL,
--- userClass [2] INTEGER OPTIONAL,
--- inputAttributeTypes
--- [3] SEQUENCE SIZE (1..MAX) OF RequestAttribute OPTIONAL,
--- attributeCombination [4] AttributeCombination DEFAULT and:{},
--- outputAttributeTypes [5] SEQUENCE SIZE (1..MAX) OF ResultAttribute OPTIONAL,
--- defaultControls [6] ControlOptions OPTIONAL,
--- mandatoryControls [7] ControlOptions OPTIONAL,
--- searchRuleControls [8] ControlOptions OPTIONAL,
--- familyGrouping [9] FamilyGrouping OPTIONAL,
--- familyReturn [10] FamilyReturn OPTIONAL,
--- relaxation [11] RelaxationPolicy OPTIONAL,
--- additionalControl [12] SEQUENCE SIZE (1..MAX) OF AttributeType OPTIONAL,
--- allowedSubset [13] AllowedSubset DEFAULT '111'B,
--- imposedSubset [14] ImposedSubset OPTIONAL,
--- entryLimit [15] EntryLimit OPTIONAL
--- }
---
--- SearchRuleId ::= SEQUENCE {id INTEGER,
--- dmdId [0] OBJECT IDENTIFIER
--- }
+SearchRule ::= SEQUENCE {
+ id INTEGER,
+ dmdId [0] OBJECT IDENTIFIER,
+ serviceType [1] OBJECT IDENTIFIER OPTIONAL,
+ userClass [2] INTEGER OPTIONAL,
+ inputAttributeTypes [3] SEQUENCE OF RequestAttribute OPTIONAL,
+ attributeCombination [4] AttributeCombination OPTIONAL,
+ outputAttributeTypes [5] SEQUENCE OF ResultAttribute OPTIONAL,
+ defaultControls [6] ControlOptions OPTIONAL,
+ mandatoryControls [7] ControlOptions OPTIONAL,
+ searchRuleControls [8] ControlOptions OPTIONAL,
+-- familyGrouping [9] FamilyGrouping OPTIONAL,
+-- familyReturn [10] FamilyReturn OPTIONAL,
+ relaxation [11] RelaxationPolicy OPTIONAL,
+ additionalControl [12] SEQUENCE OF AttributeType OPTIONAL,
+ allowedSubset [13] AllowedSubset OPTIONAL,
+ imposedSubset [14] ImposedSubset OPTIONAL,
+ entryLimit [15] EntryLimit OPTIONAL
+}
+
+SearchRuleId ::= SEQUENCE {
+ id INTEGER,
+ dmdId [0] OBJECT IDENTIFIER
+}
AllowedSubset ::= BIT STRING {baseObject(0), oneLevel(1), wholeSubtree(2)}
ImposedSubset ::= ENUMERATED {baseObject(0), oneLevel(1), wholeSubtree(2)}
--- RequestAttribute ::= SEQUENCE {
--- attributeType AttributeId,
--- includeSubtypes [0] BOOLEAN DEFAULT FALSE,
--- selectedValues
--- [1] SEQUENCE SIZE (0..MAX) OF
--- ANY OPTIONAL,
--- defaultValues
--- [2] SEQUENCE SIZE (0..MAX) OF
--- SEQUENCE {entryType OBJECT-CLASS.&id OPTIONAL,
--- values
--- SEQUENCE OF
--- ANY
--- } OPTIONAL,
--- contexts [3] SEQUENCE SIZE (0..MAX) OF ContextProfile OPTIONAL,
--- contextCombination [4] ContextCombination DEFAULT and:{},
--- matchingUse [5] SEQUENCE SIZE (1..MAX) OF MatchingUse OPTIONAL
--- }
---
--- ContextProfile ::= SEQUENCE {
--- contextType CONTEXT.&id({SupportedContexts}),
--- contextValue
--- SEQUENCE SIZE (1..MAX) OF
--- CONTEXT.&Assertion({SupportedContexts}{@contextType}) OPTIONAL
--- }
---
--- ContextCombination ::= CHOICE {
--- context [0] CONTEXT.&id,
--- and [1] SEQUENCE OF ContextCombination,
--- or [2] SEQUENCE OF ContextCombination,
--- not [3] ContextCombination
--- }
---
--- MatchingUse ::= SEQUENCE {
--- restrictionType MATCHING-RESTRICTION.&id({SupportedMatchingRestrictions}),
--- restrictionValue
--- MATCHING-RESTRICTION.&Restriction
--- ({SupportedMatchingRestrictions}{@restrictionType})
--- }
---
+SelectedValues ::= ANY
+
+DefaultValueType ::= OBJECT IDENTIFIER
+
+DefaultValueValues ::= ANY
+
+RequestAttribute ::= SEQUENCE {
+ attributeType AttributeId,
+ includeSubtypes [0] BOOLEAN OPTIONAL,
+ selectedValues [1] SEQUENCE OF SelectedValues OPTIONAL,
+ defaultValues [2] SEQUENCE OF SEQUENCE {
+ entryType DefaultValueType OPTIONAL,
+ values SEQUENCE OF DefaultValueValues
+ } OPTIONAL,
+ contexts [3] SEQUENCE OF ContextProfile OPTIONAL,
+ contextCombination [4] ContextCombination OPTIONAL,
+ matchingUse [5] SEQUENCE OF MatchingUse OPTIONAL
+}
+
+ContextProfile ::= SEQUENCE {
+ contextType AttributeId,
+ contextValue SEQUENCE OF AttributeValue OPTIONAL
+}
+
+ContextCombination ::= CHOICE {
+ context [0] OBJECT IDENTIFIER,
+ and [1] SEQUENCE OF ContextCombination,
+ or [2] SEQUENCE OF ContextCombination,
+ not [3] ContextCombination
+}
+
+MatchingUse ::= SEQUENCE {
+ restrictionType AttributeId,
+ restrictionValue AttributeValue
+}
+
-- Definition of the following information object set is deferred, perhaps to standardized
-- profiles or to protocol implementation conformance statements. The set is required to
-- specify a table constraint on the components of SupportedMatchingRestrictions
-- SupportedMatchingRestrictions MATCHING-RESTRICTION ::=
-- {...}
---
--- AttributeCombination ::= CHOICE {
--- attribute [0] AttributeType,
--- and [1] SEQUENCE OF AttributeCombination,
--- or [2] SEQUENCE OF AttributeCombination,
--- not [3] AttributeCombination
--- }
---
--- ResultAttribute ::= SEQUENCE {
--- attributeType AttributeId,
--- outputValues
--- CHOICE {selectedValues
--- SEQUENCE SIZE (1..MAX) OF
--- ANY,
--- matchedValuesOnly NULL} OPTIONAL,
--- contexts [0] SEQUENCE SIZE (1..MAX) OF ContextProfile OPTIONAL
--- }
---
--- OutputValues ::= CHOICE {
--- selectedValues
--- SEQUENCE SIZE (1..MAX) OF ANY,
--- matchedValuesOnly NULL
--- }
---
--- ControlOptions ::= SEQUENCE {
--- serviceControls [0] ServiceControlOptions DEFAULT {},
--- searchOptions [1] SearchControlOptions DEFAULT {searchAliases},
--- hierarchyOptions [2] HierarchySelections OPTIONAL
--- }
---
--- EntryLimit ::= SEQUENCE {default INTEGER,
--- max INTEGER
--- }
---
--- RelaxationPolicy ::= SEQUENCE {
--- basic [0] MRMapping DEFAULT {},
--- tightenings [1] SEQUENCE SIZE (1..MAX) OF MRMapping OPTIONAL,
--- relaxations [2] SEQUENCE SIZE (1..MAX) OF MRMapping OPTIONAL,
--- maximum [3] INTEGER OPTIONAL,
+
+AttributeCombination ::= CHOICE {
+ attribute [0] AttributeType,
+ and [1] SEQUENCE OF AttributeCombination,
+ or [2] SEQUENCE OF AttributeCombination,
+ not [3] AttributeCombination
+}
+
+ResultAttribute ::= SEQUENCE {
+ attributeType AttributeId,
+ outputValues CHOICE {
+ selectedValues SEQUENCE OF AttributeValue,
+ matchedValuesOnly NULL
+ } OPTIONAL,
+ contexts [0] SEQUENCE OF ContextProfile OPTIONAL
+}
+
+OutputValues ::= CHOICE {
+ selectedValues SEQUENCE OF AttributeValue,
+ matchedValuesOnly NULL
+}
+
+ControlOptions ::= SEQUENCE {
+-- serviceControls [0] ServiceControlOptions OPTIONAL,
+-- searchOptions [1] SearchControlOptions OPTIONAL,
+-- hierarchyOptions [2] HierarchySelections OPTIONAL
+}
+
+EntryLimit ::= SEQUENCE {default INTEGER,
+ max INTEGER
+}
+
+RelaxationPolicy ::= SEQUENCE {
+ basic [0] MRMapping OPTIONAL,
+ tightenings [1] SEQUENCE OF MRMapping OPTIONAL,
+ relaxations [2] SEQUENCE OF MRMapping OPTIONAL,
+ maximum [3] INTEGER OPTIONAL,
-- mandatory if tightenings is present
--- minimum [4] INTEGER DEFAULT 1
--- }
---
--- MRMapping ::= SEQUENCE {
--- mapping [0] SEQUENCE SIZE (1..MAX) OF Mapping OPTIONAL,
--- substitution [1] SEQUENCE SIZE (1..MAX) OF MRSubstitution OPTIONAL
--- }
---
--- Mapping ::= SEQUENCE {
--- mappingFunction
--- OBJECT IDENTIFIER
--- (CONSTRAINED BY { shall be an
---
--- object identifier of a mapping-based matching algorithm }),
--- level INTEGER DEFAULT 0
--- }
---
--- MRSubstitution ::= SEQUENCE {
--- attribute AttributeType,
--- oldMatchingRule [0] MATCHING-RULE.&id OPTIONAL,
--- newMatchingRule [1] MATCHING-RULE.&id OPTIONAL
--- }
---
+ minimum [4] INTEGER OPTIONAL
+}
+
+MRMapping ::= SEQUENCE {
+ mapping [0] SEQUENCE OF Mapping OPTIONAL,
+ substitution [1] SEQUENCE OF MRSubstitution OPTIONAL
+}
+
+Mapping ::= SEQUENCE {
+ mappingFunction OBJECT IDENTIFIER,
+ level INTEGER OPTIONAL
+}
+
+MRSubstitution ::= SEQUENCE {
+ attribute AttributeType,
+ oldMatchingRule [0] OBJECT IDENTIFIER OPTIONAL,
+ newMatchingRule [1] OBJECT IDENTIFIER OPTIONAL
+}
+
-- SEARCH-RULE ::= CLASS {
-- &dmdId OBJECT IDENTIFIER,
-- &serviceType OBJECT IDENTIFIER OPTIONAL,
diff --git a/asn1/x509if/x509if.cnf b/asn1/x509if/x509if.cnf
index e51db1fc3a..83725ac54b 100644
--- a/asn1/x509if/x509if.cnf
+++ b/asn1/x509if/x509if.cnf
@@ -4,14 +4,50 @@
# $Id$
#.MODULE_IMPORT
+SelectedAttributeTypes x509sat
+
+#.INCLUDE ../x509sat/x509sat_exp.cnf
#.EXPORTS
+AllowedSubset
Attribute
+AttributeCombination
AttributeType
+AttributeTypeAndDistinguishedValue
+AttributeTypeAssertion
+AttributeUsage
+AttributeValueAssertion
+BaseDistance
+ChopSpecification
+Context
+ContextAssertion
+ContextCombination
+ContextProfile
+ControlOptions
+DistinguishedName
+DITContentRule
+DITContextUse
+DITStructureRule
+EntryLimit
+ImposedSubset
+LocalName
+Mapping
+MatchingUse
+MRMapping
+MRSubstitution
Name
+OutputValues
+Refinement
RelativeDistinguishedName
-DistinguishedName
+RelaxationPolicy
RDNSequence
+RequestAttribute
+ResultAttribute
+RuleIdentifier
+SearchRule
+SearchRuleDescription
+SearchRuleId
+SubtreeSpecification
#.NO_EMIT
@@ -19,6 +55,13 @@ RDNSequence
#.FIELD_RENAME
+#.FN_BODY ContextId
+ offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
+ hf_x509if_object_identifier_id, object_identifier_id);
+
+#.FN_BODY ContextValue
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
#.FN_BODY AttributeId
offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
hf_x509if_object_identifier_id, object_identifier_id);
@@ -26,6 +69,18 @@ RDNSequence
#.FN_BODY AttributeValue
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+#.FN_BODY SelectedValues
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
+#.FN_BODY DefaultValueType
+ offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
+ hf_x509if_object_identifier_id, object_identifier_id);
+
+#.FN_BODY DefaultValueValues
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
+#.FN_BODY ValuesWithContextValue
+ offset=call_ber_oid_callback("unknown", tvb, offset, pinfo, tree);
#.END
diff --git a/asn1/x509if/x509if_exp.cnf b/asn1/x509if/x509if_exp.cnf
index 7b262b22a8..32b5ffd1c6 100644
--- a/asn1/x509if/x509if_exp.cnf
+++ b/asn1/x509if/x509if_exp.cnf
@@ -1,15 +1,84 @@
#.IMPORT_TAG
-Attribute BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+Attribute BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
AttributeType BER_CLASS_UNI BER_UNI_TAG_OID
-DistinguishedName BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
-Name BER_CLASS_ANY -1
+Context BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+AttributeValueAssertion BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+ContextAssertion BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+AttributeTypeAssertion BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+Name BER_CLASS_UNI -1/*choice*/
RDNSequence BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+DistinguishedName BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
RelativeDistinguishedName BER_CLASS_UNI BER_UNI_TAG_SET
+AttributeTypeAndDistinguishedValue BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+SubtreeSpecification BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+LocalName BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+ChopSpecification BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+BaseDistance BER_CLASS_UNI BER_UNI_TAG_INTEGER
+Refinement BER_CLASS_CON -1/*choice*/
+AttributeUsage BER_CLASS_UNI BER_UNI_TAG_ENUMERATED
+DITStructureRule BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+RuleIdentifier BER_CLASS_UNI BER_UNI_TAG_INTEGER
+DITContentRule BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+DITContextUse BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+SearchRuleDescription BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+SearchRule BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+SearchRuleId BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+AllowedSubset BER_CLASS_UNI BER_UNI_TAG_BITSTRING
+ImposedSubset BER_CLASS_UNI BER_UNI_TAG_ENUMERATED
+RequestAttribute BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+ContextProfile BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+ContextCombination BER_CLASS_CON -1/*choice*/
+MatchingUse BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+AttributeCombination BER_CLASS_CON -1/*choice*/
+ResultAttribute BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+OutputValues BER_CLASS_UNI -1/*choice*/
+ControlOptions BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+EntryLimit BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+RelaxationPolicy BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+MRMapping BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+Mapping BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
+MRSubstitution BER_CLASS_UNI BER_UNI_TAG_SEQUENCE
#.END
#.TYPE_ATTR
+Attribute TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
AttributeType TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+Context TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+AttributeValueAssertion TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+ContextAssertion TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+AttributeTypeAssertion TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
Name TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(Name_vals) BITMASK = 0
+RDNSequence TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+DistinguishedName TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
RelativeDistinguishedName TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+AttributeTypeAndDistinguishedValue TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+SubtreeSpecification TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+LocalName TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+ChopSpecification TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+BaseDistance TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+Refinement TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(Refinement_vals) BITMASK = 0
+AttributeUsage TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(AttributeUsage_vals) BITMASK = 0
+DITStructureRule TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+RuleIdentifier TYPE = FT_INT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+DITContentRule TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+DITContextUse TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+SearchRuleDescription TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+SearchRule TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+SearchRuleId TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+AllowedSubset TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0
+ImposedSubset TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(ImposedSubset_vals) BITMASK = 0
+RequestAttribute TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+ContextProfile TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+ContextCombination TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(ContextCombination_vals) BITMASK = 0
+MatchingUse TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+AttributeCombination TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(AttributeCombination_vals) BITMASK = 0
+ResultAttribute TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+OutputValues TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(OutputValues_vals) BITMASK = 0
+ControlOptions TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+EntryLimit TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+RelaxationPolicy TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+MRMapping TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+Mapping TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
+MRSubstitution TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
#.END
diff --git a/epan/dissectors/packet-x509if.c b/epan/dissectors/packet-x509if.c
index 8ccce304ea..c77425b19c 100644
--- a/epan/dissectors/packet-x509if.c
+++ b/epan/dissectors/packet-x509if.c
@@ -56,11 +56,139 @@ int hf_x509if_object_identifier_id = -1;
static int hf_x509if_type = -1; /* AttributeId */
static int hf_x509if_values = -1; /* SET_OF_AttributeValue */
static int hf_x509if_values_item = -1; /* AttributeValue */
+static int hf_x509if_valuesWithContext = -1; /* T_valuesWithContext */
+static int hf_x509if_valuesWithContext_item = -1; /* T_valuesWithContext_item */
+static int hf_x509if_value = -1; /* ValuesWithContextValue */
+static int hf_x509if_contextList = -1; /* SET_OF_Context */
+static int hf_x509if_contextList_item = -1; /* Context */
+static int hf_x509if_contextType = -1; /* AttributeId */
+static int hf_x509if_contextValues = -1; /* SET_OF_AttributeValue */
+static int hf_x509if_contextValues_item = -1; /* AttributeValue */
+static int hf_x509if_fallback = -1; /* BOOLEAN */
+static int hf_x509if_assertion = -1; /* AttributeValue */
+static int hf_x509if_assertedContexts = -1; /* T_assertedContexts */
+static int hf_x509if_allContexts = -1; /* NULL */
+static int hf_x509if_selectedContexts = -1; /* SET_OF_ContextAssertion */
+static int hf_x509if_selectedContexts_item = -1; /* ContextAssertion */
+static int hf_x509if_contextType1 = -1; /* ContextId */
+static int hf_x509if_contextValues1 = -1; /* SET_OF_ContextValue */
+static int hf_x509if_contextValues_item1 = -1; /* ContextValue */
+static int hf_x509if_assertedContexts1 = -1; /* SEQUNCE_OF_ContextAssertion */
+static int hf_x509if_assertedContexts_item = -1; /* ContextAssertion */
static int hf_x509if_rdnSequence = -1; /* RDNSequence */
static int hf_x509if_RDNSequence_item = -1; /* RelativeDistinguishedName */
static int hf_x509if_RelativeDistinguishedName_item = -1; /* AttributeTypeAndDistinguishedValue */
-static int hf_x509if_value = -1; /* AttributeValue */
+static int hf_x509if_value1 = -1; /* AttributeValue */
static int hf_x509if_primaryDistinguished = -1; /* BOOLEAN */
+static int hf_x509if_valuesWithContext1 = -1; /* T_valuesWithContext1 */
+static int hf_x509if_valuesWithContext_item1 = -1; /* T_valuesWithContext_item1 */
+static int hf_x509if_distingAttrValue = -1; /* ValuesWithContextValue */
+static int hf_x509if_base = -1; /* LocalName */
+static int hf_x509if_specificExclusions = -1; /* T_specificExclusions */
+static int hf_x509if_specificExclusions_item = -1; /* T_specificExclusions_item */
+static int hf_x509if_chopBefore = -1; /* LocalName */
+static int hf_x509if_chopAfter = -1; /* LocalName */
+static int hf_x509if_minimum = -1; /* BaseDistance */
+static int hf_x509if_maximum = -1; /* BaseDistance */
+static int hf_x509if_specificationFilter = -1; /* Refinement */
+static int hf_x509if_specificExclusions1 = -1; /* T_specificExclusions1 */
+static int hf_x509if_specificExclusions_item1 = -1; /* T_specificExclusions_item1 */
+static int hf_x509if_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_and = -1; /* SET_OF_Refinement */
+static int hf_x509if_and_item = -1; /* Refinement */
+static int hf_x509if_or = -1; /* SET_OF_Refinement */
+static int hf_x509if_or_item = -1; /* Refinement */
+static int hf_x509if_not = -1; /* Refinement */
+static int hf_x509if_ruleIdentifier = -1; /* RuleIdentifier */
+static int hf_x509if_nameForm = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_superiorStructureRules = -1; /* SET_OF_RuleIdentifier */
+static int hf_x509if_superiorStructureRules_item = -1; /* RuleIdentifier */
+static int hf_x509if_structuralObjectClass = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_auxiliaries = -1; /* SET_OF_OBJECT_IDENTIFIER */
+static int hf_x509if_auxiliaries_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_mandatory = -1; /* SET_OF_AttributeId */
+static int hf_x509if_mandatory_item = -1; /* AttributeId */
+static int hf_x509if_optional = -1; /* SET_OF_AttributeId */
+static int hf_x509if_optional_item = -1; /* AttributeId */
+static int hf_x509if_precluded = -1; /* SET_OF_AttributeId */
+static int hf_x509if_precluded_item = -1; /* AttributeId */
+static int hf_x509if_attributeType = -1; /* AttributeId */
+static int hf_x509if_mandatoryContexts = -1; /* SET_OF_OBJECT_IDENTIFIER */
+static int hf_x509if_mandatoryContexts_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_optionalContexts = -1; /* SET_OF_OBJECT_IDENTIFIER */
+static int hf_x509if_optionalContexts_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_id = -1; /* INTEGER */
+static int hf_x509if_dmdId = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_serviceType = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_userClass = -1; /* INTEGER */
+static int hf_x509if_inputAttributeTypes = -1; /* SEQUNCE_OF_RequestAttribute */
+static int hf_x509if_inputAttributeTypes_item = -1; /* RequestAttribute */
+static int hf_x509if_attributeCombination = -1; /* AttributeCombination */
+static int hf_x509if_outputAttributeTypes = -1; /* SEQUNCE_OF_ResultAttribute */
+static int hf_x509if_outputAttributeTypes_item = -1; /* ResultAttribute */
+static int hf_x509if_defaultControls = -1; /* ControlOptions */
+static int hf_x509if_mandatoryControls = -1; /* ControlOptions */
+static int hf_x509if_searchRuleControls = -1; /* ControlOptions */
+static int hf_x509if_relaxation = -1; /* RelaxationPolicy */
+static int hf_x509if_additionalControl = -1; /* SEQUNCE_OF_AttributeType */
+static int hf_x509if_additionalControl_item = -1; /* AttributeType */
+static int hf_x509if_allowedSubset = -1; /* AllowedSubset */
+static int hf_x509if_imposedSubset = -1; /* ImposedSubset */
+static int hf_x509if_entryLimit = -1; /* EntryLimit */
+static int hf_x509if_name = -1; /* SET_OF_DirectoryString */
+static int hf_x509if_name_item = -1; /* DirectoryString */
+static int hf_x509if_description = -1; /* DirectoryString */
+static int hf_x509if_obsolete = -1; /* BOOLEAN */
+static int hf_x509if_includeSubtypes = -1; /* BOOLEAN */
+static int hf_x509if_selectedValues = -1; /* SEQUNCE_OF_SelectedValues */
+static int hf_x509if_selectedValues_item = -1; /* SelectedValues */
+static int hf_x509if_defaultValues = -1; /* T_defaultValues */
+static int hf_x509if_defaultValues_item = -1; /* T_defaultValues_item */
+static int hf_x509if_entryType = -1; /* DefaultValueType */
+static int hf_x509if_values1 = -1; /* SEQUNCE_OF_DefaultValueValues */
+static int hf_x509if_values_item1 = -1; /* DefaultValueValues */
+static int hf_x509if_contexts = -1; /* SEQUNCE_OF_ContextProfile */
+static int hf_x509if_contexts_item = -1; /* ContextProfile */
+static int hf_x509if_contextCombination = -1; /* ContextCombination */
+static int hf_x509if_matchingUse = -1; /* SEQUNCE_OF_MatchingUse */
+static int hf_x509if_matchingUse_item = -1; /* MatchingUse */
+static int hf_x509if_contextValue = -1; /* SEQUNCE_OF_AttributeValue */
+static int hf_x509if_contextValue_item = -1; /* AttributeValue */
+static int hf_x509if_context = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_and1 = -1; /* SEQUNCE_OF_ContextCombination */
+static int hf_x509if_and_item1 = -1; /* ContextCombination */
+static int hf_x509if_or1 = -1; /* SEQUNCE_OF_ContextCombination */
+static int hf_x509if_or_item1 = -1; /* ContextCombination */
+static int hf_x509if_not1 = -1; /* ContextCombination */
+static int hf_x509if_restrictionType = -1; /* AttributeId */
+static int hf_x509if_restrictionValue = -1; /* AttributeValue */
+static int hf_x509if_attribute = -1; /* AttributeType */
+static int hf_x509if_and2 = -1; /* SEQUNCE_OF_AttributeCombination */
+static int hf_x509if_and_item2 = -1; /* AttributeCombination */
+static int hf_x509if_or2 = -1; /* SEQUNCE_OF_AttributeCombination */
+static int hf_x509if_or_item2 = -1; /* AttributeCombination */
+static int hf_x509if_not2 = -1; /* AttributeCombination */
+static int hf_x509if_outputValues = -1; /* T_outputValues */
+static int hf_x509if_selectedValues1 = -1; /* SEQUNCE_OF_AttributeValue */
+static int hf_x509if_selectedValues_item1 = -1; /* AttributeValue */
+static int hf_x509if_matchedValuesOnly = -1; /* NULL */
+static int hf_x509if_default = -1; /* INTEGER */
+static int hf_x509if_max = -1; /* INTEGER */
+static int hf_x509if_basic = -1; /* MRMapping */
+static int hf_x509if_tightenings = -1; /* SEQUNCE_OF_MRMapping */
+static int hf_x509if_tightenings_item = -1; /* MRMapping */
+static int hf_x509if_relaxations = -1; /* SEQUNCE_OF_MRMapping */
+static int hf_x509if_relaxations_item = -1; /* MRMapping */
+static int hf_x509if_maximum1 = -1; /* INTEGER */
+static int hf_x509if_minimum1 = -1; /* INTEGER */
+static int hf_x509if_mapping = -1; /* SEQUNCE_OF_Mapping */
+static int hf_x509if_mapping_item = -1; /* Mapping */
+static int hf_x509if_substitution = -1; /* SEQUNCE_OF_MRSubstitution */
+static int hf_x509if_substitution_item = -1; /* MRSubstitution */
+static int hf_x509if_mappingFunction = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_level = -1; /* INTEGER */
+static int hf_x509if_oldMatchingRule = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509if_newMatchingRule = -1; /* OBJECT_IDENTIFIER */
/* named bits */
static int hf_x509if_AllowedSubset_baseObject = -1;
static int hf_x509if_AllowedSubset_oneLevel = -1;
@@ -75,11 +203,71 @@ static int hf_x509if_AllowedSubset_wholeSubtree = -1;
static gint ett_x509if_Attribute = -1;
static gint ett_x509if_SET_OF_AttributeValue = -1;
+static gint ett_x509if_T_valuesWithContext = -1;
+static gint ett_x509if_T_valuesWithContext_item = -1;
+static gint ett_x509if_SET_OF_Context = -1;
+static gint ett_x509if_Context = -1;
+static gint ett_x509if_AttributeValueAssertion = -1;
+static gint ett_x509if_T_assertedContexts = -1;
+static gint ett_x509if_SET_OF_ContextAssertion = -1;
+static gint ett_x509if_ContextAssertion = -1;
+static gint ett_x509if_SET_OF_ContextValue = -1;
+static gint ett_x509if_AttributeTypeAssertion = -1;
+static gint ett_x509if_SEQUNCE_OF_ContextAssertion = -1;
static gint ett_x509if_Name = -1;
static gint ett_x509if_RDNSequence = -1;
static gint ett_x509if_RelativeDistinguishedName = -1;
static gint ett_x509if_AttributeTypeAndDistinguishedValue = -1;
+static gint ett_x509if_T_valuesWithContext1 = -1;
+static gint ett_x509if_T_valuesWithContext_item1 = -1;
+static gint ett_x509if_SubtreeSpecification = -1;
+static gint ett_x509if_T_specificExclusions = -1;
+static gint ett_x509if_T_specificExclusions_item = -1;
+static gint ett_x509if_ChopSpecification = -1;
+static gint ett_x509if_T_specificExclusions1 = -1;
+static gint ett_x509if_T_specificExclusions_item1 = -1;
+static gint ett_x509if_Refinement = -1;
+static gint ett_x509if_SET_OF_Refinement = -1;
+static gint ett_x509if_DITStructureRule = -1;
+static gint ett_x509if_SET_OF_RuleIdentifier = -1;
+static gint ett_x509if_DITContentRule = -1;
+static gint ett_x509if_SET_OF_OBJECT_IDENTIFIER = -1;
+static gint ett_x509if_SET_OF_AttributeId = -1;
+static gint ett_x509if_DITContextUse = -1;
+static gint ett_x509if_SearchRuleDescription = -1;
+static gint ett_x509if_SEQUNCE_OF_RequestAttribute = -1;
+static gint ett_x509if_SEQUNCE_OF_ResultAttribute = -1;
+static gint ett_x509if_SEQUNCE_OF_AttributeType = -1;
+static gint ett_x509if_SET_OF_DirectoryString = -1;
+static gint ett_x509if_SearchRule = -1;
+static gint ett_x509if_SearchRuleId = -1;
static gint ett_x509if_AllowedSubset = -1;
+static gint ett_x509if_RequestAttribute = -1;
+static gint ett_x509if_SEQUNCE_OF_SelectedValues = -1;
+static gint ett_x509if_T_defaultValues = -1;
+static gint ett_x509if_T_defaultValues_item = -1;
+static gint ett_x509if_SEQUNCE_OF_DefaultValueValues = -1;
+static gint ett_x509if_SEQUNCE_OF_ContextProfile = -1;
+static gint ett_x509if_SEQUNCE_OF_MatchingUse = -1;
+static gint ett_x509if_ContextProfile = -1;
+static gint ett_x509if_SEQUNCE_OF_AttributeValue = -1;
+static gint ett_x509if_ContextCombination = -1;
+static gint ett_x509if_SEQUNCE_OF_ContextCombination = -1;
+static gint ett_x509if_MatchingUse = -1;
+static gint ett_x509if_AttributeCombination = -1;
+static gint ett_x509if_SEQUNCE_OF_AttributeCombination = -1;
+static gint ett_x509if_ResultAttribute = -1;
+static gint ett_x509if_T_outputValues = -1;
+static gint ett_x509if_OutputValues = -1;
+static gint ett_x509if_ControlOptions = -1;
+static gint ett_x509if_EntryLimit = -1;
+static gint ett_x509if_RelaxationPolicy = -1;
+static gint ett_x509if_SEQUNCE_OF_MRMapping = -1;
+static gint ett_x509if_MRMapping = -1;
+static gint ett_x509if_SEQUNCE_OF_Mapping = -1;
+static gint ett_x509if_SEQUNCE_OF_MRSubstitution = -1;
+static gint ett_x509if_Mapping = -1;
+static gint ett_x509if_MRSubstitution = -1;
/*--- End of included file: packet-x509if-ett.c ---*/
@@ -89,8 +277,68 @@ static char object_identifier_id[64]; /*64 chars should be long enough? */
/*--- Included file: packet-x509if-fn.c ---*/
+/*--- Cyclic dependencies ---*/
+
+/* Refinement -> Refinement/and -> Refinement */
+/* Refinement -> Refinement */
+int dissect_x509if_Refinement(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_specificationFilter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificationFilter);
+}
+static int dissect_and_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_and_item);
+}
+static int dissect_or_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_or_item);
+}
+static int dissect_not(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_not);
+}
+
+/* ContextCombination -> ContextCombination/and -> ContextCombination */
+/* ContextCombination -> ContextCombination */
+int dissect_x509if_ContextCombination(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_contextCombination(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextCombination);
+}
+static int dissect_and_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_and_item1);
+}
+static int dissect_or_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_or_item1);
+}
+static int dissect_not1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_not1);
+}
+
+/* AttributeCombination -> AttributeCombination/and -> AttributeCombination */
+/* AttributeCombination -> AttributeCombination */
+int dissect_x509if_AttributeCombination(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+
+static int dissect_attributeCombination(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_attributeCombination);
+}
+static int dissect_and_item2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_and_item2);
+}
+static int dissect_or_item2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_or_item2);
+}
+static int dissect_not2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_not2);
+}
+
+
/*--- Fields for imported types ---*/
+static int dissect_name_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509sat_DirectoryString(FALSE, tvb, offset, pinfo, tree, hf_x509if_name_item);
+}
+static int dissect_description(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509sat_DirectoryString(FALSE, tvb, offset, pinfo, tree, hf_x509if_description);
+}
static int
@@ -104,6 +352,24 @@ dissect_x509if_AttributeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
static int dissect_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_type);
}
+static int dissect_contextType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextType);
+}
+static int dissect_mandatory_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatory_item);
+}
+static int dissect_optional_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_optional_item);
+}
+static int dissect_precluded_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_precluded_item);
+}
+static int dissect_attributeType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_attributeType);
+}
+static int dissect_restrictionType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_restrictionType);
+}
@@ -112,14 +378,44 @@ dissect_x509if_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
-
return offset;
}
static int dissect_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_values_item);
}
+static int dissect_contextValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValues_item);
+}
+static int dissect_assertion(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_assertion);
+}
+static int dissect_value1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_value1);
+}
+static int dissect_contextValue_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValue_item);
+}
+static int dissect_restrictionValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_restrictionValue);
+}
+static int dissect_selectedValues_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedValues_item1);
+}
+
+
+
+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_) {
+ offset=call_ber_oid_callback("unknown", tvb, offset, pinfo, tree);
+
+
+ return offset;
+}
static int dissect_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
- return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_value);
+ return dissect_x509if_ValuesWithContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_value);
+}
+static int dissect_distingAttrValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ValuesWithContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_distingAttrValue);
}
static const ber_sequence SET_OF_AttributeValue_set_of[1] = {
@@ -136,10 +432,99 @@ dissect_x509if_SET_OF_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, i
static int dissect_values(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
return dissect_x509if_SET_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_values);
}
+static int dissect_contextValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValues);
+}
+
+
+static int
+dissect_x509if_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_boolean(pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_fallback(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_fallback);
+}
+static int dissect_primaryDistinguished(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_primaryDistinguished);
+}
+static int dissect_obsolete(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_obsolete);
+}
+static int dissect_includeSubtypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_includeSubtypes);
+}
+
+static const ber_sequence Context_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contextType },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_contextValues },
+ { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_fallback },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_Context(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,
+ Context_sequence, hf_index, ett_x509if_Context);
+
+ return offset;
+}
+static int dissect_contextList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Context(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextList_item);
+}
+
+static const ber_sequence SET_OF_Context_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextList_item },
+};
+
+static int
+dissect_x509if_SET_OF_Context(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_Context_set_of, hf_index, ett_x509if_SET_OF_Context);
+
+ return offset;
+}
+static int dissect_contextList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_Context(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextList);
+}
+
+static const ber_sequence T_valuesWithContext_item_sequence[] = {
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_value },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_contextList },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509if_T_valuesWithContext_item(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_valuesWithContext_item_sequence, hf_index, ett_x509if_T_valuesWithContext_item);
+
+ return offset;
+}
+static int dissect_valuesWithContext_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_valuesWithContext_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_valuesWithContext_item);
+}
+
+static const ber_sequence T_valuesWithContext_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_valuesWithContext_item },
+};
+
+static int
+dissect_x509if_T_valuesWithContext(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,
+ T_valuesWithContext_set_of, hf_index, ett_x509if_T_valuesWithContext);
+
+ return offset;
+}
+static int dissect_valuesWithContext(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_valuesWithContext(FALSE, tvb, offset, pinfo, tree, hf_x509if_valuesWithContext);
+}
static const ber_sequence Attribute_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
{ BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_values },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_valuesWithContext },
{ 0, 0, 0, NULL }
};
@@ -158,26 +543,215 @@ dissect_x509if_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse
return offset;
}
+static int dissect_additionalControl_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_x509if_additionalControl_item);
+}
+static int dissect_attribute(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_x509if_attribute);
+}
static int
-dissect_x509if_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
- offset = dissect_ber_boolean(pinfo, tree, tvb, offset, hf_index);
+dissect_x509if_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ { proto_item *ti_tmp;
+ ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE);
+ proto_item_append_text(ti_tmp, ": NULL");
+ }
return offset;
}
-static int dissect_primaryDistinguished(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
- return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_primaryDistinguished);
+static int dissect_allContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_NULL(FALSE, tvb, offset, pinfo, tree, hf_x509if_allContexts);
+}
+static int dissect_matchedValuesOnly(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_NULL(FALSE, tvb, offset, pinfo, tree, hf_x509if_matchedValuesOnly);
+}
+
+
+static int
+dissect_x509if_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
+ hf_x509if_object_identifier_id, object_identifier_id);
+
+
+ return offset;
+}
+static int dissect_contextType1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextId(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextType1);
+}
+
+
+
+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_) {
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
+
+ return offset;
+}
+static int dissect_contextValues_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValues_item1);
+}
+
+static const ber_sequence SET_OF_ContextValue_set_of[1] = {
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_contextValues_item1 },
+};
+
+static int
+dissect_x509if_SET_OF_ContextValue(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_ContextValue_set_of, hf_index, ett_x509if_SET_OF_ContextValue);
+
+ return offset;
+}
+static int dissect_contextValues1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_ContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValues1);
+}
+
+static const ber_sequence ContextAssertion_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contextType1 },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_contextValues1 },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_ContextAssertion(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,
+ ContextAssertion_sequence, hf_index, ett_x509if_ContextAssertion);
+
+ return offset;
+}
+static int dissect_selectedContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedContexts_item);
+}
+static int dissect_assertedContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_assertedContexts_item);
+}
+
+static const ber_sequence SET_OF_ContextAssertion_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_selectedContexts_item },
+};
+
+static int
+dissect_x509if_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_x509if_SET_OF_ContextAssertion);
+
+ return offset;
+}
+static int dissect_selectedContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedContexts);
+}
+
+
+static const value_string T_assertedContexts_vals[] = {
+ { 0, "allContexts" },
+ { 1, "selectedContexts" },
+ { 0, NULL }
+};
+
+static const ber_choice T_assertedContexts_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_allContexts },
+ { 1, BER_CLASS_CON, 1, 0, dissect_selectedContexts },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509if_T_assertedContexts(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_assertedContexts_choice, hf_index, ett_x509if_T_assertedContexts);
+
+ return offset;
+}
+static int dissect_assertedContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_assertedContexts(FALSE, tvb, offset, pinfo, tree, hf_x509if_assertedContexts);
+}
+
+static const ber_sequence AttributeValueAssertion_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_assertion },
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_assertedContexts },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_AttributeValueAssertion(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,
+ AttributeValueAssertion_sequence, hf_index, ett_x509if_AttributeValueAssertion);
+
+ return offset;
+}
+
+static const ber_sequence SEQUNCE_OF_ContextAssertion_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_assertedContexts_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_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_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_ContextAssertion_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_ContextAssertion);
+
+ return offset;
+}
+static int dissect_assertedContexts1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_assertedContexts1);
+}
+
+static const ber_sequence AttributeTypeAssertion_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_assertedContexts1 },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_AttributeTypeAssertion(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,
+ AttributeTypeAssertion_sequence, hf_index, ett_x509if_AttributeTypeAssertion);
+
+ return offset;
+}
+
+static const ber_sequence T_valuesWithContext_item1_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_distingAttrValue },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_contextList },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509if_T_valuesWithContext_item1(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_valuesWithContext_item1_sequence, hf_index, ett_x509if_T_valuesWithContext_item1);
+
+ return offset;
+}
+static int dissect_valuesWithContext_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_valuesWithContext_item1(FALSE, tvb, offset, pinfo, tree, hf_x509if_valuesWithContext_item1);
+}
+
+static const ber_sequence T_valuesWithContext1_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_valuesWithContext_item1 },
+};
+
+static int
+dissect_x509if_T_valuesWithContext1(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,
+ T_valuesWithContext1_set_of, hf_index, ett_x509if_T_valuesWithContext1);
+
+ return offset;
+}
+static int dissect_valuesWithContext1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_valuesWithContext1(FALSE, tvb, offset, pinfo, tree, hf_x509if_valuesWithContext1);
}
static const ber_sequence AttributeTypeAndDistinguishedValue_sequence[] = {
{ BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
- { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_value },
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_value1 },
{ BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_primaryDistinguished },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_valuesWithContext1 },
{ 0, 0, 0, NULL }
};
-static int
+int
dissect_x509if_AttributeTypeAndDistinguishedValue(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,
AttributeTypeAndDistinguishedValue_sequence, hf_index, ett_x509if_AttributeTypeAndDistinguishedValue);
@@ -246,6 +820,236 @@ dissect_x509if_DistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
}
+int
+dissect_x509if_LocalName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_x509if_RDNSequence(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+static int dissect_base(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_LocalName(FALSE, tvb, offset, pinfo, tree, hf_x509if_base);
+}
+static int dissect_chopBefore(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_LocalName(FALSE, tvb, offset, pinfo, tree, hf_x509if_chopBefore);
+}
+static int dissect_chopAfter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_LocalName(FALSE, tvb, offset, pinfo, tree, hf_x509if_chopAfter);
+}
+
+
+static const value_string T_specificExclusions_item_vals[] = {
+ { 0, "chopBefore" },
+ { 1, "chopAfter" },
+ { 0, NULL }
+};
+
+static const ber_choice T_specificExclusions_item_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_chopBefore },
+ { 1, BER_CLASS_CON, 1, 0, dissect_chopAfter },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509if_T_specificExclusions_item(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_specificExclusions_item_choice, hf_index, ett_x509if_T_specificExclusions_item);
+
+ return offset;
+}
+static int dissect_specificExclusions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_specificExclusions_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificExclusions_item);
+}
+
+static const ber_sequence T_specificExclusions_set_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_specificExclusions_item },
+};
+
+static int
+dissect_x509if_T_specificExclusions(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,
+ T_specificExclusions_set_of, hf_index, ett_x509if_T_specificExclusions);
+
+ return offset;
+}
+static int dissect_specificExclusions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_specificExclusions(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificExclusions);
+}
+
+
+
+int
+dissect_x509if_BaseDistance(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_minimum(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_BaseDistance(FALSE, tvb, offset, pinfo, tree, hf_x509if_minimum);
+}
+static int dissect_maximum(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_BaseDistance(FALSE, tvb, offset, pinfo, tree, hf_x509if_maximum);
+}
+
+
+static int
+dissect_x509if_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset,
+ hf_index, NULL);
+
+ return offset;
+}
+static int dissect_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_item);
+}
+static int dissect_nameForm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_nameForm);
+}
+static int dissect_structuralObjectClass(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_structuralObjectClass);
+}
+static int dissect_auxiliaries_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_auxiliaries_item);
+}
+static int dissect_mandatoryContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatoryContexts_item);
+}
+static int dissect_optionalContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_optionalContexts_item);
+}
+static int dissect_dmdId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_dmdId);
+}
+static int dissect_serviceType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_serviceType);
+}
+static int dissect_context(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_context);
+}
+static int dissect_mappingFunction(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_mappingFunction);
+}
+static int dissect_oldMatchingRule(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_oldMatchingRule);
+}
+static int dissect_newMatchingRule(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_newMatchingRule);
+}
+
+static const ber_sequence SET_OF_Refinement_set_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_and_item },
+};
+
+static int
+dissect_x509if_SET_OF_Refinement(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_Refinement_set_of, hf_index, ett_x509if_SET_OF_Refinement);
+
+ return offset;
+}
+static int dissect_and(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_and);
+}
+static int dissect_or(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_or);
+}
+
+
+const value_string Refinement_vals[] = {
+ { 0, "item" },
+ { 1, "and" },
+ { 2, "or" },
+ { 3, "not" },
+ { 0, NULL }
+};
+
+static const ber_choice Refinement_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_item },
+ { 1, BER_CLASS_CON, 1, 0, dissect_and },
+ { 2, BER_CLASS_CON, 2, 0, dissect_or },
+ { 3, BER_CLASS_CON, 3, 0, dissect_not },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_Refinement(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,
+ Refinement_choice, hf_index, ett_x509if_Refinement);
+
+ return offset;
+}
+
+static const ber_sequence SubtreeSpecification_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_base },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_specificExclusions },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_minimum },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_maximum },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_specificationFilter },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_SubtreeSpecification(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,
+ SubtreeSpecification_sequence, hf_index, ett_x509if_SubtreeSpecification);
+
+ return offset;
+}
+
+
+static const value_string T_specificExclusions_item1_vals[] = {
+ { 0, "chopBefore" },
+ { 1, "chopAfter" },
+ { 0, NULL }
+};
+
+static const ber_choice T_specificExclusions_item1_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_chopBefore },
+ { 1, BER_CLASS_CON, 1, 0, dissect_chopAfter },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509if_T_specificExclusions_item1(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_specificExclusions_item1_choice, hf_index, ett_x509if_T_specificExclusions_item1);
+
+ return offset;
+}
+static int dissect_specificExclusions_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_specificExclusions_item1(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificExclusions_item1);
+}
+
+static const ber_sequence T_specificExclusions1_set_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_specificExclusions_item1 },
+};
+
+static int
+dissect_x509if_T_specificExclusions1(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,
+ T_specificExclusions1_set_of, hf_index, ett_x509if_T_specificExclusions1);
+
+ return offset;
+}
+static int dissect_specificExclusions1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_specificExclusions1(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificExclusions1);
+}
+
+static const ber_sequence ChopSpecification_sequence[] = {
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_specificExclusions1 },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_minimum },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_maximum },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_ChopSpecification(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,
+ ChopSpecification_sequence, hf_index, ett_x509if_ChopSpecification);
+
+ return offset;
+}
+
+
static const value_string ObjectClassKind_vals[] = {
{ 0, "abstract" },
{ 1, "structural" },
@@ -261,6 +1065,697 @@ dissect_x509if_ObjectClassKind(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
return offset;
}
+
+const value_string AttributeUsage_vals[] = {
+ { 0, "userApplications" },
+ { 1, "directoryOperation" },
+ { 2, "distributedOperation" },
+ { 3, "dSAOperation" },
+ { 0, NULL }
+};
+
+
+int
+dissect_x509if_AttributeUsage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+
+
+
+int
+dissect_x509if_RuleIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_ruleIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RuleIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x509if_ruleIdentifier);
+}
+static int dissect_superiorStructureRules_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RuleIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x509if_superiorStructureRules_item);
+}
+
+static const ber_sequence SET_OF_RuleIdentifier_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_superiorStructureRules_item },
+};
+
+static int
+dissect_x509if_SET_OF_RuleIdentifier(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_RuleIdentifier_set_of, hf_index, ett_x509if_SET_OF_RuleIdentifier);
+
+ return offset;
+}
+static int dissect_superiorStructureRules(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_RuleIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x509if_superiorStructureRules);
+}
+
+static const ber_sequence DITStructureRule_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_ruleIdentifier },
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_nameForm },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_superiorStructureRules },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_DITStructureRule(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,
+ DITStructureRule_sequence, hf_index, ett_x509if_DITStructureRule);
+
+ return offset;
+}
+
+static const ber_sequence SET_OF_OBJECT_IDENTIFIER_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_auxiliaries_item },
+};
+
+static int
+dissect_x509if_SET_OF_OBJECT_IDENTIFIER(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_OBJECT_IDENTIFIER_set_of, hf_index, ett_x509if_SET_OF_OBJECT_IDENTIFIER);
+
+ return offset;
+}
+static int dissect_auxiliaries(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_auxiliaries);
+}
+static int dissect_mandatoryContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatoryContexts);
+}
+static int dissect_optionalContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_optionalContexts);
+}
+
+static const ber_sequence SET_OF_AttributeId_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_mandatory_item },
+};
+
+static int
+dissect_x509if_SET_OF_AttributeId(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_AttributeId_set_of, hf_index, ett_x509if_SET_OF_AttributeId);
+
+ return offset;
+}
+static int dissect_mandatory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatory);
+}
+static int dissect_optional(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_optional);
+}
+static int dissect_precluded(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_precluded);
+}
+
+static const ber_sequence DITContentRule_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_structuralObjectClass },
+ { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_auxiliaries },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_mandatory },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_optional },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_precluded },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_DITContentRule(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,
+ DITContentRule_sequence, hf_index, ett_x509if_DITContentRule);
+
+ return offset;
+}
+
+static const ber_sequence DITContextUse_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_mandatoryContexts },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_optionalContexts },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_DITContextUse(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,
+ DITContextUse_sequence, hf_index, ett_x509if_DITContextUse);
+
+ return offset;
+}
+
+
+
+static int
+dissect_x509if_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_id);
+}
+static int dissect_userClass(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_userClass);
+}
+static int dissect_default(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_default);
+}
+static int dissect_max(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_max);
+}
+static int dissect_maximum1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_maximum1);
+}
+static int dissect_minimum1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_minimum1);
+}
+static int dissect_level(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_level);
+}
+
+
+
+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_) {
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
+
+ return offset;
+}
+static int dissect_selectedValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SelectedValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedValues_item);
+}
+
+static const ber_sequence SEQUNCE_OF_SelectedValues_sequence_of[1] = {
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_selectedValues_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_SelectedValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_SelectedValues_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_SelectedValues);
+
+ return offset;
+}
+static int dissect_selectedValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_SelectedValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedValues);
+}
+
+
+static int
+dissect_x509if_DefaultValueType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
+ hf_x509if_object_identifier_id, object_identifier_id);
+
+
+ return offset;
+}
+static int dissect_entryType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DefaultValueType(FALSE, tvb, offset, pinfo, tree, hf_x509if_entryType);
+}
+
+
+
+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_) {
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
+
+
+ return offset;
+}
+static int dissect_values_item1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_DefaultValueValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_values_item1);
+}
+
+static const ber_sequence SEQUNCE_OF_DefaultValueValues_sequence_of[1] = {
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_values_item1 },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_DefaultValueValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_DefaultValueValues_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_DefaultValueValues);
+
+ return offset;
+}
+static int dissect_values1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_DefaultValueValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_values1);
+}
+
+static const ber_sequence T_defaultValues_item_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_entryType },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_values1 },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509if_T_defaultValues_item(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_defaultValues_item_sequence, hf_index, ett_x509if_T_defaultValues_item);
+
+ return offset;
+}
+static int dissect_defaultValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_defaultValues_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_defaultValues_item);
+}
+
+static const ber_sequence T_defaultValues_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_defaultValues_item },
+};
+
+static int
+dissect_x509if_T_defaultValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ T_defaultValues_sequence_of, hf_index, ett_x509if_T_defaultValues);
+
+ return offset;
+}
+static int dissect_defaultValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_defaultValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_defaultValues);
+}
+
+static const ber_sequence SEQUNCE_OF_AttributeValue_sequence_of[1] = {
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_contextValue_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_AttributeValue_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_AttributeValue);
+
+ return offset;
+}
+static int dissect_contextValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValue);
+}
+static int dissect_selectedValues1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedValues1);
+}
+
+static const ber_sequence ContextProfile_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contextType },
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contextValue },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_ContextProfile(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,
+ ContextProfile_sequence, hf_index, ett_x509if_ContextProfile);
+
+ return offset;
+}
+static int dissect_contexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ContextProfile(FALSE, tvb, offset, pinfo, tree, hf_x509if_contexts_item);
+}
+
+static const ber_sequence SEQUNCE_OF_ContextProfile_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contexts_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_ContextProfile(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_ContextProfile_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_ContextProfile);
+
+ return offset;
+}
+static int dissect_contexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_ContextProfile(FALSE, tvb, offset, pinfo, tree, hf_x509if_contexts);
+}
+
+static const ber_sequence SEQUNCE_OF_ContextCombination_sequence_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_and_item1 },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_ContextCombination(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_ContextCombination_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_ContextCombination);
+
+ return offset;
+}
+static int dissect_and1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_and1);
+}
+static int dissect_or1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_or1);
+}
+
+
+const value_string ContextCombination_vals[] = {
+ { 0, "context" },
+ { 1, "and" },
+ { 2, "or" },
+ { 3, "not" },
+ { 0, NULL }
+};
+
+static const ber_choice ContextCombination_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_context },
+ { 1, BER_CLASS_CON, 1, 0, dissect_and1 },
+ { 2, BER_CLASS_CON, 2, 0, dissect_or1 },
+ { 3, BER_CLASS_CON, 3, 0, dissect_not1 },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_ContextCombination(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,
+ ContextCombination_choice, hf_index, ett_x509if_ContextCombination);
+
+ return offset;
+}
+
+static const ber_sequence MatchingUse_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_restrictionType },
+ { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_restrictionValue },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_MatchingUse(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,
+ MatchingUse_sequence, hf_index, ett_x509if_MatchingUse);
+
+ return offset;
+}
+static int dissect_matchingUse_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_MatchingUse(FALSE, tvb, offset, pinfo, tree, hf_x509if_matchingUse_item);
+}
+
+static const ber_sequence SEQUNCE_OF_MatchingUse_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_matchingUse_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_MatchingUse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_MatchingUse_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_MatchingUse);
+
+ return offset;
+}
+static int dissect_matchingUse(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_MatchingUse(FALSE, tvb, offset, pinfo, tree, hf_x509if_matchingUse);
+}
+
+static const ber_sequence RequestAttribute_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_includeSubtypes },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_selectedValues },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_defaultValues },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_contexts },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_contextCombination },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_matchingUse },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_RequestAttribute(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,
+ RequestAttribute_sequence, hf_index, ett_x509if_RequestAttribute);
+
+ return offset;
+}
+static int dissect_inputAttributeTypes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RequestAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_inputAttributeTypes_item);
+}
+
+static const ber_sequence SEQUNCE_OF_RequestAttribute_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_inputAttributeTypes_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_RequestAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_RequestAttribute_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_RequestAttribute);
+
+ return offset;
+}
+static int dissect_inputAttributeTypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_RequestAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_inputAttributeTypes);
+}
+
+static const ber_sequence SEQUNCE_OF_AttributeCombination_sequence_of[1] = {
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_and_item2 },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_AttributeCombination_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_AttributeCombination);
+
+ return offset;
+}
+static int dissect_and2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_and2);
+}
+static int dissect_or2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_or2);
+}
+
+
+const value_string AttributeCombination_vals[] = {
+ { 0, "attribute" },
+ { 1, "and" },
+ { 2, "or" },
+ { 3, "not" },
+ { 0, NULL }
+};
+
+static const ber_choice AttributeCombination_choice[] = {
+ { 0, BER_CLASS_CON, 0, 0, dissect_attribute },
+ { 1, BER_CLASS_CON, 1, 0, dissect_and2 },
+ { 2, BER_CLASS_CON, 2, 0, dissect_or2 },
+ { 3, BER_CLASS_CON, 3, 0, dissect_not2 },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_AttributeCombination(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,
+ AttributeCombination_choice, hf_index, ett_x509if_AttributeCombination);
+
+ return offset;
+}
+
+
+static const value_string T_outputValues_vals[] = {
+ { 0, "selectedValues" },
+ { 1, "matchedValuesOnly" },
+ { 0, NULL }
+};
+
+static const ber_choice T_outputValues_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_selectedValues1 },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_matchedValuesOnly },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509if_T_outputValues(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_outputValues_choice, hf_index, ett_x509if_T_outputValues);
+
+ return offset;
+}
+static int dissect_outputValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_T_outputValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_outputValues);
+}
+
+static const ber_sequence ResultAttribute_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
+ { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_outputValues },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_contexts },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_ResultAttribute(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,
+ ResultAttribute_sequence, hf_index, ett_x509if_ResultAttribute);
+
+ return offset;
+}
+static int dissect_outputAttributeTypes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ResultAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_outputAttributeTypes_item);
+}
+
+static const ber_sequence SEQUNCE_OF_ResultAttribute_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_outputAttributeTypes_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_ResultAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_ResultAttribute_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_ResultAttribute);
+
+ return offset;
+}
+static int dissect_outputAttributeTypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_ResultAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_outputAttributeTypes);
+}
+
+static const ber_sequence ControlOptions_sequence[] = {
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_ControlOptions(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,
+ ControlOptions_sequence, hf_index, ett_x509if_ControlOptions);
+
+ return offset;
+}
+static int dissect_defaultControls(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ControlOptions(FALSE, tvb, offset, pinfo, tree, hf_x509if_defaultControls);
+}
+static int dissect_mandatoryControls(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ControlOptions(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatoryControls);
+}
+static int dissect_searchRuleControls(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ControlOptions(FALSE, tvb, offset, pinfo, tree, hf_x509if_searchRuleControls);
+}
+
+static const ber_sequence Mapping_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_mappingFunction },
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_level },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_Mapping(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,
+ Mapping_sequence, hf_index, ett_x509if_Mapping);
+
+ return offset;
+}
+static int dissect_mapping_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Mapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_mapping_item);
+}
+
+static const ber_sequence SEQUNCE_OF_Mapping_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mapping_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_Mapping(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_Mapping_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_Mapping);
+
+ return offset;
+}
+static int dissect_mapping(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_Mapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_mapping);
+}
+
+static const ber_sequence MRSubstitution_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attribute },
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_oldMatchingRule },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_newMatchingRule },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_MRSubstitution(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,
+ MRSubstitution_sequence, hf_index, ett_x509if_MRSubstitution);
+
+ return offset;
+}
+static int dissect_substitution_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_MRSubstitution(FALSE, tvb, offset, pinfo, tree, hf_x509if_substitution_item);
+}
+
+static const ber_sequence SEQUNCE_OF_MRSubstitution_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_substitution_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_MRSubstitution(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_MRSubstitution_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_MRSubstitution);
+
+ return offset;
+}
+static int dissect_substitution(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_MRSubstitution(FALSE, tvb, offset, pinfo, tree, hf_x509if_substitution);
+}
+
+static const ber_sequence MRMapping_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_mapping },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_substitution },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_MRMapping(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,
+ MRMapping_sequence, hf_index, ett_x509if_MRMapping);
+
+ return offset;
+}
+static int dissect_basic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_basic);
+}
+static int dissect_tightenings_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_tightenings_item);
+}
+static int dissect_relaxations_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_relaxations_item);
+}
+
+static const ber_sequence SEQUNCE_OF_MRMapping_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tightenings_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_OF_MRMapping(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_MRMapping_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_MRMapping);
+
+ return offset;
+}
+static int dissect_tightenings(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_tightenings);
+}
+static int dissect_relaxations(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_relaxations);
+}
+
+static const ber_sequence RelaxationPolicy_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_basic },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_tightenings },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_relaxations },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_maximum1 },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_minimum1 },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_RelaxationPolicy(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,
+ RelaxationPolicy_sequence, hf_index, ett_x509if_RelaxationPolicy);
+
+ return offset;
+}
+static int dissect_relaxation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_RelaxationPolicy(FALSE, tvb, offset, pinfo, tree, hf_x509if_relaxation);
+}
+
+static const ber_sequence SEQUNCE_OF_AttributeType_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_additionalControl_item },
+};
+
+static int
+dissect_x509if_SEQUNCE_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_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ SEQUNCE_OF_AttributeType_sequence_of, hf_index, ett_x509if_SEQUNCE_OF_AttributeType);
+
+ return offset;
+}
+static int dissect_additionalControl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SEQUNCE_OF_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_x509if_additionalControl);
+}
+
static const asn_namedbit AllowedSubset_bits[] = {
{ 0, &hf_x509if_AllowedSubset_baseObject, -1, -1, NULL, NULL },
{ 1, &hf_x509if_AllowedSubset_oneLevel, -1, -1, NULL, NULL },
@@ -268,7 +1763,7 @@ static const asn_namedbit AllowedSubset_bits[] = {
{ 0, NULL, 0, 0, NULL, NULL }
};
-static int
+int
dissect_x509if_AllowedSubset(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,
AllowedSubset_bits, hf_index, ett_x509if_AllowedSubset,
@@ -276,9 +1771,12 @@ dissect_x509if_AllowedSubset(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse
return offset;
}
+static int dissect_allowedSubset(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_AllowedSubset(FALSE, tvb, offset, pinfo, tree, hf_x509if_allowedSubset);
+}
-static const value_string ImposedSubset_vals[] = {
+const value_string ImposedSubset_vals[] = {
{ 0, "baseObject" },
{ 1, "oneLevel" },
{ 2, "wholeSubtree" },
@@ -286,12 +1784,139 @@ static const value_string ImposedSubset_vals[] = {
};
-static int
+int
dissect_x509if_ImposedSubset(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
return offset;
}
+static int dissect_imposedSubset(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_ImposedSubset(FALSE, tvb, offset, pinfo, tree, hf_x509if_imposedSubset);
+}
+
+static const ber_sequence EntryLimit_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_default },
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_max },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_EntryLimit(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,
+ EntryLimit_sequence, hf_index, ett_x509if_EntryLimit);
+
+ return offset;
+}
+static int dissect_entryLimit(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_EntryLimit(FALSE, tvb, offset, pinfo, tree, hf_x509if_entryLimit);
+}
+
+static const ber_sequence SET_OF_DirectoryString_set_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_name_item },
+};
+
+static int
+dissect_x509if_SET_OF_DirectoryString(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_DirectoryString_set_of, hf_index, ett_x509if_SET_OF_DirectoryString);
+
+ return offset;
+}
+static int dissect_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_SET_OF_DirectoryString(FALSE, tvb, offset, pinfo, tree, hf_x509if_name);
+}
+
+static const ber_sequence SearchRuleDescription_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_id },
+ { BER_CLASS_CON, 0, 0, dissect_dmdId },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_serviceType },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_userClass },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_inputAttributeTypes },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_attributeCombination },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_outputAttributeTypes },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_defaultControls },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_mandatoryControls },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_searchRuleControls },
+ { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_relaxation },
+ { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_additionalControl },
+ { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_allowedSubset },
+ { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_imposedSubset },
+ { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_entryLimit },
+ { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_name },
+ { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_description },
+ { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_obsolete },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_SearchRuleDescription(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,
+ SearchRuleDescription_sequence, hf_index, ett_x509if_SearchRuleDescription);
+
+ return offset;
+}
+
+static const ber_sequence SearchRule_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_id },
+ { BER_CLASS_CON, 0, 0, dissect_dmdId },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_serviceType },
+ { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_userClass },
+ { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_inputAttributeTypes },
+ { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_attributeCombination },
+ { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_outputAttributeTypes },
+ { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_defaultControls },
+ { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_mandatoryControls },
+ { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_searchRuleControls },
+ { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_relaxation },
+ { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_additionalControl },
+ { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_allowedSubset },
+ { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_imposedSubset },
+ { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_entryLimit },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_SearchRule(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,
+ SearchRule_sequence, hf_index, ett_x509if_SearchRule);
+
+ return offset;
+}
+
+static const ber_sequence SearchRuleId_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_id },
+ { BER_CLASS_CON, 0, 0, dissect_dmdId },
+ { 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_SearchRuleId(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,
+ SearchRuleId_sequence, hf_index, ett_x509if_SearchRuleId);
+
+ return offset;
+}
+
+
+const value_string OutputValues_vals[] = {
+ { 0, "selectedValues" },
+ { 1, "matchedValuesOnly" },
+ { 0, NULL }
+};
+
+static const ber_choice OutputValues_choice[] = {
+ { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_selectedValues1 },
+ { 1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_matchedValuesOnly },
+ { 0, 0, 0, 0, NULL }
+};
+
+int
+dissect_x509if_OutputValues(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,
+ OutputValues_choice, hf_index, ett_x509if_OutputValues);
+
+ return offset;
+}
/*--- End of included file: packet-x509if-fn.c ---*/
@@ -322,6 +1947,82 @@ void proto_register_x509if(void) {
{ "Item", "x509if.values_item",
FT_NONE, BASE_NONE, NULL, 0,
"Attribute/values/_item", HFILL }},
+ { &hf_x509if_valuesWithContext,
+ { "valuesWithContext", "x509if.valuesWithContext",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Attribute/valuesWithContext", HFILL }},
+ { &hf_x509if_valuesWithContext_item,
+ { "Item", "x509if.valuesWithContext_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute/valuesWithContext/_item", HFILL }},
+ { &hf_x509if_value,
+ { "value", "x509if.value",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Attribute/valuesWithContext/_item/value", HFILL }},
+ { &hf_x509if_contextList,
+ { "contextList", "x509if.contextList",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_contextList_item,
+ { "Item", "x509if.contextList_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_contextType,
+ { "contextType", "x509if.contextType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_contextValues,
+ { "contextValues", "x509if.contextValues",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Context/contextValues", HFILL }},
+ { &hf_x509if_contextValues_item,
+ { "Item", "x509if.contextValues_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Context/contextValues/_item", HFILL }},
+ { &hf_x509if_fallback,
+ { "fallback", "x509if.fallback",
+ FT_BOOLEAN, 8, NULL, 0,
+ "Context/fallback", HFILL }},
+ { &hf_x509if_assertion,
+ { "assertion", "x509if.assertion",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeValueAssertion/assertion", HFILL }},
+ { &hf_x509if_assertedContexts,
+ { "assertedContexts", "x509if.assertedContexts",
+ FT_UINT32, BASE_DEC, VALS(T_assertedContexts_vals), 0,
+ "AttributeValueAssertion/assertedContexts", HFILL }},
+ { &hf_x509if_allContexts,
+ { "allContexts", "x509if.allContexts",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeValueAssertion/assertedContexts/allContexts", HFILL }},
+ { &hf_x509if_selectedContexts,
+ { "selectedContexts", "x509if.selectedContexts",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AttributeValueAssertion/assertedContexts/selectedContexts", HFILL }},
+ { &hf_x509if_selectedContexts_item,
+ { "Item", "x509if.selectedContexts_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeValueAssertion/assertedContexts/selectedContexts/_item", HFILL }},
+ { &hf_x509if_contextType1,
+ { "contextType", "x509if.contextType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ContextAssertion/contextType", HFILL }},
+ { &hf_x509if_contextValues1,
+ { "contextValues", "x509if.contextValues",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContextAssertion/contextValues", HFILL }},
+ { &hf_x509if_contextValues_item1,
+ { "Item", "x509if.contextValues_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ContextAssertion/contextValues/_item", HFILL }},
+ { &hf_x509if_assertedContexts1,
+ { "assertedContexts", "x509if.assertedContexts",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AttributeTypeAssertion/assertedContexts", HFILL }},
+ { &hf_x509if_assertedContexts_item,
+ { "Item", "x509if.assertedContexts_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeTypeAssertion/assertedContexts/_item", HFILL }},
{ &hf_x509if_rdnSequence,
{ "rdnSequence", "x509if.rdnSequence",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -334,7 +2035,7 @@ void proto_register_x509if(void) {
{ "Item", "x509if.RelativeDistinguishedName_item",
FT_NONE, BASE_NONE, NULL, 0,
"RelativeDistinguishedName/_item", HFILL }},
- { &hf_x509if_value,
+ { &hf_x509if_value1,
{ "value", "x509if.value",
FT_NONE, BASE_NONE, NULL, 0,
"AttributeTypeAndDistinguishedValue/value", HFILL }},
@@ -342,6 +2043,442 @@ void proto_register_x509if(void) {
{ "primaryDistinguished", "x509if.primaryDistinguished",
FT_BOOLEAN, 8, NULL, 0,
"AttributeTypeAndDistinguishedValue/primaryDistinguished", HFILL }},
+ { &hf_x509if_valuesWithContext1,
+ { "valuesWithContext", "x509if.valuesWithContext",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AttributeTypeAndDistinguishedValue/valuesWithContext", HFILL }},
+ { &hf_x509if_valuesWithContext_item1,
+ { "Item", "x509if.valuesWithContext_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeTypeAndDistinguishedValue/valuesWithContext/_item", HFILL }},
+ { &hf_x509if_distingAttrValue,
+ { "distingAttrValue", "x509if.distingAttrValue",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue", HFILL }},
+ { &hf_x509if_base,
+ { "base", "x509if.base",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SubtreeSpecification/base", HFILL }},
+ { &hf_x509if_specificExclusions,
+ { "specificExclusions", "x509if.specificExclusions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SubtreeSpecification/specificExclusions", HFILL }},
+ { &hf_x509if_specificExclusions_item,
+ { "Item", "x509if.specificExclusions_item",
+ FT_UINT32, BASE_DEC, VALS(T_specificExclusions_item_vals), 0,
+ "SubtreeSpecification/specificExclusions/_item", HFILL }},
+ { &hf_x509if_chopBefore,
+ { "chopBefore", "x509if.chopBefore",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_chopAfter,
+ { "chopAfter", "x509if.chopAfter",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_minimum,
+ { "minimum", "x509if.minimum",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_maximum,
+ { "maximum", "x509if.maximum",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_specificationFilter,
+ { "specificationFilter", "x509if.specificationFilter",
+ FT_UINT32, BASE_DEC, VALS(Refinement_vals), 0,
+ "SubtreeSpecification/specificationFilter", HFILL }},
+ { &hf_x509if_specificExclusions1,
+ { "specificExclusions", "x509if.specificExclusions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ChopSpecification/specificExclusions", HFILL }},
+ { &hf_x509if_specificExclusions_item1,
+ { "Item", "x509if.specificExclusions_item",
+ FT_UINT32, BASE_DEC, VALS(T_specificExclusions_item1_vals), 0,
+ "ChopSpecification/specificExclusions/_item", HFILL }},
+ { &hf_x509if_item,
+ { "item", "x509if.item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Refinement/item", HFILL }},
+ { &hf_x509if_and,
+ { "and", "x509if.and",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Refinement/and", HFILL }},
+ { &hf_x509if_and_item,
+ { "Item", "x509if.and_item",
+ FT_UINT32, BASE_DEC, VALS(Refinement_vals), 0,
+ "Refinement/and/_item", HFILL }},
+ { &hf_x509if_or,
+ { "or", "x509if.or",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Refinement/or", HFILL }},
+ { &hf_x509if_or_item,
+ { "Item", "x509if.or_item",
+ FT_UINT32, BASE_DEC, VALS(Refinement_vals), 0,
+ "Refinement/or/_item", HFILL }},
+ { &hf_x509if_not,
+ { "not", "x509if.not",
+ FT_UINT32, BASE_DEC, VALS(Refinement_vals), 0,
+ "Refinement/not", HFILL }},
+ { &hf_x509if_ruleIdentifier,
+ { "ruleIdentifier", "x509if.ruleIdentifier",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "DITStructureRule/ruleIdentifier", HFILL }},
+ { &hf_x509if_nameForm,
+ { "nameForm", "x509if.nameForm",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITStructureRule/nameForm", HFILL }},
+ { &hf_x509if_superiorStructureRules,
+ { "superiorStructureRules", "x509if.superiorStructureRules",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DITStructureRule/superiorStructureRules", HFILL }},
+ { &hf_x509if_superiorStructureRules_item,
+ { "Item", "x509if.superiorStructureRules_item",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "DITStructureRule/superiorStructureRules/_item", HFILL }},
+ { &hf_x509if_structuralObjectClass,
+ { "structuralObjectClass", "x509if.structuralObjectClass",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITContentRule/structuralObjectClass", HFILL }},
+ { &hf_x509if_auxiliaries,
+ { "auxiliaries", "x509if.auxiliaries",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DITContentRule/auxiliaries", HFILL }},
+ { &hf_x509if_auxiliaries_item,
+ { "Item", "x509if.auxiliaries_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITContentRule/auxiliaries/_item", HFILL }},
+ { &hf_x509if_mandatory,
+ { "mandatory", "x509if.mandatory",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DITContentRule/mandatory", HFILL }},
+ { &hf_x509if_mandatory_item,
+ { "Item", "x509if.mandatory_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITContentRule/mandatory/_item", HFILL }},
+ { &hf_x509if_optional,
+ { "optional", "x509if.optional",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DITContentRule/optional", HFILL }},
+ { &hf_x509if_optional_item,
+ { "Item", "x509if.optional_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITContentRule/optional/_item", HFILL }},
+ { &hf_x509if_precluded,
+ { "precluded", "x509if.precluded",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DITContentRule/precluded", HFILL }},
+ { &hf_x509if_precluded_item,
+ { "Item", "x509if.precluded_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITContentRule/precluded/_item", HFILL }},
+ { &hf_x509if_attributeType,
+ { "attributeType", "x509if.attributeType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_mandatoryContexts,
+ { "mandatoryContexts", "x509if.mandatoryContexts",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DITContextUse/mandatoryContexts", HFILL }},
+ { &hf_x509if_mandatoryContexts_item,
+ { "Item", "x509if.mandatoryContexts_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITContextUse/mandatoryContexts/_item", HFILL }},
+ { &hf_x509if_optionalContexts,
+ { "optionalContexts", "x509if.optionalContexts",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "DITContextUse/optionalContexts", HFILL }},
+ { &hf_x509if_optionalContexts_item,
+ { "Item", "x509if.optionalContexts_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DITContextUse/optionalContexts/_item", HFILL }},
+ { &hf_x509if_id,
+ { "id", "x509if.id",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_dmdId,
+ { "dmdId", "x509if.dmdId",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_serviceType,
+ { "serviceType", "x509if.serviceType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_userClass,
+ { "userClass", "x509if.userClass",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_inputAttributeTypes,
+ { "inputAttributeTypes", "x509if.inputAttributeTypes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_inputAttributeTypes_item,
+ { "Item", "x509if.inputAttributeTypes_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_attributeCombination,
+ { "attributeCombination", "x509if.attributeCombination",
+ FT_UINT32, BASE_DEC, VALS(AttributeCombination_vals), 0,
+ "", HFILL }},
+ { &hf_x509if_outputAttributeTypes,
+ { "outputAttributeTypes", "x509if.outputAttributeTypes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_outputAttributeTypes_item,
+ { "Item", "x509if.outputAttributeTypes_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_defaultControls,
+ { "defaultControls", "x509if.defaultControls",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_mandatoryControls,
+ { "mandatoryControls", "x509if.mandatoryControls",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_searchRuleControls,
+ { "searchRuleControls", "x509if.searchRuleControls",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_relaxation,
+ { "relaxation", "x509if.relaxation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_additionalControl,
+ { "additionalControl", "x509if.additionalControl",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_additionalControl_item,
+ { "Item", "x509if.additionalControl_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_allowedSubset,
+ { "allowedSubset", "x509if.allowedSubset",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_imposedSubset,
+ { "imposedSubset", "x509if.imposedSubset",
+ FT_UINT32, BASE_DEC, VALS(ImposedSubset_vals), 0,
+ "", HFILL }},
+ { &hf_x509if_entryLimit,
+ { "entryLimit", "x509if.entryLimit",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_name,
+ { "name", "x509if.name",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SearchRuleDescription/name", HFILL }},
+ { &hf_x509if_name_item,
+ { "Item", "x509if.name_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchRuleDescription/name/_item", HFILL }},
+ { &hf_x509if_description,
+ { "description", "x509if.description",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SearchRuleDescription/description", HFILL }},
+ { &hf_x509if_obsolete,
+ { "obsolete", "x509if.obsolete",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SearchRuleDescription/obsolete", HFILL }},
+ { &hf_x509if_includeSubtypes,
+ { "includeSubtypes", "x509if.includeSubtypes",
+ FT_BOOLEAN, 8, NULL, 0,
+ "RequestAttribute/includeSubtypes", HFILL }},
+ { &hf_x509if_selectedValues,
+ { "selectedValues", "x509if.selectedValues",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RequestAttribute/selectedValues", HFILL }},
+ { &hf_x509if_selectedValues_item,
+ { "Item", "x509if.selectedValues_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RequestAttribute/selectedValues/_item", HFILL }},
+ { &hf_x509if_defaultValues,
+ { "defaultValues", "x509if.defaultValues",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RequestAttribute/defaultValues", HFILL }},
+ { &hf_x509if_defaultValues_item,
+ { "Item", "x509if.defaultValues_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RequestAttribute/defaultValues/_item", HFILL }},
+ { &hf_x509if_entryType,
+ { "entryType", "x509if.entryType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "RequestAttribute/defaultValues/_item/entryType", HFILL }},
+ { &hf_x509if_values1,
+ { "values", "x509if.values",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RequestAttribute/defaultValues/_item/values", HFILL }},
+ { &hf_x509if_values_item1,
+ { "Item", "x509if.values_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RequestAttribute/defaultValues/_item/values/_item", HFILL }},
+ { &hf_x509if_contexts,
+ { "contexts", "x509if.contexts",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_contexts_item,
+ { "Item", "x509if.contexts_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_contextCombination,
+ { "contextCombination", "x509if.contextCombination",
+ FT_UINT32, BASE_DEC, VALS(ContextCombination_vals), 0,
+ "RequestAttribute/contextCombination", HFILL }},
+ { &hf_x509if_matchingUse,
+ { "matchingUse", "x509if.matchingUse",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RequestAttribute/matchingUse", HFILL }},
+ { &hf_x509if_matchingUse_item,
+ { "Item", "x509if.matchingUse_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RequestAttribute/matchingUse/_item", HFILL }},
+ { &hf_x509if_contextValue,
+ { "contextValue", "x509if.contextValue",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContextProfile/contextValue", HFILL }},
+ { &hf_x509if_contextValue_item,
+ { "Item", "x509if.contextValue_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ContextProfile/contextValue/_item", HFILL }},
+ { &hf_x509if_context,
+ { "context", "x509if.context",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "ContextCombination/context", HFILL }},
+ { &hf_x509if_and1,
+ { "and", "x509if.and",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContextCombination/and", HFILL }},
+ { &hf_x509if_and_item1,
+ { "Item", "x509if.and_item",
+ FT_UINT32, BASE_DEC, VALS(ContextCombination_vals), 0,
+ "ContextCombination/and/_item", HFILL }},
+ { &hf_x509if_or1,
+ { "or", "x509if.or",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ContextCombination/or", HFILL }},
+ { &hf_x509if_or_item1,
+ { "Item", "x509if.or_item",
+ FT_UINT32, BASE_DEC, VALS(ContextCombination_vals), 0,
+ "ContextCombination/or/_item", HFILL }},
+ { &hf_x509if_not1,
+ { "not", "x509if.not",
+ FT_UINT32, BASE_DEC, VALS(ContextCombination_vals), 0,
+ "ContextCombination/not", HFILL }},
+ { &hf_x509if_restrictionType,
+ { "restrictionType", "x509if.restrictionType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "MatchingUse/restrictionType", HFILL }},
+ { &hf_x509if_restrictionValue,
+ { "restrictionValue", "x509if.restrictionValue",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MatchingUse/restrictionValue", HFILL }},
+ { &hf_x509if_attribute,
+ { "attribute", "x509if.attribute",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_and2,
+ { "and", "x509if.and",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AttributeCombination/and", HFILL }},
+ { &hf_x509if_and_item2,
+ { "Item", "x509if.and_item",
+ FT_UINT32, BASE_DEC, VALS(AttributeCombination_vals), 0,
+ "AttributeCombination/and/_item", HFILL }},
+ { &hf_x509if_or2,
+ { "or", "x509if.or",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AttributeCombination/or", HFILL }},
+ { &hf_x509if_or_item2,
+ { "Item", "x509if.or_item",
+ FT_UINT32, BASE_DEC, VALS(AttributeCombination_vals), 0,
+ "AttributeCombination/or/_item", HFILL }},
+ { &hf_x509if_not2,
+ { "not", "x509if.not",
+ FT_UINT32, BASE_DEC, VALS(AttributeCombination_vals), 0,
+ "AttributeCombination/not", HFILL }},
+ { &hf_x509if_outputValues,
+ { "outputValues", "x509if.outputValues",
+ FT_UINT32, BASE_DEC, VALS(T_outputValues_vals), 0,
+ "ResultAttribute/outputValues", HFILL }},
+ { &hf_x509if_selectedValues1,
+ { "selectedValues", "x509if.selectedValues",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_selectedValues_item1,
+ { "Item", "x509if.selectedValues_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_matchedValuesOnly,
+ { "matchedValuesOnly", "x509if.matchedValuesOnly",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_x509if_default,
+ { "default", "x509if.default",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "EntryLimit/default", HFILL }},
+ { &hf_x509if_max,
+ { "max", "x509if.max",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "EntryLimit/max", HFILL }},
+ { &hf_x509if_basic,
+ { "basic", "x509if.basic",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RelaxationPolicy/basic", HFILL }},
+ { &hf_x509if_tightenings,
+ { "tightenings", "x509if.tightenings",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RelaxationPolicy/tightenings", HFILL }},
+ { &hf_x509if_tightenings_item,
+ { "Item", "x509if.tightenings_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RelaxationPolicy/tightenings/_item", HFILL }},
+ { &hf_x509if_relaxations,
+ { "relaxations", "x509if.relaxations",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "RelaxationPolicy/relaxations", HFILL }},
+ { &hf_x509if_relaxations_item,
+ { "Item", "x509if.relaxations_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RelaxationPolicy/relaxations/_item", HFILL }},
+ { &hf_x509if_maximum1,
+ { "maximum", "x509if.maximum",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "RelaxationPolicy/maximum", HFILL }},
+ { &hf_x509if_minimum1,
+ { "minimum", "x509if.minimum",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "RelaxationPolicy/minimum", HFILL }},
+ { &hf_x509if_mapping,
+ { "mapping", "x509if.mapping",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MRMapping/mapping", HFILL }},
+ { &hf_x509if_mapping_item,
+ { "Item", "x509if.mapping_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MRMapping/mapping/_item", HFILL }},
+ { &hf_x509if_substitution,
+ { "substitution", "x509if.substitution",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "MRMapping/substitution", HFILL }},
+ { &hf_x509if_substitution_item,
+ { "Item", "x509if.substitution_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "MRMapping/substitution/_item", HFILL }},
+ { &hf_x509if_mappingFunction,
+ { "mappingFunction", "x509if.mappingFunction",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Mapping/mappingFunction", HFILL }},
+ { &hf_x509if_level,
+ { "level", "x509if.level",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Mapping/level", HFILL }},
+ { &hf_x509if_oldMatchingRule,
+ { "oldMatchingRule", "x509if.oldMatchingRule",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "MRSubstitution/oldMatchingRule", HFILL }},
+ { &hf_x509if_newMatchingRule,
+ { "newMatchingRule", "x509if.newMatchingRule",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "MRSubstitution/newMatchingRule", HFILL }},
{ &hf_x509if_AllowedSubset_baseObject,
{ "baseObject", "x509if.baseObject",
FT_BOOLEAN, 8, NULL, 0x80,
@@ -366,11 +2503,71 @@ void proto_register_x509if(void) {
&ett_x509if_Attribute,
&ett_x509if_SET_OF_AttributeValue,
+ &ett_x509if_T_valuesWithContext,
+ &ett_x509if_T_valuesWithContext_item,
+ &ett_x509if_SET_OF_Context,
+ &ett_x509if_Context,
+ &ett_x509if_AttributeValueAssertion,
+ &ett_x509if_T_assertedContexts,
+ &ett_x509if_SET_OF_ContextAssertion,
+ &ett_x509if_ContextAssertion,
+ &ett_x509if_SET_OF_ContextValue,
+ &ett_x509if_AttributeTypeAssertion,
+ &ett_x509if_SEQUNCE_OF_ContextAssertion,
&ett_x509if_Name,
&ett_x509if_RDNSequence,
&ett_x509if_RelativeDistinguishedName,
&ett_x509if_AttributeTypeAndDistinguishedValue,
+ &ett_x509if_T_valuesWithContext1,
+ &ett_x509if_T_valuesWithContext_item1,
+ &ett_x509if_SubtreeSpecification,
+ &ett_x509if_T_specificExclusions,
+ &ett_x509if_T_specificExclusions_item,
+ &ett_x509if_ChopSpecification,
+ &ett_x509if_T_specificExclusions1,
+ &ett_x509if_T_specificExclusions_item1,
+ &ett_x509if_Refinement,
+ &ett_x509if_SET_OF_Refinement,
+ &ett_x509if_DITStructureRule,
+ &ett_x509if_SET_OF_RuleIdentifier,
+ &ett_x509if_DITContentRule,
+ &ett_x509if_SET_OF_OBJECT_IDENTIFIER,
+ &ett_x509if_SET_OF_AttributeId,
+ &ett_x509if_DITContextUse,
+ &ett_x509if_SearchRuleDescription,
+ &ett_x509if_SEQUNCE_OF_RequestAttribute,
+ &ett_x509if_SEQUNCE_OF_ResultAttribute,
+ &ett_x509if_SEQUNCE_OF_AttributeType,
+ &ett_x509if_SET_OF_DirectoryString,
+ &ett_x509if_SearchRule,
+ &ett_x509if_SearchRuleId,
&ett_x509if_AllowedSubset,
+ &ett_x509if_RequestAttribute,
+ &ett_x509if_SEQUNCE_OF_SelectedValues,
+ &ett_x509if_T_defaultValues,
+ &ett_x509if_T_defaultValues_item,
+ &ett_x509if_SEQUNCE_OF_DefaultValueValues,
+ &ett_x509if_SEQUNCE_OF_ContextProfile,
+ &ett_x509if_SEQUNCE_OF_MatchingUse,
+ &ett_x509if_ContextProfile,
+ &ett_x509if_SEQUNCE_OF_AttributeValue,
+ &ett_x509if_ContextCombination,
+ &ett_x509if_SEQUNCE_OF_ContextCombination,
+ &ett_x509if_MatchingUse,
+ &ett_x509if_AttributeCombination,
+ &ett_x509if_SEQUNCE_OF_AttributeCombination,
+ &ett_x509if_ResultAttribute,
+ &ett_x509if_T_outputValues,
+ &ett_x509if_OutputValues,
+ &ett_x509if_ControlOptions,
+ &ett_x509if_EntryLimit,
+ &ett_x509if_RelaxationPolicy,
+ &ett_x509if_SEQUNCE_OF_MRMapping,
+ &ett_x509if_MRMapping,
+ &ett_x509if_SEQUNCE_OF_Mapping,
+ &ett_x509if_SEQUNCE_OF_MRSubstitution,
+ &ett_x509if_Mapping,
+ &ett_x509if_MRSubstitution,
/*--- End of included file: packet-x509if-ettarr.c ---*/
diff --git a/epan/dissectors/packet-x509if.h b/epan/dissectors/packet-x509if.h
index 2fccde2737..5c3af5b03b 100644
--- a/epan/dissectors/packet-x509if.h
+++ b/epan/dissectors/packet-x509if.h
@@ -36,12 +36,51 @@
/*--- Included file: packet-x509if-exp.h ---*/
extern const value_string Name_vals[];
+extern const value_string Refinement_vals[];
+extern const value_string AttributeUsage_vals[];
+extern const value_string ImposedSubset_vals[];
+extern const value_string ContextCombination_vals[];
+extern const value_string AttributeCombination_vals[];
+extern const value_string OutputValues_vals[];
int dissect_x509if_Attribute(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_x509if_AttributeType(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_Context(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_AttributeValueAssertion(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_ContextAssertion(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_AttributeTypeAssertion(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_x509if_Name(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_x509if_RDNSequence(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_x509if_DistinguishedName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_x509if_RelativeDistinguishedName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_AttributeTypeAndDistinguishedValue(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_SubtreeSpecification(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_LocalName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_ChopSpecification(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_BaseDistance(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_Refinement(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_AttributeUsage(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_DITStructureRule(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_RuleIdentifier(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_DITContentRule(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_DITContextUse(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_SearchRuleDescription(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_SearchRule(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_SearchRuleId(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_AllowedSubset(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_ImposedSubset(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_RequestAttribute(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_ContextProfile(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_ContextCombination(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_MatchingUse(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_AttributeCombination(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_ResultAttribute(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_OutputValues(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_ControlOptions(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_EntryLimit(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_RelaxationPolicy(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_MRMapping(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_Mapping(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_x509if_MRSubstitution(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
/*--- End of included file: packet-x509if-exp.h ---*/