1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -b -q -L -p dop -c ./dop.cnf -s ./packet-dop-template -D . -O ../.. dop.asn */
7 * Routines for X.501 (DSA Operational Attributes) packet dissection
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
19 #include <epan/packet.h>
20 #include <epan/prefs.h>
21 #include <epan/oids.h>
22 #include <epan/asn1.h>
23 #include <epan/expert.h>
24 #include <wsutil/array.h>
26 #include "packet-ber.h"
27 #include "packet-acse.h"
28 #include "packet-ros.h"
30 #include "packet-x509sat.h"
31 #include "packet-x509af.h"
32 #include "packet-x509if.h"
33 #include "packet-dap.h"
34 #include "packet-dsp.h"
35 #include "packet-crmf.h"
38 #include "packet-dop.h"
40 #define PNAME "X.501 Directory Operational Binding Management Protocol"
44 void proto_register_dop(void);
45 void proto_reg_handoff_dop(void);
47 /* Initialize the protocol and registered fields */
50 static const char *binding_type
; /* binding_type */
52 static int call_dop_oid_callback(const char *base_string
, tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
, proto_tree
*tree
, const char *col_info
, void* data
);
54 static int hf_dop_DSEType_PDU
; /* DSEType */
55 static int hf_dop_SupplierInformation_PDU
; /* SupplierInformation */
56 static int hf_dop_ConsumerInformation_PDU
; /* ConsumerInformation */
57 static int hf_dop_SupplierAndConsumers_PDU
; /* SupplierAndConsumers */
58 static int hf_dop_HierarchicalAgreement_PDU
; /* HierarchicalAgreement */
59 static int hf_dop_SuperiorToSubordinate_PDU
; /* SuperiorToSubordinate */
60 static int hf_dop_SubordinateToSuperior_PDU
; /* SubordinateToSuperior */
61 static int hf_dop_SuperiorToSubordinateModification_PDU
; /* SuperiorToSubordinateModification */
62 static int hf_dop_NonSpecificHierarchicalAgreement_PDU
; /* NonSpecificHierarchicalAgreement */
63 static int hf_dop_NHOBSuperiorToSubordinate_PDU
; /* NHOBSuperiorToSubordinate */
64 static int hf_dop_NHOBSubordinateToSuperior_PDU
; /* NHOBSubordinateToSuperior */
65 static int hf_dop_ACIItem_PDU
; /* ACIItem */
66 static int hf_dop_ae_title
; /* Name */
67 static int hf_dop_address
; /* PresentationAddress */
68 static int hf_dop_protocolInformation
; /* SET_OF_ProtocolInformation */
69 static int hf_dop_protocolInformation_item
; /* ProtocolInformation */
70 static int hf_dop_agreementID
; /* OperationalBindingID */
71 static int hf_dop_supplier_is_master
; /* BOOLEAN */
72 static int hf_dop_non_supplying_master
; /* AccessPoint */
73 static int hf_dop_consumers
; /* SET_OF_AccessPoint */
74 static int hf_dop_consumers_item
; /* AccessPoint */
75 static int hf_dop_bindingType
; /* BindingType */
76 static int hf_dop_bindingID
; /* OperationalBindingID */
77 static int hf_dop_accessPoint
; /* AccessPoint */
78 static int hf_dop_establishInitiator
; /* EstablishArgumentInitiator */
79 static int hf_dop_establishSymmetric
; /* EstablishSymmetric */
80 static int hf_dop_establishRoleAInitiates
; /* EstablishRoleAInitiates */
81 static int hf_dop_establishRoleBInitiates
; /* EstablishRoleBInitiates */
82 static int hf_dop_agreement
; /* T_agreement */
83 static int hf_dop_valid
; /* Validity */
84 static int hf_dop_securityParameters
; /* SecurityParameters */
85 static int hf_dop_unsignedEstablishOperationalBindingArgument
; /* EstablishOperationalBindingArgumentData */
86 static int hf_dop_signedEstablishOperationalBindingArgument
; /* T_signedEstablishOperationalBindingArgument */
87 static int hf_dop_establishOperationalBindingArgument
; /* EstablishOperationalBindingArgumentData */
88 static int hf_dop_algorithmIdentifier
; /* AlgorithmIdentifier */
89 static int hf_dop_encrypted
; /* BIT_STRING */
90 static int hf_dop_identifier
; /* T_identifier */
91 static int hf_dop_version
; /* T_version */
92 static int hf_dop_validFrom
; /* T_validFrom */
93 static int hf_dop_now
; /* NULL */
94 static int hf_dop_time
; /* Time */
95 static int hf_dop_validUntil
; /* T_validUntil */
96 static int hf_dop_explicitTermination
; /* NULL */
97 static int hf_dop_utcTime
; /* UTCTime */
98 static int hf_dop_generalizedTime
; /* GeneralizedTime */
99 static int hf_dop_initiator
; /* T_initiator */
100 static int hf_dop_symmetric
; /* T_symmetric */
101 static int hf_dop_roleA_replies
; /* T_roleA_replies */
102 static int hf_dop_roleB_replies
; /* T_roleB_replies */
103 static int hf_dop_performer
; /* DistinguishedName */
104 static int hf_dop_aliasDereferenced
; /* BOOLEAN */
105 static int hf_dop_notification
; /* SEQUENCE_SIZE_1_MAX_OF_Attribute */
106 static int hf_dop_notification_item
; /* Attribute */
107 static int hf_dop_modifyInitiator
; /* ModifyArgumentInitiator */
108 static int hf_dop_modifySymmetric
; /* ModifySymmetric */
109 static int hf_dop_modifyRoleAInitiates
; /* ModifyRoleAInitiates */
110 static int hf_dop_modifyRoleBInitiates
; /* ModifyRoleBInitiates */
111 static int hf_dop_newBindingID
; /* OperationalBindingID */
112 static int hf_dop_argumentNewAgreement
; /* ArgumentNewAgreement */
113 static int hf_dop_unsignedModifyOperationalBindingArgument
; /* ModifyOperationalBindingArgumentData */
114 static int hf_dop_signedModifyOperationalBindingArgument
; /* T_signedModifyOperationalBindingArgument */
115 static int hf_dop_modifyOperationalBindingArgument
; /* ModifyOperationalBindingArgumentData */
116 static int hf_dop_null
; /* NULL */
117 static int hf_dop_protectedModifyResult
; /* ProtectedModifyResult */
118 static int hf_dop_modifyOperationalBindingResultData
; /* ModifyOperationalBindingResultData */
119 static int hf_dop_resultNewAgreement
; /* ResultNewAgreement */
120 static int hf_dop_terminateInitiator
; /* TerminateArgumentInitiator */
121 static int hf_dop_terminateSymmetric
; /* TerminateSymmetric */
122 static int hf_dop_terminateRoleAInitiates
; /* TerminateRoleAInitiates */
123 static int hf_dop_terminateRoleBInitiates
; /* TerminateRoleBInitiates */
124 static int hf_dop_terminateAtTime
; /* Time */
125 static int hf_dop_unsignedTerminateOperationalBindingArgument
; /* TerminateOperationalBindingArgumentData */
126 static int hf_dop_signedTerminateOperationalBindingArgument
; /* T_signedTerminateOperationalBindingArgument */
127 static int hf_dop_terminateOperationalBindingArgument
; /* TerminateOperationalBindingArgumentData */
128 static int hf_dop_protectedTerminateResult
; /* ProtectedTerminateResult */
129 static int hf_dop_terminateOperationalBindingResultData
; /* TerminateOperationalBindingResultData */
130 static int hf_dop_terminateAtGeneralizedTime
; /* GeneralizedTime */
131 static int hf_dop_problem
; /* T_problem */
132 static int hf_dop_agreementProposal
; /* T_agreementProposal */
133 static int hf_dop_retryAt
; /* Time */
134 static int hf_dop_rdn
; /* RelativeDistinguishedName */
135 static int hf_dop_immediateSuperior
; /* DistinguishedName */
136 static int hf_dop_contextPrefixInfo
; /* DITcontext */
137 static int hf_dop_entryInfo
; /* SET_OF_Attribute */
138 static int hf_dop_entryInfo_item
; /* Attribute */
139 static int hf_dop_immediateSuperiorInfo
; /* SET_OF_Attribute */
140 static int hf_dop_immediateSuperiorInfo_item
; /* Attribute */
141 static int hf_dop_DITcontext_item
; /* Vertex */
142 static int hf_dop_admPointInfo
; /* SET_OF_Attribute */
143 static int hf_dop_admPointInfo_item
; /* Attribute */
144 static int hf_dop_subentries
; /* SET_OF_SubentryInfo */
145 static int hf_dop_subentries_item
; /* SubentryInfo */
146 static int hf_dop_accessPoints
; /* MasterAndShadowAccessPoints */
147 static int hf_dop_info
; /* SET_OF_Attribute */
148 static int hf_dop_info_item
; /* Attribute */
149 static int hf_dop_alias
; /* BOOLEAN */
150 static int hf_dop_identificationTag
; /* DirectoryString */
151 static int hf_dop_precedence
; /* Precedence */
152 static int hf_dop_authenticationLevel
; /* AuthenticationLevel */
153 static int hf_dop_itemOrUserFirst
; /* T_itemOrUserFirst */
154 static int hf_dop_itemFirst
; /* T_itemFirst */
155 static int hf_dop_protectedItems
; /* ProtectedItems */
156 static int hf_dop_itemPermissions
; /* SET_OF_ItemPermission */
157 static int hf_dop_itemPermissions_item
; /* ItemPermission */
158 static int hf_dop_userFirst
; /* T_userFirst */
159 static int hf_dop_userClasses
; /* UserClasses */
160 static int hf_dop_userPermissions
; /* SET_OF_UserPermission */
161 static int hf_dop_userPermissions_item
; /* UserPermission */
162 static int hf_dop_entry
; /* NULL */
163 static int hf_dop_allUserAttributeTypes
; /* NULL */
164 static int hf_dop_attributeType
; /* SET_OF_AttributeType */
165 static int hf_dop_attributeType_item
; /* AttributeType */
166 static int hf_dop_allAttributeValues
; /* SET_OF_AttributeType */
167 static int hf_dop_allAttributeValues_item
; /* AttributeType */
168 static int hf_dop_allUserAttributeTypesAndValues
; /* NULL */
169 static int hf_dop_attributeValue
; /* SET_OF_AttributeTypeAndValue */
170 static int hf_dop_attributeValue_item
; /* AttributeTypeAndValue */
171 static int hf_dop_selfValue
; /* SET_OF_AttributeType */
172 static int hf_dop_selfValue_item
; /* AttributeType */
173 static int hf_dop_rangeOfValues
; /* Filter */
174 static int hf_dop_maxValueCount
; /* SET_OF_MaxValueCount */
175 static int hf_dop_maxValueCount_item
; /* MaxValueCount */
176 static int hf_dop_maxImmSub
; /* INTEGER */
177 static int hf_dop_restrictedBy
; /* SET_OF_RestrictedValue */
178 static int hf_dop_restrictedBy_item
; /* RestrictedValue */
179 static int hf_dop_contexts
; /* SET_OF_ContextAssertion */
180 static int hf_dop_contexts_item
; /* ContextAssertion */
181 static int hf_dop_classes
; /* Refinement */
182 static int hf_dop_type
; /* AttributeType */
183 static int hf_dop_maxCount
; /* INTEGER */
184 static int hf_dop_valuesIn
; /* AttributeType */
185 static int hf_dop_allUsers
; /* NULL */
186 static int hf_dop_thisEntry
; /* NULL */
187 static int hf_dop_name
; /* SET_OF_NameAndOptionalUID */
188 static int hf_dop_name_item
; /* NameAndOptionalUID */
189 static int hf_dop_userGroup
; /* SET_OF_NameAndOptionalUID */
190 static int hf_dop_userGroup_item
; /* NameAndOptionalUID */
191 static int hf_dop_subtree
; /* SET_OF_SubtreeSpecification */
192 static int hf_dop_subtree_item
; /* SubtreeSpecification */
193 static int hf_dop_grantsAndDenials
; /* GrantsAndDenials */
194 static int hf_dop_basicLevels
; /* T_basicLevels */
195 static int hf_dop_level
; /* T_level */
196 static int hf_dop_localQualifier
; /* INTEGER */
197 static int hf_dop_signed
; /* BOOLEAN */
198 static int hf_dop_other
; /* EXTERNAL */
200 static int hf_dop_DSEType_root
;
201 static int hf_dop_DSEType_glue
;
202 static int hf_dop_DSEType_cp
;
203 static int hf_dop_DSEType_entry
;
204 static int hf_dop_DSEType_alias
;
205 static int hf_dop_DSEType_subr
;
206 static int hf_dop_DSEType_nssr
;
207 static int hf_dop_DSEType_supr
;
208 static int hf_dop_DSEType_xr
;
209 static int hf_dop_DSEType_admPoint
;
210 static int hf_dop_DSEType_subentry
;
211 static int hf_dop_DSEType_shadow
;
212 static int hf_dop_DSEType_spare_bit12
;
213 static int hf_dop_DSEType_immSupr
;
214 static int hf_dop_DSEType_rhob
;
215 static int hf_dop_DSEType_sa
;
216 static int hf_dop_DSEType_dsSubentry
;
217 static int hf_dop_DSEType_familyMember
;
218 static int hf_dop_DSEType_ditBridge
;
219 static int hf_dop_DSEType_writeableCopy
;
220 static int hf_dop_GrantsAndDenials_grantAdd
;
221 static int hf_dop_GrantsAndDenials_denyAdd
;
222 static int hf_dop_GrantsAndDenials_grantDiscloseOnError
;
223 static int hf_dop_GrantsAndDenials_denyDiscloseOnError
;
224 static int hf_dop_GrantsAndDenials_grantRead
;
225 static int hf_dop_GrantsAndDenials_denyRead
;
226 static int hf_dop_GrantsAndDenials_grantRemove
;
227 static int hf_dop_GrantsAndDenials_denyRemove
;
228 static int hf_dop_GrantsAndDenials_grantBrowse
;
229 static int hf_dop_GrantsAndDenials_denyBrowse
;
230 static int hf_dop_GrantsAndDenials_grantExport
;
231 static int hf_dop_GrantsAndDenials_denyExport
;
232 static int hf_dop_GrantsAndDenials_grantImport
;
233 static int hf_dop_GrantsAndDenials_denyImport
;
234 static int hf_dop_GrantsAndDenials_grantModify
;
235 static int hf_dop_GrantsAndDenials_denyModify
;
236 static int hf_dop_GrantsAndDenials_grantRename
;
237 static int hf_dop_GrantsAndDenials_denyRename
;
238 static int hf_dop_GrantsAndDenials_grantReturnDN
;
239 static int hf_dop_GrantsAndDenials_denyReturnDN
;
240 static int hf_dop_GrantsAndDenials_grantCompare
;
241 static int hf_dop_GrantsAndDenials_denyCompare
;
242 static int hf_dop_GrantsAndDenials_grantFilterMatch
;
243 static int hf_dop_GrantsAndDenials_denyFilterMatch
;
244 static int hf_dop_GrantsAndDenials_grantInvoke
;
245 static int hf_dop_GrantsAndDenials_denyInvoke
;
247 /* Initialize the subtree pointers */
249 static int ett_dop_unknown
;
250 static int ett_dop_DSEType
;
251 static int ett_dop_SupplierOrConsumer
;
252 static int ett_dop_SET_OF_ProtocolInformation
;
253 static int ett_dop_SupplierInformation
;
254 static int ett_dop_SupplierAndConsumers
;
255 static int ett_dop_SET_OF_AccessPoint
;
256 static int ett_dop_EstablishOperationalBindingArgumentData
;
257 static int ett_dop_EstablishArgumentInitiator
;
258 static int ett_dop_EstablishOperationalBindingArgument
;
259 static int ett_dop_T_signedEstablishOperationalBindingArgument
;
260 static int ett_dop_OperationalBindingID
;
261 static int ett_dop_Validity
;
262 static int ett_dop_T_validFrom
;
263 static int ett_dop_T_validUntil
;
264 static int ett_dop_Time
;
265 static int ett_dop_EstablishOperationalBindingResult
;
266 static int ett_dop_T_initiator
;
267 static int ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute
;
268 static int ett_dop_ModifyOperationalBindingArgumentData
;
269 static int ett_dop_ModifyArgumentInitiator
;
270 static int ett_dop_ModifyOperationalBindingArgument
;
271 static int ett_dop_T_signedModifyOperationalBindingArgument
;
272 static int ett_dop_ModifyOperationalBindingResult
;
273 static int ett_dop_ProtectedModifyResult
;
274 static int ett_dop_ModifyOperationalBindingResultData
;
275 static int ett_dop_TerminateOperationalBindingArgumentData
;
276 static int ett_dop_TerminateArgumentInitiator
;
277 static int ett_dop_TerminateOperationalBindingArgument
;
278 static int ett_dop_T_signedTerminateOperationalBindingArgument
;
279 static int ett_dop_TerminateOperationalBindingResult
;
280 static int ett_dop_ProtectedTerminateResult
;
281 static int ett_dop_TerminateOperationalBindingResultData
;
282 static int ett_dop_OpBindingErrorParam
;
283 static int ett_dop_HierarchicalAgreement
;
284 static int ett_dop_SuperiorToSubordinate
;
285 static int ett_dop_SET_OF_Attribute
;
286 static int ett_dop_DITcontext
;
287 static int ett_dop_Vertex
;
288 static int ett_dop_SET_OF_SubentryInfo
;
289 static int ett_dop_SubentryInfo
;
290 static int ett_dop_SubordinateToSuperior
;
291 static int ett_dop_SuperiorToSubordinateModification
;
292 static int ett_dop_NonSpecificHierarchicalAgreement
;
293 static int ett_dop_NHOBSuperiorToSubordinate
;
294 static int ett_dop_NHOBSubordinateToSuperior
;
295 static int ett_dop_ACIItem
;
296 static int ett_dop_T_itemOrUserFirst
;
297 static int ett_dop_T_itemFirst
;
298 static int ett_dop_SET_OF_ItemPermission
;
299 static int ett_dop_T_userFirst
;
300 static int ett_dop_SET_OF_UserPermission
;
301 static int ett_dop_ProtectedItems
;
302 static int ett_dop_SET_OF_AttributeType
;
303 static int ett_dop_SET_OF_AttributeTypeAndValue
;
304 static int ett_dop_SET_OF_MaxValueCount
;
305 static int ett_dop_SET_OF_RestrictedValue
;
306 static int ett_dop_SET_OF_ContextAssertion
;
307 static int ett_dop_MaxValueCount
;
308 static int ett_dop_RestrictedValue
;
309 static int ett_dop_UserClasses
;
310 static int ett_dop_SET_OF_NameAndOptionalUID
;
311 static int ett_dop_SET_OF_SubtreeSpecification
;
312 static int ett_dop_ItemPermission
;
313 static int ett_dop_UserPermission
;
314 static int ett_dop_AuthenticationLevel
;
315 static int ett_dop_T_basicLevels
;
316 static int ett_dop_GrantsAndDenials
;
318 static expert_field ei_dop_unknown_binding_parameter
;
319 static expert_field ei_dop_unsupported_opcode
;
320 static expert_field ei_dop_unsupported_errcode
;
321 static expert_field ei_dop_unsupported_pdu
;
322 static expert_field ei_dop_zero_pdu
;
324 static dissector_handle_t dop_handle
;
326 /* Dissector table */
327 static dissector_table_t dop_dissector_table
;
329 static void append_oid(packet_info
*pinfo
, const char *oid
)
331 const char *name
= NULL
;
333 name
= oid_resolved_from_string(pinfo
->pool
, oid
);
334 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " %s", name
? name
: oid
);
338 static int * const DSEType_bits
[] = {
339 &hf_dop_DSEType_root
,
340 &hf_dop_DSEType_glue
,
342 &hf_dop_DSEType_entry
,
343 &hf_dop_DSEType_alias
,
344 &hf_dop_DSEType_subr
,
345 &hf_dop_DSEType_nssr
,
346 &hf_dop_DSEType_supr
,
348 &hf_dop_DSEType_admPoint
,
349 &hf_dop_DSEType_subentry
,
350 &hf_dop_DSEType_shadow
,
351 &hf_dop_DSEType_spare_bit12
,
352 &hf_dop_DSEType_immSupr
,
353 &hf_dop_DSEType_rhob
,
355 &hf_dop_DSEType_dsSubentry
,
356 &hf_dop_DSEType_familyMember
,
357 &hf_dop_DSEType_ditBridge
,
358 &hf_dop_DSEType_writeableCopy
,
363 dissect_dop_DSEType(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
364 offset
= dissect_ber_bitstring(implicit_tag
, actx
, tree
, tvb
, offset
,
365 DSEType_bits
, 20, hf_index
, ett_dop_DSEType
,
372 static const ber_sequence_t SET_OF_ProtocolInformation_set_of
[1] = {
373 { &hf_dop_protocolInformation_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509sat_ProtocolInformation
},
377 dissect_dop_SET_OF_ProtocolInformation(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
378 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
379 SET_OF_ProtocolInformation_set_of
, hf_index
, ett_dop_SET_OF_ProtocolInformation
);
387 dissect_dop_T_identifier(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
390 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
394 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, " id=%d", value
);
405 dissect_dop_T_version(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
408 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
412 col_append_fstr(actx
->pinfo
->cinfo
, COL_INFO
, ",%d", value
);
419 static const ber_sequence_t OperationalBindingID_sequence
[] = {
420 { &hf_dop_identifier
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_dop_T_identifier
},
421 { &hf_dop_version
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_dop_T_version
},
422 { NULL
, 0, 0, 0, NULL
}
426 dissect_dop_OperationalBindingID(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
427 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
428 OperationalBindingID_sequence
, hf_index
, ett_dop_OperationalBindingID
);
434 static const ber_sequence_t SupplierOrConsumer_set
[] = {
435 { &hf_dop_ae_title
, BER_CLASS_CON
, 0, 0, dissect_x509if_Name
},
436 { &hf_dop_address
, BER_CLASS_CON
, 1, 0, dissect_x509sat_PresentationAddress
},
437 { &hf_dop_protocolInformation
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_ProtocolInformation
},
438 { &hf_dop_agreementID
, BER_CLASS_CON
, 3, 0, dissect_dop_OperationalBindingID
},
439 { NULL
, 0, 0, 0, NULL
}
443 dissect_dop_SupplierOrConsumer(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
444 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
445 SupplierOrConsumer_set
, hf_index
, ett_dop_SupplierOrConsumer
);
453 dissect_dop_BOOLEAN(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
454 offset
= dissect_ber_boolean(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
);
460 static const ber_sequence_t SupplierInformation_set
[] = {
461 { &hf_dop_ae_title
, BER_CLASS_CON
, 0, 0, dissect_x509if_Name
},
462 { &hf_dop_address
, BER_CLASS_CON
, 1, 0, dissect_x509sat_PresentationAddress
},
463 { &hf_dop_protocolInformation
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_ProtocolInformation
},
464 { &hf_dop_agreementID
, BER_CLASS_CON
, 3, 0, dissect_dop_OperationalBindingID
},
465 { &hf_dop_supplier_is_master
, BER_CLASS_CON
, 4, BER_FLAGS_OPTIONAL
, dissect_dop_BOOLEAN
},
466 { &hf_dop_non_supplying_master
, BER_CLASS_CON
, 5, BER_FLAGS_OPTIONAL
, dissect_dsp_AccessPoint
},
467 { NULL
, 0, 0, 0, NULL
}
471 dissect_dop_SupplierInformation(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
472 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
473 SupplierInformation_set
, hf_index
, ett_dop_SupplierInformation
);
481 dissect_dop_ConsumerInformation(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
482 offset
= dissect_dop_SupplierOrConsumer(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
488 static const ber_sequence_t SET_OF_AccessPoint_set_of
[1] = {
489 { &hf_dop_consumers_item
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_dsp_AccessPoint
},
493 dissect_dop_SET_OF_AccessPoint(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
494 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
495 SET_OF_AccessPoint_set_of
, hf_index
, ett_dop_SET_OF_AccessPoint
);
501 static const ber_sequence_t SupplierAndConsumers_set
[] = {
502 { &hf_dop_ae_title
, BER_CLASS_CON
, 0, 0, dissect_x509if_Name
},
503 { &hf_dop_address
, BER_CLASS_CON
, 1, 0, dissect_x509sat_PresentationAddress
},
504 { &hf_dop_protocolInformation
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_ProtocolInformation
},
505 { &hf_dop_consumers
, BER_CLASS_CON
, 3, 0, dissect_dop_SET_OF_AccessPoint
},
506 { NULL
, 0, 0, 0, NULL
}
510 dissect_dop_SupplierAndConsumers(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
511 offset
= dissect_ber_set(implicit_tag
, actx
, tree
, tvb
, offset
,
512 SupplierAndConsumers_set
, hf_index
, ett_dop_SupplierAndConsumers
);
520 dissect_dop_DSAOperationalManagementBindArgument(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
521 offset
= dissect_dap_DirectoryBindArgument(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
529 dissect_dop_DSAOperationalManagementBindResult(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
530 offset
= dissect_dap_DirectoryBindArgument(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
538 dissect_dop_DSAOperationalManagementBindError(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
539 offset
= dissect_dap_DirectoryBindError(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
547 dissect_dop_BindingType(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
548 offset
= dissect_ber_object_identifier_str(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, &binding_type
);
550 append_oid(actx
->pinfo
, binding_type
);
557 dissect_dop_EstablishSymmetric(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
559 offset
= call_dop_oid_callback("establish.symmetric", tvb
, offset
, actx
->pinfo
, tree
, "symmetric", actx
->private_data
);
568 dissect_dop_EstablishRoleAInitiates(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
570 offset
= call_dop_oid_callback("establish.rolea", tvb
, offset
, actx
->pinfo
, tree
, "roleA", actx
->private_data
);
579 dissect_dop_EstablishRoleBInitiates(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
581 offset
= call_dop_oid_callback("establish.roleb", tvb
, offset
, actx
->pinfo
, tree
, "roleB", actx
->private_data
);
588 static const value_string dop_EstablishArgumentInitiator_vals
[] = {
590 { 4, "roleA-initiates" },
591 { 5, "roleB-initiates" },
595 static const ber_choice_t EstablishArgumentInitiator_choice
[] = {
596 { 3, &hf_dop_establishSymmetric
, BER_CLASS_CON
, 3, 0, dissect_dop_EstablishSymmetric
},
597 { 4, &hf_dop_establishRoleAInitiates
, BER_CLASS_CON
, 4, 0, dissect_dop_EstablishRoleAInitiates
},
598 { 5, &hf_dop_establishRoleBInitiates
, BER_CLASS_CON
, 5, 0, dissect_dop_EstablishRoleBInitiates
},
599 { 0, NULL
, 0, 0, 0, NULL
}
603 dissect_dop_EstablishArgumentInitiator(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
604 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
605 EstablishArgumentInitiator_choice
, hf_index
, ett_dop_EstablishArgumentInitiator
,
614 dissect_dop_T_agreement(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
616 offset
= call_dop_oid_callback("agreement", tvb
, offset
, actx
->pinfo
, tree
, NULL
, actx
->private_data
);
625 dissect_dop_NULL(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
626 offset
= dissect_ber_null(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
);
634 dissect_dop_UTCTime(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
635 offset
= dissect_ber_UTCTime(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
, NULL
);
643 dissect_dop_GeneralizedTime(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
644 offset
= dissect_ber_GeneralizedTime(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
);
650 static const value_string dop_Time_vals
[] = {
652 { 1, "generalizedTime" },
656 static const ber_choice_t Time_choice
[] = {
657 { 0, &hf_dop_utcTime
, BER_CLASS_UNI
, BER_UNI_TAG_UTCTime
, BER_FLAGS_NOOWNTAG
, dissect_dop_UTCTime
},
658 { 1, &hf_dop_generalizedTime
, BER_CLASS_UNI
, BER_UNI_TAG_GeneralizedTime
, BER_FLAGS_NOOWNTAG
, dissect_dop_GeneralizedTime
},
659 { 0, NULL
, 0, 0, 0, NULL
}
663 dissect_dop_Time(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
664 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
665 Time_choice
, hf_index
, ett_dop_Time
,
672 static const value_string dop_T_validFrom_vals
[] = {
678 static const ber_choice_t T_validFrom_choice
[] = {
679 { 0, &hf_dop_now
, BER_CLASS_CON
, 0, 0, dissect_dop_NULL
},
680 { 1, &hf_dop_time
, BER_CLASS_CON
, 1, 0, dissect_dop_Time
},
681 { 0, NULL
, 0, 0, 0, NULL
}
685 dissect_dop_T_validFrom(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
686 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
687 T_validFrom_choice
, hf_index
, ett_dop_T_validFrom
,
694 static const value_string dop_T_validUntil_vals
[] = {
695 { 0, "explicitTermination" },
700 static const ber_choice_t T_validUntil_choice
[] = {
701 { 0, &hf_dop_explicitTermination
, BER_CLASS_CON
, 0, 0, dissect_dop_NULL
},
702 { 1, &hf_dop_time
, BER_CLASS_CON
, 1, 0, dissect_dop_Time
},
703 { 0, NULL
, 0, 0, 0, NULL
}
707 dissect_dop_T_validUntil(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
708 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
709 T_validUntil_choice
, hf_index
, ett_dop_T_validUntil
,
716 static const ber_sequence_t Validity_sequence
[] = {
717 { &hf_dop_validFrom
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
, dissect_dop_T_validFrom
},
718 { &hf_dop_validUntil
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_T_validUntil
},
719 { NULL
, 0, 0, 0, NULL
}
723 dissect_dop_Validity(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
724 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
725 Validity_sequence
, hf_index
, ett_dop_Validity
);
731 static const ber_sequence_t EstablishOperationalBindingArgumentData_sequence
[] = {
732 { &hf_dop_bindingType
, BER_CLASS_CON
, 0, 0, dissect_dop_BindingType
},
733 { &hf_dop_bindingID
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_OperationalBindingID
},
734 { &hf_dop_accessPoint
, BER_CLASS_CON
, 2, 0, dissect_dsp_AccessPoint
},
735 { &hf_dop_establishInitiator
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_dop_EstablishArgumentInitiator
},
736 { &hf_dop_agreement
, BER_CLASS_CON
, 6, 0, dissect_dop_T_agreement
},
737 { &hf_dop_valid
, BER_CLASS_CON
, 7, BER_FLAGS_OPTIONAL
, dissect_dop_Validity
},
738 { &hf_dop_securityParameters
, BER_CLASS_CON
, 8, BER_FLAGS_OPTIONAL
, dissect_dap_SecurityParameters
},
739 { NULL
, 0, 0, 0, NULL
}
743 dissect_dop_EstablishOperationalBindingArgumentData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
744 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
745 EstablishOperationalBindingArgumentData_sequence
, hf_index
, ett_dop_EstablishOperationalBindingArgumentData
);
753 dissect_dop_BIT_STRING(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
754 offset
= dissect_ber_bitstring(implicit_tag
, actx
, tree
, tvb
, offset
,
755 NULL
, 0, hf_index
, -1,
762 static const ber_sequence_t T_signedEstablishOperationalBindingArgument_sequence
[] = {
763 { &hf_dop_establishOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_EstablishOperationalBindingArgumentData
},
764 { &hf_dop_algorithmIdentifier
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509af_AlgorithmIdentifier
},
765 { &hf_dop_encrypted
, BER_CLASS_UNI
, BER_UNI_TAG_BITSTRING
, BER_FLAGS_NOOWNTAG
, dissect_dop_BIT_STRING
},
766 { NULL
, 0, 0, 0, NULL
}
770 dissect_dop_T_signedEstablishOperationalBindingArgument(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
771 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
772 T_signedEstablishOperationalBindingArgument_sequence
, hf_index
, ett_dop_T_signedEstablishOperationalBindingArgument
);
778 static const ber_choice_t EstablishOperationalBindingArgument_choice
[] = {
779 { 0, &hf_dop_unsignedEstablishOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_EstablishOperationalBindingArgumentData
},
780 { 1, &hf_dop_signedEstablishOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_T_signedEstablishOperationalBindingArgument
},
781 { 0, NULL
, 0, 0, 0, NULL
}
785 dissect_dop_EstablishOperationalBindingArgument(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
786 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
787 EstablishOperationalBindingArgument_choice
, hf_index
, ett_dop_EstablishOperationalBindingArgument
,
796 dissect_dop_T_symmetric(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
798 offset
= call_dop_oid_callback("establish.symmetric", tvb
, offset
, actx
->pinfo
, tree
, "symmetric", actx
->private_data
);
807 dissect_dop_T_roleA_replies(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
809 offset
= call_dop_oid_callback("establish.rolea", tvb
, offset
, actx
->pinfo
, tree
, "roleA", actx
->private_data
);
818 dissect_dop_T_roleB_replies(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
820 offset
= call_dop_oid_callback("establish.roleb", tvb
, offset
, actx
->pinfo
, tree
, "roleB", actx
->private_data
);
827 static const value_string dop_T_initiator_vals
[] = {
829 { 4, "roleA-replies" },
830 { 5, "roleB-replies" },
834 static const ber_choice_t T_initiator_choice
[] = {
835 { 3, &hf_dop_symmetric
, BER_CLASS_CON
, 3, 0, dissect_dop_T_symmetric
},
836 { 4, &hf_dop_roleA_replies
, BER_CLASS_CON
, 4, 0, dissect_dop_T_roleA_replies
},
837 { 5, &hf_dop_roleB_replies
, BER_CLASS_CON
, 5, 0, dissect_dop_T_roleB_replies
},
838 { 0, NULL
, 0, 0, 0, NULL
}
842 dissect_dop_T_initiator(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
843 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
844 T_initiator_choice
, hf_index
, ett_dop_T_initiator
,
851 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of
[1] = {
852 { &hf_dop_notification_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509if_Attribute
},
856 dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
857 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
858 SEQUENCE_SIZE_1_MAX_OF_Attribute_sequence_of
, hf_index
, ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute
);
864 static const ber_sequence_t EstablishOperationalBindingResult_sequence
[] = {
865 { &hf_dop_bindingType
, BER_CLASS_CON
, 0, 0, dissect_dop_BindingType
},
866 { &hf_dop_bindingID
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_OperationalBindingID
},
867 { &hf_dop_accessPoint
, BER_CLASS_CON
, 2, 0, dissect_dsp_AccessPoint
},
868 { &hf_dop_initiator
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_dop_T_initiator
},
869 { &hf_dop_securityParameters
, BER_CLASS_CON
, 30, BER_FLAGS_OPTIONAL
, dissect_dap_SecurityParameters
},
870 { &hf_dop_performer
, BER_CLASS_CON
, 29, BER_FLAGS_OPTIONAL
, dissect_x509if_DistinguishedName
},
871 { &hf_dop_aliasDereferenced
, BER_CLASS_CON
, 28, BER_FLAGS_OPTIONAL
, dissect_dop_BOOLEAN
},
872 { &hf_dop_notification
, BER_CLASS_CON
, 27, BER_FLAGS_OPTIONAL
, dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute
},
873 { NULL
, 0, 0, 0, NULL
}
877 dissect_dop_EstablishOperationalBindingResult(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
878 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
879 EstablishOperationalBindingResult_sequence
, hf_index
, ett_dop_EstablishOperationalBindingResult
);
887 dissect_dop_ModifySymmetric(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
889 offset
= call_dop_oid_callback("modify.symmetric", tvb
, offset
, actx
->pinfo
, tree
, "symmetric", actx
->private_data
);
898 dissect_dop_ModifyRoleAInitiates(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
900 offset
= call_dop_oid_callback("modify.rolea", tvb
, offset
, actx
->pinfo
, tree
, "roleA", actx
->private_data
);
909 dissect_dop_ModifyRoleBInitiates(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
911 offset
= call_dop_oid_callback("modify.roleb", tvb
, offset
, actx
->pinfo
, tree
, "roleB", actx
->private_data
);
918 static const value_string dop_ModifyArgumentInitiator_vals
[] = {
920 { 4, "roleA-initiates" },
921 { 5, "roleB-initiates" },
925 static const ber_choice_t ModifyArgumentInitiator_choice
[] = {
926 { 3, &hf_dop_modifySymmetric
, BER_CLASS_CON
, 3, 0, dissect_dop_ModifySymmetric
},
927 { 4, &hf_dop_modifyRoleAInitiates
, BER_CLASS_CON
, 4, 0, dissect_dop_ModifyRoleAInitiates
},
928 { 5, &hf_dop_modifyRoleBInitiates
, BER_CLASS_CON
, 5, 0, dissect_dop_ModifyRoleBInitiates
},
929 { 0, NULL
, 0, 0, 0, NULL
}
933 dissect_dop_ModifyArgumentInitiator(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
934 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
935 ModifyArgumentInitiator_choice
, hf_index
, ett_dop_ModifyArgumentInitiator
,
944 dissect_dop_ArgumentNewAgreement(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
946 offset
= call_dop_oid_callback("agreement", tvb
, offset
, actx
->pinfo
, tree
, NULL
, actx
->private_data
);
954 static const ber_sequence_t ModifyOperationalBindingArgumentData_sequence
[] = {
955 { &hf_dop_bindingType
, BER_CLASS_CON
, 0, 0, dissect_dop_BindingType
},
956 { &hf_dop_bindingID
, BER_CLASS_CON
, 1, 0, dissect_dop_OperationalBindingID
},
957 { &hf_dop_accessPoint
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dsp_AccessPoint
},
958 { &hf_dop_modifyInitiator
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_dop_ModifyArgumentInitiator
},
959 { &hf_dop_newBindingID
, BER_CLASS_CON
, 6, 0, dissect_dop_OperationalBindingID
},
960 { &hf_dop_argumentNewAgreement
, BER_CLASS_CON
, 7, BER_FLAGS_OPTIONAL
, dissect_dop_ArgumentNewAgreement
},
961 { &hf_dop_valid
, BER_CLASS_CON
, 8, BER_FLAGS_OPTIONAL
, dissect_dop_Validity
},
962 { &hf_dop_securityParameters
, BER_CLASS_CON
, 9, BER_FLAGS_OPTIONAL
, dissect_dap_SecurityParameters
},
963 { NULL
, 0, 0, 0, NULL
}
967 dissect_dop_ModifyOperationalBindingArgumentData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
968 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
969 ModifyOperationalBindingArgumentData_sequence
, hf_index
, ett_dop_ModifyOperationalBindingArgumentData
);
975 static const ber_sequence_t T_signedModifyOperationalBindingArgument_sequence
[] = {
976 { &hf_dop_modifyOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_ModifyOperationalBindingArgumentData
},
977 { &hf_dop_algorithmIdentifier
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509af_AlgorithmIdentifier
},
978 { &hf_dop_encrypted
, BER_CLASS_UNI
, BER_UNI_TAG_BITSTRING
, BER_FLAGS_NOOWNTAG
, dissect_dop_BIT_STRING
},
979 { NULL
, 0, 0, 0, NULL
}
983 dissect_dop_T_signedModifyOperationalBindingArgument(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
984 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
985 T_signedModifyOperationalBindingArgument_sequence
, hf_index
, ett_dop_T_signedModifyOperationalBindingArgument
);
991 static const ber_choice_t ModifyOperationalBindingArgument_choice
[] = {
992 { 0, &hf_dop_unsignedModifyOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_ModifyOperationalBindingArgumentData
},
993 { 1, &hf_dop_signedModifyOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_T_signedModifyOperationalBindingArgument
},
994 { 0, NULL
, 0, 0, 0, NULL
}
998 dissect_dop_ModifyOperationalBindingArgument(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
999 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1000 ModifyOperationalBindingArgument_choice
, hf_index
, ett_dop_ModifyOperationalBindingArgument
,
1009 dissect_dop_ResultNewAgreement(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1011 offset
= call_dop_oid_callback("agreement", tvb
, offset
, actx
->pinfo
, tree
, NULL
, actx
->private_data
);
1018 static const ber_sequence_t ModifyOperationalBindingResultData_sequence
[] = {
1019 { &hf_dop_newBindingID
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_OperationalBindingID
},
1020 { &hf_dop_bindingType
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_dop_BindingType
},
1021 { &hf_dop_resultNewAgreement
, BER_CLASS_ANY
, 0, BER_FLAGS_NOOWNTAG
, dissect_dop_ResultNewAgreement
},
1022 { &hf_dop_valid
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
, dissect_dop_Validity
},
1023 { &hf_dop_securityParameters
, BER_CLASS_CON
, 30, BER_FLAGS_OPTIONAL
, dissect_dap_SecurityParameters
},
1024 { &hf_dop_performer
, BER_CLASS_CON
, 29, BER_FLAGS_OPTIONAL
, dissect_x509if_DistinguishedName
},
1025 { &hf_dop_aliasDereferenced
, BER_CLASS_CON
, 28, BER_FLAGS_OPTIONAL
, dissect_dop_BOOLEAN
},
1026 { &hf_dop_notification
, BER_CLASS_CON
, 27, BER_FLAGS_OPTIONAL
, dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute
},
1027 { NULL
, 0, 0, 0, NULL
}
1031 dissect_dop_ModifyOperationalBindingResultData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1032 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1033 ModifyOperationalBindingResultData_sequence
, hf_index
, ett_dop_ModifyOperationalBindingResultData
);
1039 static const ber_sequence_t ProtectedModifyResult_sequence
[] = {
1040 { &hf_dop_modifyOperationalBindingResultData
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_ModifyOperationalBindingResultData
},
1041 { &hf_dop_algorithmIdentifier
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509af_AlgorithmIdentifier
},
1042 { &hf_dop_encrypted
, BER_CLASS_UNI
, BER_UNI_TAG_BITSTRING
, BER_FLAGS_NOOWNTAG
, dissect_dop_BIT_STRING
},
1043 { NULL
, 0, 0, 0, NULL
}
1047 dissect_dop_ProtectedModifyResult(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1048 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1049 ProtectedModifyResult_sequence
, hf_index
, ett_dop_ProtectedModifyResult
);
1055 static const ber_choice_t ModifyOperationalBindingResult_choice
[] = {
1056 { 0, &hf_dop_null
, BER_CLASS_CON
, 0, 0, dissect_dop_NULL
},
1057 { 1, &hf_dop_protectedModifyResult
, BER_CLASS_CON
, 1, 0, dissect_dop_ProtectedModifyResult
},
1058 { 0, NULL
, 0, 0, 0, NULL
}
1062 dissect_dop_ModifyOperationalBindingResult(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1063 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1064 ModifyOperationalBindingResult_choice
, hf_index
, ett_dop_ModifyOperationalBindingResult
,
1073 dissect_dop_TerminateSymmetric(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1075 offset
= call_dop_oid_callback("terminate.symmetric", tvb
, offset
, actx
->pinfo
, tree
, "symmetric", actx
->private_data
);
1084 dissect_dop_TerminateRoleAInitiates(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1086 offset
= call_dop_oid_callback("terminate.rolea", tvb
, offset
, actx
->pinfo
, tree
, "roleA", actx
->private_data
);
1095 dissect_dop_TerminateRoleBInitiates(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1097 offset
= call_dop_oid_callback("terminate.roleb", tvb
, offset
, actx
->pinfo
, tree
, "roleB", actx
->private_data
);
1104 static const value_string dop_TerminateArgumentInitiator_vals
[] = {
1106 { 3, "roleA-initiates" },
1107 { 4, "roleB-initiates" },
1111 static const ber_choice_t TerminateArgumentInitiator_choice
[] = {
1112 { 2, &hf_dop_terminateSymmetric
, BER_CLASS_CON
, 2, 0, dissect_dop_TerminateSymmetric
},
1113 { 3, &hf_dop_terminateRoleAInitiates
, BER_CLASS_CON
, 3, 0, dissect_dop_TerminateRoleAInitiates
},
1114 { 4, &hf_dop_terminateRoleBInitiates
, BER_CLASS_CON
, 4, 0, dissect_dop_TerminateRoleBInitiates
},
1115 { 0, NULL
, 0, 0, 0, NULL
}
1119 dissect_dop_TerminateArgumentInitiator(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1120 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1121 TerminateArgumentInitiator_choice
, hf_index
, ett_dop_TerminateArgumentInitiator
,
1128 static const ber_sequence_t TerminateOperationalBindingArgumentData_sequence
[] = {
1129 { &hf_dop_bindingType
, BER_CLASS_CON
, 0, 0, dissect_dop_BindingType
},
1130 { &hf_dop_bindingID
, BER_CLASS_CON
, 1, 0, dissect_dop_OperationalBindingID
},
1131 { &hf_dop_terminateInitiator
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_dop_TerminateArgumentInitiator
},
1132 { &hf_dop_terminateAtTime
, BER_CLASS_CON
, 5, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOTCHKTAG
, dissect_dop_Time
},
1133 { &hf_dop_securityParameters
, BER_CLASS_CON
, 6, BER_FLAGS_OPTIONAL
, dissect_dap_SecurityParameters
},
1134 { NULL
, 0, 0, 0, NULL
}
1138 dissect_dop_TerminateOperationalBindingArgumentData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1139 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1140 TerminateOperationalBindingArgumentData_sequence
, hf_index
, ett_dop_TerminateOperationalBindingArgumentData
);
1146 static const ber_sequence_t T_signedTerminateOperationalBindingArgument_sequence
[] = {
1147 { &hf_dop_terminateOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_TerminateOperationalBindingArgumentData
},
1148 { &hf_dop_algorithmIdentifier
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509af_AlgorithmIdentifier
},
1149 { &hf_dop_encrypted
, BER_CLASS_UNI
, BER_UNI_TAG_BITSTRING
, BER_FLAGS_NOOWNTAG
, dissect_dop_BIT_STRING
},
1150 { NULL
, 0, 0, 0, NULL
}
1154 dissect_dop_T_signedTerminateOperationalBindingArgument(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1155 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1156 T_signedTerminateOperationalBindingArgument_sequence
, hf_index
, ett_dop_T_signedTerminateOperationalBindingArgument
);
1162 static const ber_choice_t TerminateOperationalBindingArgument_choice
[] = {
1163 { 0, &hf_dop_unsignedTerminateOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_TerminateOperationalBindingArgumentData
},
1164 { 1, &hf_dop_signedTerminateOperationalBindingArgument
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_T_signedTerminateOperationalBindingArgument
},
1165 { 0, NULL
, 0, 0, 0, NULL
}
1169 dissect_dop_TerminateOperationalBindingArgument(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1170 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1171 TerminateOperationalBindingArgument_choice
, hf_index
, ett_dop_TerminateOperationalBindingArgument
,
1178 static const ber_sequence_t TerminateOperationalBindingResultData_sequence
[] = {
1179 { &hf_dop_bindingID
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_OperationalBindingID
},
1180 { &hf_dop_bindingType
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_dop_BindingType
},
1181 { &hf_dop_terminateAtGeneralizedTime
, BER_CLASS_UNI
, BER_UNI_TAG_GeneralizedTime
, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
, dissect_dop_GeneralizedTime
},
1182 { &hf_dop_securityParameters
, BER_CLASS_CON
, 30, BER_FLAGS_OPTIONAL
, dissect_dap_SecurityParameters
},
1183 { &hf_dop_performer
, BER_CLASS_CON
, 29, BER_FLAGS_OPTIONAL
, dissect_x509if_DistinguishedName
},
1184 { &hf_dop_aliasDereferenced
, BER_CLASS_CON
, 28, BER_FLAGS_OPTIONAL
, dissect_dop_BOOLEAN
},
1185 { &hf_dop_notification
, BER_CLASS_CON
, 27, BER_FLAGS_OPTIONAL
, dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute
},
1186 { NULL
, 0, 0, 0, NULL
}
1190 dissect_dop_TerminateOperationalBindingResultData(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1191 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1192 TerminateOperationalBindingResultData_sequence
, hf_index
, ett_dop_TerminateOperationalBindingResultData
);
1198 static const ber_sequence_t ProtectedTerminateResult_sequence
[] = {
1199 { &hf_dop_terminateOperationalBindingResultData
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_TerminateOperationalBindingResultData
},
1200 { &hf_dop_algorithmIdentifier
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509af_AlgorithmIdentifier
},
1201 { &hf_dop_encrypted
, BER_CLASS_UNI
, BER_UNI_TAG_BITSTRING
, BER_FLAGS_NOOWNTAG
, dissect_dop_BIT_STRING
},
1202 { NULL
, 0, 0, 0, NULL
}
1206 dissect_dop_ProtectedTerminateResult(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1207 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1208 ProtectedTerminateResult_sequence
, hf_index
, ett_dop_ProtectedTerminateResult
);
1214 static const ber_choice_t TerminateOperationalBindingResult_choice
[] = {
1215 { 0, &hf_dop_null
, BER_CLASS_CON
, 0, 0, dissect_dop_NULL
},
1216 { 1, &hf_dop_protectedTerminateResult
, BER_CLASS_CON
, 1, 0, dissect_dop_ProtectedTerminateResult
},
1217 { 0, NULL
, 0, 0, 0, NULL
}
1221 dissect_dop_TerminateOperationalBindingResult(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1222 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1223 TerminateOperationalBindingResult_choice
, hf_index
, ett_dop_TerminateOperationalBindingResult
,
1230 static const value_string dop_T_problem_vals
[] = {
1232 { 1, "duplicateID" },
1233 { 2, "unsupportedBindingType" },
1234 { 3, "notAllowedForRole" },
1235 { 4, "parametersMissing" },
1236 { 5, "roleAssignment" },
1237 { 6, "invalidStartTime" },
1238 { 7, "invalidEndTime" },
1239 { 8, "invalidAgreement" },
1240 { 9, "currentlyNotDecidable" },
1241 { 10, "modificationNotAllowed" },
1247 dissect_dop_T_problem(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1248 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1257 dissect_dop_T_agreementProposal(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1259 offset
= call_dop_oid_callback("agreement", tvb
, offset
, actx
->pinfo
, tree
, NULL
, actx
->private_data
);
1266 static const ber_sequence_t OpBindingErrorParam_sequence
[] = {
1267 { &hf_dop_problem
, BER_CLASS_CON
, 0, 0, dissect_dop_T_problem
},
1268 { &hf_dop_bindingType
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_BindingType
},
1269 { &hf_dop_agreementProposal
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_T_agreementProposal
},
1270 { &hf_dop_retryAt
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOTCHKTAG
, dissect_dop_Time
},
1271 { &hf_dop_securityParameters
, BER_CLASS_CON
, 30, BER_FLAGS_OPTIONAL
, dissect_dap_SecurityParameters
},
1272 { &hf_dop_performer
, BER_CLASS_CON
, 29, BER_FLAGS_OPTIONAL
, dissect_x509if_DistinguishedName
},
1273 { &hf_dop_aliasDereferenced
, BER_CLASS_CON
, 28, BER_FLAGS_OPTIONAL
, dissect_dop_BOOLEAN
},
1274 { &hf_dop_notification
, BER_CLASS_CON
, 27, BER_FLAGS_OPTIONAL
, dissect_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute
},
1275 { NULL
, 0, 0, 0, NULL
}
1279 dissect_dop_OpBindingErrorParam(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1280 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1281 OpBindingErrorParam_sequence
, hf_index
, ett_dop_OpBindingErrorParam
);
1287 static const ber_sequence_t HierarchicalAgreement_sequence
[] = {
1288 { &hf_dop_rdn
, BER_CLASS_CON
, 0, 0, dissect_x509if_RelativeDistinguishedName
},
1289 { &hf_dop_immediateSuperior
, BER_CLASS_CON
, 1, 0, dissect_x509if_DistinguishedName
},
1290 { NULL
, 0, 0, 0, NULL
}
1294 dissect_dop_HierarchicalAgreement(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1295 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1296 HierarchicalAgreement_sequence
, hf_index
, ett_dop_HierarchicalAgreement
);
1302 static const ber_sequence_t SET_OF_Attribute_set_of
[1] = {
1303 { &hf_dop_entryInfo_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509if_Attribute
},
1307 dissect_dop_SET_OF_Attribute(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1308 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1309 SET_OF_Attribute_set_of
, hf_index
, ett_dop_SET_OF_Attribute
);
1315 static const ber_sequence_t SubentryInfo_sequence
[] = {
1316 { &hf_dop_rdn
, BER_CLASS_CON
, 0, 0, dissect_x509if_RelativeDistinguishedName
},
1317 { &hf_dop_info
, BER_CLASS_CON
, 1, 0, dissect_dop_SET_OF_Attribute
},
1318 { NULL
, 0, 0, 0, NULL
}
1322 dissect_dop_SubentryInfo(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1323 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1324 SubentryInfo_sequence
, hf_index
, ett_dop_SubentryInfo
);
1330 static const ber_sequence_t SET_OF_SubentryInfo_set_of
[1] = {
1331 { &hf_dop_subentries_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_SubentryInfo
},
1335 dissect_dop_SET_OF_SubentryInfo(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1336 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1337 SET_OF_SubentryInfo_set_of
, hf_index
, ett_dop_SET_OF_SubentryInfo
);
1343 static const ber_sequence_t Vertex_sequence
[] = {
1344 { &hf_dop_rdn
, BER_CLASS_CON
, 0, 0, dissect_x509if_RelativeDistinguishedName
},
1345 { &hf_dop_admPointInfo
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_Attribute
},
1346 { &hf_dop_subentries
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_SubentryInfo
},
1347 { &hf_dop_accessPoints
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
, dissect_dsp_MasterAndShadowAccessPoints
},
1348 { NULL
, 0, 0, 0, NULL
}
1352 dissect_dop_Vertex(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1353 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1354 Vertex_sequence
, hf_index
, ett_dop_Vertex
);
1360 static const ber_sequence_t DITcontext_sequence_of
[1] = {
1361 { &hf_dop_DITcontext_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_Vertex
},
1365 dissect_dop_DITcontext(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1366 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1367 DITcontext_sequence_of
, hf_index
, ett_dop_DITcontext
);
1373 static const ber_sequence_t SuperiorToSubordinate_sequence
[] = {
1374 { &hf_dop_contextPrefixInfo
, BER_CLASS_CON
, 0, 0, dissect_dop_DITcontext
},
1375 { &hf_dop_entryInfo
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_Attribute
},
1376 { &hf_dop_immediateSuperiorInfo
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_Attribute
},
1377 { NULL
, 0, 0, 0, NULL
}
1381 dissect_dop_SuperiorToSubordinate(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1382 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1383 SuperiorToSubordinate_sequence
, hf_index
, ett_dop_SuperiorToSubordinate
);
1389 static const ber_sequence_t SubordinateToSuperior_sequence
[] = {
1390 { &hf_dop_accessPoints
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
, dissect_dsp_MasterAndShadowAccessPoints
},
1391 { &hf_dop_alias
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_BOOLEAN
},
1392 { &hf_dop_entryInfo
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_Attribute
},
1393 { &hf_dop_subentries
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_SubentryInfo
},
1394 { NULL
, 0, 0, 0, NULL
}
1398 dissect_dop_SubordinateToSuperior(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1399 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1400 SubordinateToSuperior_sequence
, hf_index
, ett_dop_SubordinateToSuperior
);
1406 static const ber_sequence_t SuperiorToSubordinateModification_sequence
[] = {
1407 { &hf_dop_contextPrefixInfo
, BER_CLASS_CON
, 0, 0, dissect_dop_DITcontext
},
1408 { &hf_dop_immediateSuperiorInfo
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_Attribute
},
1409 { NULL
, 0, 0, 0, NULL
}
1413 dissect_dop_SuperiorToSubordinateModification(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1414 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1415 SuperiorToSubordinateModification_sequence
, hf_index
, ett_dop_SuperiorToSubordinateModification
);
1421 static const ber_sequence_t NonSpecificHierarchicalAgreement_sequence
[] = {
1422 { &hf_dop_immediateSuperior
, BER_CLASS_CON
, 1, 0, dissect_x509if_DistinguishedName
},
1423 { NULL
, 0, 0, 0, NULL
}
1427 dissect_dop_NonSpecificHierarchicalAgreement(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1428 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1429 NonSpecificHierarchicalAgreement_sequence
, hf_index
, ett_dop_NonSpecificHierarchicalAgreement
);
1435 static const ber_sequence_t NHOBSuperiorToSubordinate_sequence
[] = {
1436 { &hf_dop_contextPrefixInfo
, BER_CLASS_CON
, 0, 0, dissect_dop_DITcontext
},
1437 { &hf_dop_immediateSuperiorInfo
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_Attribute
},
1438 { NULL
, 0, 0, 0, NULL
}
1442 dissect_dop_NHOBSuperiorToSubordinate(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1443 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1444 NHOBSuperiorToSubordinate_sequence
, hf_index
, ett_dop_NHOBSuperiorToSubordinate
);
1450 static const ber_sequence_t NHOBSubordinateToSuperior_sequence
[] = {
1451 { &hf_dop_accessPoints
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
, dissect_dsp_MasterAndShadowAccessPoints
},
1452 { &hf_dop_subentries
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_SubentryInfo
},
1453 { NULL
, 0, 0, 0, NULL
}
1457 dissect_dop_NHOBSubordinateToSuperior(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1458 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1459 NHOBSubordinateToSuperior_sequence
, hf_index
, ett_dop_NHOBSubordinateToSuperior
);
1467 dissect_dop_Precedence(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1468 uint32_t precedence
= 0;
1470 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1474 proto_item_append_text(tree
, " precedence=%d", precedence
);
1481 static const value_string dop_T_level_vals
[] = {
1490 dissect_dop_T_level(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1491 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1500 dissect_dop_INTEGER(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1501 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1508 static const ber_sequence_t T_basicLevels_sequence
[] = {
1509 { &hf_dop_level
, BER_CLASS_UNI
, BER_UNI_TAG_ENUMERATED
, BER_FLAGS_NOOWNTAG
, dissect_dop_T_level
},
1510 { &hf_dop_localQualifier
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
, dissect_dop_INTEGER
},
1511 { &hf_dop_signed
, BER_CLASS_UNI
, BER_UNI_TAG_BOOLEAN
, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
, dissect_dop_BOOLEAN
},
1512 { NULL
, 0, 0, 0, NULL
}
1516 dissect_dop_T_basicLevels(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1517 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1518 T_basicLevels_sequence
, hf_index
, ett_dop_T_basicLevels
);
1526 dissect_dop_EXTERNAL(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1527 offset
= dissect_ber_external_type(implicit_tag
, tree
, tvb
, offset
, actx
, hf_index
, NULL
);
1533 static const value_string dop_AuthenticationLevel_vals
[] = {
1534 { 0, "basicLevels" },
1539 static const ber_choice_t AuthenticationLevel_choice
[] = {
1540 { 0, &hf_dop_basicLevels
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_T_basicLevels
},
1541 { 1, &hf_dop_other
, BER_CLASS_UNI
, BER_UNI_TAG_EXTERNAL
, BER_FLAGS_NOOWNTAG
, dissect_dop_EXTERNAL
},
1542 { 0, NULL
, 0, 0, 0, NULL
}
1546 dissect_dop_AuthenticationLevel(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1547 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1548 AuthenticationLevel_choice
, hf_index
, ett_dop_AuthenticationLevel
,
1555 static const ber_sequence_t SET_OF_AttributeType_set_of
[1] = {
1556 { &hf_dop_attributeType_item
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_x509if_AttributeType
},
1560 dissect_dop_SET_OF_AttributeType(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1561 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1562 SET_OF_AttributeType_set_of
, hf_index
, ett_dop_SET_OF_AttributeType
);
1568 static const ber_sequence_t SET_OF_AttributeTypeAndValue_set_of
[1] = {
1569 { &hf_dop_attributeValue_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_crmf_AttributeTypeAndValue
},
1573 dissect_dop_SET_OF_AttributeTypeAndValue(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1574 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1575 SET_OF_AttributeTypeAndValue_set_of
, hf_index
, ett_dop_SET_OF_AttributeTypeAndValue
);
1581 static const ber_sequence_t MaxValueCount_sequence
[] = {
1582 { &hf_dop_type
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_x509if_AttributeType
},
1583 { &hf_dop_maxCount
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_dop_INTEGER
},
1584 { NULL
, 0, 0, 0, NULL
}
1588 dissect_dop_MaxValueCount(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1589 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1590 MaxValueCount_sequence
, hf_index
, ett_dop_MaxValueCount
);
1596 static const ber_sequence_t SET_OF_MaxValueCount_set_of
[1] = {
1597 { &hf_dop_maxValueCount_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_MaxValueCount
},
1601 dissect_dop_SET_OF_MaxValueCount(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1602 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1603 SET_OF_MaxValueCount_set_of
, hf_index
, ett_dop_SET_OF_MaxValueCount
);
1609 static const ber_sequence_t RestrictedValue_sequence
[] = {
1610 { &hf_dop_type
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_x509if_AttributeType
},
1611 { &hf_dop_valuesIn
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_x509if_AttributeType
},
1612 { NULL
, 0, 0, 0, NULL
}
1616 dissect_dop_RestrictedValue(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1617 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1618 RestrictedValue_sequence
, hf_index
, ett_dop_RestrictedValue
);
1624 static const ber_sequence_t SET_OF_RestrictedValue_set_of
[1] = {
1625 { &hf_dop_restrictedBy_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_RestrictedValue
},
1629 dissect_dop_SET_OF_RestrictedValue(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1630 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1631 SET_OF_RestrictedValue_set_of
, hf_index
, ett_dop_SET_OF_RestrictedValue
);
1637 static const ber_sequence_t SET_OF_ContextAssertion_set_of
[1] = {
1638 { &hf_dop_contexts_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509if_ContextAssertion
},
1642 dissect_dop_SET_OF_ContextAssertion(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1643 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1644 SET_OF_ContextAssertion_set_of
, hf_index
, ett_dop_SET_OF_ContextAssertion
);
1650 static const ber_sequence_t ProtectedItems_sequence
[] = {
1651 { &hf_dop_entry
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
, dissect_dop_NULL
},
1652 { &hf_dop_allUserAttributeTypes
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_NULL
},
1653 { &hf_dop_attributeType
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_AttributeType
},
1654 { &hf_dop_allAttributeValues
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_AttributeType
},
1655 { &hf_dop_allUserAttributeTypesAndValues
, BER_CLASS_CON
, 4, BER_FLAGS_OPTIONAL
, dissect_dop_NULL
},
1656 { &hf_dop_attributeValue
, BER_CLASS_CON
, 5, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_AttributeTypeAndValue
},
1657 { &hf_dop_selfValue
, BER_CLASS_CON
, 6, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_AttributeType
},
1658 { &hf_dop_rangeOfValues
, BER_CLASS_CON
, 7, BER_FLAGS_OPTIONAL
, dissect_dap_Filter
},
1659 { &hf_dop_maxValueCount
, BER_CLASS_CON
, 8, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_MaxValueCount
},
1660 { &hf_dop_maxImmSub
, BER_CLASS_CON
, 9, BER_FLAGS_OPTIONAL
, dissect_dop_INTEGER
},
1661 { &hf_dop_restrictedBy
, BER_CLASS_CON
, 10, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_RestrictedValue
},
1662 { &hf_dop_contexts
, BER_CLASS_CON
, 11, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_ContextAssertion
},
1663 { &hf_dop_classes
, BER_CLASS_CON
, 12, BER_FLAGS_OPTIONAL
, dissect_x509if_Refinement
},
1664 { NULL
, 0, 0, 0, NULL
}
1668 dissect_dop_ProtectedItems(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1669 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1670 ProtectedItems_sequence
, hf_index
, ett_dop_ProtectedItems
);
1676 static const ber_sequence_t SET_OF_NameAndOptionalUID_set_of
[1] = {
1677 { &hf_dop_name_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509sat_NameAndOptionalUID
},
1681 dissect_dop_SET_OF_NameAndOptionalUID(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1682 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1683 SET_OF_NameAndOptionalUID_set_of
, hf_index
, ett_dop_SET_OF_NameAndOptionalUID
);
1689 static const ber_sequence_t SET_OF_SubtreeSpecification_set_of
[1] = {
1690 { &hf_dop_subtree_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_x509if_SubtreeSpecification
},
1694 dissect_dop_SET_OF_SubtreeSpecification(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1695 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1696 SET_OF_SubtreeSpecification_set_of
, hf_index
, ett_dop_SET_OF_SubtreeSpecification
);
1702 static const ber_sequence_t UserClasses_sequence
[] = {
1703 { &hf_dop_allUsers
, BER_CLASS_CON
, 0, BER_FLAGS_OPTIONAL
, dissect_dop_NULL
},
1704 { &hf_dop_thisEntry
, BER_CLASS_CON
, 1, BER_FLAGS_OPTIONAL
, dissect_dop_NULL
},
1705 { &hf_dop_name
, BER_CLASS_CON
, 2, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_NameAndOptionalUID
},
1706 { &hf_dop_userGroup
, BER_CLASS_CON
, 3, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_NameAndOptionalUID
},
1707 { &hf_dop_subtree
, BER_CLASS_CON
, 4, BER_FLAGS_OPTIONAL
, dissect_dop_SET_OF_SubtreeSpecification
},
1708 { NULL
, 0, 0, 0, NULL
}
1712 dissect_dop_UserClasses(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1713 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1714 UserClasses_sequence
, hf_index
, ett_dop_UserClasses
);
1720 static int * const GrantsAndDenials_bits
[] = {
1721 &hf_dop_GrantsAndDenials_grantAdd
,
1722 &hf_dop_GrantsAndDenials_denyAdd
,
1723 &hf_dop_GrantsAndDenials_grantDiscloseOnError
,
1724 &hf_dop_GrantsAndDenials_denyDiscloseOnError
,
1725 &hf_dop_GrantsAndDenials_grantRead
,
1726 &hf_dop_GrantsAndDenials_denyRead
,
1727 &hf_dop_GrantsAndDenials_grantRemove
,
1728 &hf_dop_GrantsAndDenials_denyRemove
,
1729 &hf_dop_GrantsAndDenials_grantBrowse
,
1730 &hf_dop_GrantsAndDenials_denyBrowse
,
1731 &hf_dop_GrantsAndDenials_grantExport
,
1732 &hf_dop_GrantsAndDenials_denyExport
,
1733 &hf_dop_GrantsAndDenials_grantImport
,
1734 &hf_dop_GrantsAndDenials_denyImport
,
1735 &hf_dop_GrantsAndDenials_grantModify
,
1736 &hf_dop_GrantsAndDenials_denyModify
,
1737 &hf_dop_GrantsAndDenials_grantRename
,
1738 &hf_dop_GrantsAndDenials_denyRename
,
1739 &hf_dop_GrantsAndDenials_grantReturnDN
,
1740 &hf_dop_GrantsAndDenials_denyReturnDN
,
1741 &hf_dop_GrantsAndDenials_grantCompare
,
1742 &hf_dop_GrantsAndDenials_denyCompare
,
1743 &hf_dop_GrantsAndDenials_grantFilterMatch
,
1744 &hf_dop_GrantsAndDenials_denyFilterMatch
,
1745 &hf_dop_GrantsAndDenials_grantInvoke
,
1746 &hf_dop_GrantsAndDenials_denyInvoke
,
1751 dissect_dop_GrantsAndDenials(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1752 offset
= dissect_ber_bitstring(implicit_tag
, actx
, tree
, tvb
, offset
,
1753 GrantsAndDenials_bits
, 26, hf_index
, ett_dop_GrantsAndDenials
,
1760 static const ber_sequence_t ItemPermission_sequence
[] = {
1761 { &hf_dop_precedence
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
, dissect_dop_Precedence
},
1762 { &hf_dop_userClasses
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_UserClasses
},
1763 { &hf_dop_grantsAndDenials
, BER_CLASS_UNI
, BER_UNI_TAG_BITSTRING
, BER_FLAGS_NOOWNTAG
, dissect_dop_GrantsAndDenials
},
1764 { NULL
, 0, 0, 0, NULL
}
1768 dissect_dop_ItemPermission(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1769 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1770 ItemPermission_sequence
, hf_index
, ett_dop_ItemPermission
);
1776 static const ber_sequence_t SET_OF_ItemPermission_set_of
[1] = {
1777 { &hf_dop_itemPermissions_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_ItemPermission
},
1781 dissect_dop_SET_OF_ItemPermission(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1782 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1783 SET_OF_ItemPermission_set_of
, hf_index
, ett_dop_SET_OF_ItemPermission
);
1789 static const ber_sequence_t T_itemFirst_sequence
[] = {
1790 { &hf_dop_protectedItems
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_ProtectedItems
},
1791 { &hf_dop_itemPermissions
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_dop_SET_OF_ItemPermission
},
1792 { NULL
, 0, 0, 0, NULL
}
1796 dissect_dop_T_itemFirst(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1797 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1798 T_itemFirst_sequence
, hf_index
, ett_dop_T_itemFirst
);
1804 static const ber_sequence_t UserPermission_sequence
[] = {
1805 { &hf_dop_precedence
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
, dissect_dop_Precedence
},
1806 { &hf_dop_protectedItems
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_ProtectedItems
},
1807 { &hf_dop_grantsAndDenials
, BER_CLASS_UNI
, BER_UNI_TAG_BITSTRING
, BER_FLAGS_NOOWNTAG
, dissect_dop_GrantsAndDenials
},
1808 { NULL
, 0, 0, 0, NULL
}
1812 dissect_dop_UserPermission(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1813 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1814 UserPermission_sequence
, hf_index
, ett_dop_UserPermission
);
1820 static const ber_sequence_t SET_OF_UserPermission_set_of
[1] = {
1821 { &hf_dop_userPermissions_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_UserPermission
},
1825 dissect_dop_SET_OF_UserPermission(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1826 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1827 SET_OF_UserPermission_set_of
, hf_index
, ett_dop_SET_OF_UserPermission
);
1833 static const ber_sequence_t T_userFirst_sequence
[] = {
1834 { &hf_dop_userClasses
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_dop_UserClasses
},
1835 { &hf_dop_userPermissions
, BER_CLASS_UNI
, BER_UNI_TAG_SET
, BER_FLAGS_NOOWNTAG
, dissect_dop_SET_OF_UserPermission
},
1836 { NULL
, 0, 0, 0, NULL
}
1840 dissect_dop_T_userFirst(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1841 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1842 T_userFirst_sequence
, hf_index
, ett_dop_T_userFirst
);
1848 static const value_string dop_T_itemOrUserFirst_vals
[] = {
1854 static const ber_choice_t T_itemOrUserFirst_choice
[] = {
1855 { 0, &hf_dop_itemFirst
, BER_CLASS_CON
, 0, 0, dissect_dop_T_itemFirst
},
1856 { 1, &hf_dop_userFirst
, BER_CLASS_CON
, 1, 0, dissect_dop_T_userFirst
},
1857 { 0, NULL
, 0, 0, 0, NULL
}
1861 dissect_dop_T_itemOrUserFirst(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1862 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1863 T_itemOrUserFirst_choice
, hf_index
, ett_dop_T_itemOrUserFirst
,
1870 static const ber_sequence_t ACIItem_sequence
[] = {
1871 { &hf_dop_identificationTag
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG
, dissect_x509sat_DirectoryString
},
1872 { &hf_dop_precedence
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_dop_Precedence
},
1873 { &hf_dop_authenticationLevel
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_dop_AuthenticationLevel
},
1874 { &hf_dop_itemOrUserFirst
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_dop_T_itemOrUserFirst
},
1875 { NULL
, 0, 0, 0, NULL
}
1879 dissect_dop_ACIItem(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1880 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1881 ACIItem_sequence
, hf_index
, ett_dop_ACIItem
);
1888 static int dissect_DSEType_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1890 asn1_ctx_t asn1_ctx
;
1891 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1892 offset
= dissect_dop_DSEType(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_DSEType_PDU
);
1895 static int dissect_SupplierInformation_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1897 asn1_ctx_t asn1_ctx
;
1898 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1899 offset
= dissect_dop_SupplierInformation(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_SupplierInformation_PDU
);
1902 static int dissect_ConsumerInformation_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1904 asn1_ctx_t asn1_ctx
;
1905 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1906 offset
= dissect_dop_ConsumerInformation(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_ConsumerInformation_PDU
);
1909 static int dissect_SupplierAndConsumers_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1911 asn1_ctx_t asn1_ctx
;
1912 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1913 offset
= dissect_dop_SupplierAndConsumers(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_SupplierAndConsumers_PDU
);
1916 static int dissect_HierarchicalAgreement_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1918 asn1_ctx_t asn1_ctx
;
1919 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1920 offset
= dissect_dop_HierarchicalAgreement(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_HierarchicalAgreement_PDU
);
1923 static int dissect_SuperiorToSubordinate_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1925 asn1_ctx_t asn1_ctx
;
1926 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1927 offset
= dissect_dop_SuperiorToSubordinate(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_SuperiorToSubordinate_PDU
);
1930 static int dissect_SubordinateToSuperior_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1932 asn1_ctx_t asn1_ctx
;
1933 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1934 offset
= dissect_dop_SubordinateToSuperior(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_SubordinateToSuperior_PDU
);
1937 static int dissect_SuperiorToSubordinateModification_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1939 asn1_ctx_t asn1_ctx
;
1940 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1941 offset
= dissect_dop_SuperiorToSubordinateModification(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_SuperiorToSubordinateModification_PDU
);
1944 static int dissect_NonSpecificHierarchicalAgreement_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1946 asn1_ctx_t asn1_ctx
;
1947 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1948 offset
= dissect_dop_NonSpecificHierarchicalAgreement(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_NonSpecificHierarchicalAgreement_PDU
);
1951 static int dissect_NHOBSuperiorToSubordinate_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1953 asn1_ctx_t asn1_ctx
;
1954 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1955 offset
= dissect_dop_NHOBSuperiorToSubordinate(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_NHOBSuperiorToSubordinate_PDU
);
1958 static int dissect_NHOBSubordinateToSuperior_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1960 asn1_ctx_t asn1_ctx
;
1961 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1962 offset
= dissect_dop_NHOBSubordinateToSuperior(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_NHOBSubordinateToSuperior_PDU
);
1965 static int dissect_ACIItem_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
1967 asn1_ctx_t asn1_ctx
;
1968 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
1969 offset
= dissect_dop_ACIItem(false, tvb
, offset
, &asn1_ctx
, tree
, hf_dop_ACIItem_PDU
);
1975 call_dop_oid_callback(const char *base_string
, tvbuff_t
*tvb
, int offset
, packet_info
*pinfo
, proto_tree
*tree
, const char *col_info
, void* data
)
1977 char* binding_param
;
1979 binding_param
= wmem_strdup_printf(pinfo
->pool
, "%s.%s", base_string
, binding_type
? binding_type
: "");
1981 col_append_fstr(pinfo
->cinfo
, COL_INFO
, " %s", col_info
);
1983 if (dissector_try_string_with_data(dop_dissector_table
, binding_param
, tvb
, pinfo
, tree
, true, data
)) {
1984 offset
= tvb_reported_length (tvb
);
1987 proto_tree
*next_tree
;
1989 next_tree
= proto_tree_add_subtree_format(tree
, tvb
, 0, -1, ett_dop_unknown
, &item
,
1990 "Dissector for parameter %s OID:%s not implemented. Contact Wireshark developers if you want this supported", base_string
, binding_type
? binding_type
: "<empty>");
1992 offset
= dissect_unknown_ber(pinfo
, tvb
, offset
, next_tree
);
1993 expert_add_info(pinfo
, item
, &ei_dop_unknown_binding_parameter
);
2001 * Dissect DOP PDUs inside a ROS PDUs
2004 dissect_dop(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*parent_tree
, void* data
)
2010 struct SESSION_DATA_STRUCTURE
* session
;
2011 int (*dop_dissector
)(bool implicit_tag _U_
, tvbuff_t
*tvb
, int offset
, asn1_ctx_t
*actx
, proto_tree
*tree
, int hf_index _U_
) = NULL
;
2012 const char *dop_op_name
;
2013 asn1_ctx_t asn1_ctx
;
2015 /* do we have operation information from the ROS dissector? */
2018 session
= (struct SESSION_DATA_STRUCTURE
*)data
;
2020 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2022 item
= proto_tree_add_item(parent_tree
, proto_dop
, tvb
, 0, -1, ENC_NA
);
2023 tree
= proto_item_add_subtree(item
, ett_dop
);
2025 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "DOP");
2026 col_clear(pinfo
->cinfo
, COL_INFO
);
2028 asn1_ctx
.private_data
= session
;
2030 switch(session
->ros_op
& ROS_OP_MASK
) {
2031 case (ROS_OP_BIND
| ROS_OP_ARGUMENT
): /* BindInvoke */
2032 dop_dissector
= dissect_dop_DSAOperationalManagementBindArgument
;
2033 dop_op_name
= "DSA-Operational-Bind-Argument";
2035 case (ROS_OP_BIND
| ROS_OP_RESULT
): /* BindResult */
2036 dop_dissector
= dissect_dop_DSAOperationalManagementBindResult
;
2037 dop_op_name
= "DSA-Operational-Bind-Result";
2039 case (ROS_OP_BIND
| ROS_OP_ERROR
): /* BindError */
2040 dop_dissector
= dissect_dop_DSAOperationalManagementBindError
;
2041 dop_op_name
= "DSA-Operational-Management-Bind-Error";
2043 case (ROS_OP_INVOKE
| ROS_OP_ARGUMENT
): /* Invoke Argument */
2044 switch(session
->ros_op
& ROS_OP_OPCODE_MASK
) {
2045 case 100: /* establish */
2046 dop_dissector
= dissect_dop_EstablishOperationalBindingArgument
;
2047 dop_op_name
= "Establish-Operational-Binding-Argument";
2049 case 101: /* terminate */
2050 dop_dissector
= dissect_dop_TerminateOperationalBindingArgument
;
2051 dop_op_name
= "Terminate-Operational-Binding-Argument";
2053 case 102: /* modify */
2054 dop_dissector
= dissect_dop_ModifyOperationalBindingArgument
;
2055 dop_op_name
= "Modify-Operational-Binding-Argument";
2058 proto_tree_add_expert_format(tree
, pinfo
, &ei_dop_unsupported_opcode
, tvb
, offset
, -1,
2059 "Unsupported DOP Argument opcode (%d)", session
->ros_op
& ROS_OP_OPCODE_MASK
);
2063 case (ROS_OP_INVOKE
| ROS_OP_RESULT
): /* Return Result */
2064 switch(session
->ros_op
& ROS_OP_OPCODE_MASK
) {
2065 case 100: /* establish */
2066 dop_dissector
= dissect_dop_EstablishOperationalBindingResult
;
2067 dop_op_name
= "Establish-Operational-Binding-Result";
2069 case 101: /* terminate */
2070 dop_dissector
= dissect_dop_TerminateOperationalBindingResult
;
2071 dop_op_name
= "Terminate-Operational-Binding-Result";
2073 case 102: /* modify */
2074 dop_dissector
= dissect_dop_ModifyOperationalBindingResult
;
2075 dop_op_name
= "Modify-Operational-Binding-Result";
2078 proto_tree_add_expert_format(tree
, pinfo
, &ei_dop_unsupported_opcode
, tvb
, offset
, -1,
2079 "Unsupported DOP Result opcode (%d)", session
->ros_op
& ROS_OP_OPCODE_MASK
);
2083 case (ROS_OP_INVOKE
| ROS_OP_ERROR
): /* Return Error */
2084 switch(session
->ros_op
& ROS_OP_OPCODE_MASK
) {
2085 case 100: /* operational-binding */
2086 dop_dissector
= dissect_dop_OpBindingErrorParam
;
2087 dop_op_name
= "Operational-Binding-Error";
2090 proto_tree_add_expert_format(tree
, pinfo
, &ei_dop_unsupported_errcode
, tvb
, offset
, -1,
2091 "Unsupported DOP Error opcode (%d)", session
->ros_op
& ROS_OP_OPCODE_MASK
);
2096 proto_tree_add_expert(tree
, pinfo
, &ei_dop_unsupported_pdu
, tvb
, offset
, -1);
2097 return tvb_captured_length(tvb
);
2101 col_set_str(pinfo
->cinfo
, COL_INFO
, dop_op_name
);
2103 while (tvb_reported_length_remaining(tvb
, offset
) > 0){
2105 offset
=(*dop_dissector
)(false, tvb
, offset
, &asn1_ctx
, tree
, -1);
2106 if(offset
== old_offset
){
2107 proto_tree_add_expert(tree
, pinfo
, &ei_dop_zero_pdu
, tvb
, offset
, -1);
2113 return tvb_captured_length(tvb
);
2118 /*--- proto_register_dop -------------------------------------------*/
2119 void proto_register_dop(void) {
2121 /* List of fields */
2122 static hf_register_info hf
[] =
2124 { &hf_dop_DSEType_PDU
,
2125 { "DSEType", "dop.DSEType",
2126 FT_BYTES
, BASE_NONE
, NULL
, 0,
2128 { &hf_dop_SupplierInformation_PDU
,
2129 { "SupplierInformation", "dop.SupplierInformation_element",
2130 FT_NONE
, BASE_NONE
, NULL
, 0,
2132 { &hf_dop_ConsumerInformation_PDU
,
2133 { "ConsumerInformation", "dop.ConsumerInformation_element",
2134 FT_NONE
, BASE_NONE
, NULL
, 0,
2136 { &hf_dop_SupplierAndConsumers_PDU
,
2137 { "SupplierAndConsumers", "dop.SupplierAndConsumers_element",
2138 FT_NONE
, BASE_NONE
, NULL
, 0,
2140 { &hf_dop_HierarchicalAgreement_PDU
,
2141 { "HierarchicalAgreement", "dop.HierarchicalAgreement_element",
2142 FT_NONE
, BASE_NONE
, NULL
, 0,
2144 { &hf_dop_SuperiorToSubordinate_PDU
,
2145 { "SuperiorToSubordinate", "dop.SuperiorToSubordinate_element",
2146 FT_NONE
, BASE_NONE
, NULL
, 0,
2148 { &hf_dop_SubordinateToSuperior_PDU
,
2149 { "SubordinateToSuperior", "dop.SubordinateToSuperior_element",
2150 FT_NONE
, BASE_NONE
, NULL
, 0,
2152 { &hf_dop_SuperiorToSubordinateModification_PDU
,
2153 { "SuperiorToSubordinateModification", "dop.SuperiorToSubordinateModification_element",
2154 FT_NONE
, BASE_NONE
, NULL
, 0,
2156 { &hf_dop_NonSpecificHierarchicalAgreement_PDU
,
2157 { "NonSpecificHierarchicalAgreement", "dop.NonSpecificHierarchicalAgreement_element",
2158 FT_NONE
, BASE_NONE
, NULL
, 0,
2160 { &hf_dop_NHOBSuperiorToSubordinate_PDU
,
2161 { "NHOBSuperiorToSubordinate", "dop.NHOBSuperiorToSubordinate_element",
2162 FT_NONE
, BASE_NONE
, NULL
, 0,
2164 { &hf_dop_NHOBSubordinateToSuperior_PDU
,
2165 { "NHOBSubordinateToSuperior", "dop.NHOBSubordinateToSuperior_element",
2166 FT_NONE
, BASE_NONE
, NULL
, 0,
2168 { &hf_dop_ACIItem_PDU
,
2169 { "ACIItem", "dop.ACIItem_element",
2170 FT_NONE
, BASE_NONE
, NULL
, 0,
2173 { "ae-title", "dop.ae_title",
2174 FT_UINT32
, BASE_DEC
, VALS(x509if_Name_vals
), 0,
2177 { "address", "dop.address_element",
2178 FT_NONE
, BASE_NONE
, NULL
, 0,
2179 "PresentationAddress", HFILL
}},
2180 { &hf_dop_protocolInformation
,
2181 { "protocolInformation", "dop.protocolInformation",
2182 FT_UINT32
, BASE_DEC
, NULL
, 0,
2183 "SET_OF_ProtocolInformation", HFILL
}},
2184 { &hf_dop_protocolInformation_item
,
2185 { "ProtocolInformation", "dop.ProtocolInformation_element",
2186 FT_NONE
, BASE_NONE
, NULL
, 0,
2188 { &hf_dop_agreementID
,
2189 { "agreementID", "dop.agreementID_element",
2190 FT_NONE
, BASE_NONE
, NULL
, 0,
2191 "OperationalBindingID", HFILL
}},
2192 { &hf_dop_supplier_is_master
,
2193 { "supplier-is-master", "dop.supplier_is_master",
2194 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
2195 "BOOLEAN", HFILL
}},
2196 { &hf_dop_non_supplying_master
,
2197 { "non-supplying-master", "dop.non_supplying_master_element",
2198 FT_NONE
, BASE_NONE
, NULL
, 0,
2199 "AccessPoint", HFILL
}},
2200 { &hf_dop_consumers
,
2201 { "consumers", "dop.consumers",
2202 FT_UINT32
, BASE_DEC
, NULL
, 0,
2203 "SET_OF_AccessPoint", HFILL
}},
2204 { &hf_dop_consumers_item
,
2205 { "AccessPoint", "dop.AccessPoint_element",
2206 FT_NONE
, BASE_NONE
, NULL
, 0,
2208 { &hf_dop_bindingType
,
2209 { "bindingType", "dop.bindingType",
2210 FT_OID
, BASE_NONE
, NULL
, 0,
2212 { &hf_dop_bindingID
,
2213 { "bindingID", "dop.bindingID_element",
2214 FT_NONE
, BASE_NONE
, NULL
, 0,
2215 "OperationalBindingID", HFILL
}},
2216 { &hf_dop_accessPoint
,
2217 { "accessPoint", "dop.accessPoint_element",
2218 FT_NONE
, BASE_NONE
, NULL
, 0,
2220 { &hf_dop_establishInitiator
,
2221 { "initiator", "dop.initiator",
2222 FT_UINT32
, BASE_DEC
, VALS(dop_EstablishArgumentInitiator_vals
), 0,
2223 "EstablishArgumentInitiator", HFILL
}},
2224 { &hf_dop_establishSymmetric
,
2225 { "symmetric", "dop.symmetric_element",
2226 FT_NONE
, BASE_NONE
, NULL
, 0,
2227 "EstablishSymmetric", HFILL
}},
2228 { &hf_dop_establishRoleAInitiates
,
2229 { "roleA-initiates", "dop.roleA_initiates_element",
2230 FT_NONE
, BASE_NONE
, NULL
, 0,
2231 "EstablishRoleAInitiates", HFILL
}},
2232 { &hf_dop_establishRoleBInitiates
,
2233 { "roleB-initiates", "dop.roleB_initiates_element",
2234 FT_NONE
, BASE_NONE
, NULL
, 0,
2235 "EstablishRoleBInitiates", HFILL
}},
2236 { &hf_dop_agreement
,
2237 { "agreement", "dop.agreement_element",
2238 FT_NONE
, BASE_NONE
, NULL
, 0,
2241 { "valid", "dop.valid_element",
2242 FT_NONE
, BASE_NONE
, NULL
, 0,
2243 "Validity", HFILL
}},
2244 { &hf_dop_securityParameters
,
2245 { "securityParameters", "dop.securityParameters_element",
2246 FT_NONE
, BASE_NONE
, NULL
, 0,
2248 { &hf_dop_unsignedEstablishOperationalBindingArgument
,
2249 { "unsignedEstablishOperationalBindingArgument", "dop.unsignedEstablishOperationalBindingArgument_element",
2250 FT_NONE
, BASE_NONE
, NULL
, 0,
2251 "EstablishOperationalBindingArgumentData", HFILL
}},
2252 { &hf_dop_signedEstablishOperationalBindingArgument
,
2253 { "signedEstablishOperationalBindingArgument", "dop.signedEstablishOperationalBindingArgument_element",
2254 FT_NONE
, BASE_NONE
, NULL
, 0,
2256 { &hf_dop_establishOperationalBindingArgument
,
2257 { "establishOperationalBindingArgument", "dop.establishOperationalBindingArgument_element",
2258 FT_NONE
, BASE_NONE
, NULL
, 0,
2259 "EstablishOperationalBindingArgumentData", HFILL
}},
2260 { &hf_dop_algorithmIdentifier
,
2261 { "algorithmIdentifier", "dop.algorithmIdentifier_element",
2262 FT_NONE
, BASE_NONE
, NULL
, 0,
2264 { &hf_dop_encrypted
,
2265 { "encrypted", "dop.encrypted",
2266 FT_BYTES
, BASE_NONE
, NULL
, 0,
2267 "BIT_STRING", HFILL
}},
2268 { &hf_dop_identifier
,
2269 { "identifier", "dop.identifier",
2270 FT_INT32
, BASE_DEC
, NULL
, 0,
2273 { "version", "dop.version",
2274 FT_INT32
, BASE_DEC
, NULL
, 0,
2276 { &hf_dop_validFrom
,
2277 { "validFrom", "dop.validFrom",
2278 FT_UINT32
, BASE_DEC
, VALS(dop_T_validFrom_vals
), 0,
2281 { "now", "dop.now_element",
2282 FT_NONE
, BASE_NONE
, NULL
, 0,
2285 { "time", "dop.time",
2286 FT_UINT32
, BASE_DEC
, VALS(dop_Time_vals
), 0,
2288 { &hf_dop_validUntil
,
2289 { "validUntil", "dop.validUntil",
2290 FT_UINT32
, BASE_DEC
, VALS(dop_T_validUntil_vals
), 0,
2292 { &hf_dop_explicitTermination
,
2293 { "explicitTermination", "dop.explicitTermination_element",
2294 FT_NONE
, BASE_NONE
, NULL
, 0,
2297 { "utcTime", "dop.utcTime",
2298 FT_STRING
, BASE_NONE
, NULL
, 0,
2300 { &hf_dop_generalizedTime
,
2301 { "generalizedTime", "dop.generalizedTime",
2302 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_LOCAL
, NULL
, 0,
2304 { &hf_dop_initiator
,
2305 { "initiator", "dop.initiator",
2306 FT_UINT32
, BASE_DEC
, VALS(dop_T_initiator_vals
), 0,
2308 { &hf_dop_symmetric
,
2309 { "symmetric", "dop.symmetric_element",
2310 FT_NONE
, BASE_NONE
, NULL
, 0,
2312 { &hf_dop_roleA_replies
,
2313 { "roleA-replies", "dop.roleA_replies_element",
2314 FT_NONE
, BASE_NONE
, NULL
, 0,
2316 { &hf_dop_roleB_replies
,
2317 { "roleB-replies", "dop.roleB_replies_element",
2318 FT_NONE
, BASE_NONE
, NULL
, 0,
2320 { &hf_dop_performer
,
2321 { "performer", "dop.performer",
2322 FT_UINT32
, BASE_DEC
, NULL
, 0,
2323 "DistinguishedName", HFILL
}},
2324 { &hf_dop_aliasDereferenced
,
2325 { "aliasDereferenced", "dop.aliasDereferenced",
2326 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
2327 "BOOLEAN", HFILL
}},
2328 { &hf_dop_notification
,
2329 { "notification", "dop.notification",
2330 FT_UINT32
, BASE_DEC
, NULL
, 0,
2331 "SEQUENCE_SIZE_1_MAX_OF_Attribute", HFILL
}},
2332 { &hf_dop_notification_item
,
2333 { "Attribute", "dop.Attribute_element",
2334 FT_NONE
, BASE_NONE
, NULL
, 0,
2336 { &hf_dop_modifyInitiator
,
2337 { "initiator", "dop.initiator",
2338 FT_UINT32
, BASE_DEC
, VALS(dop_ModifyArgumentInitiator_vals
), 0,
2339 "ModifyArgumentInitiator", HFILL
}},
2340 { &hf_dop_modifySymmetric
,
2341 { "symmetric", "dop.symmetric_element",
2342 FT_NONE
, BASE_NONE
, NULL
, 0,
2343 "ModifySymmetric", HFILL
}},
2344 { &hf_dop_modifyRoleAInitiates
,
2345 { "roleA-initiates", "dop.roleA_initiates_element",
2346 FT_NONE
, BASE_NONE
, NULL
, 0,
2347 "ModifyRoleAInitiates", HFILL
}},
2348 { &hf_dop_modifyRoleBInitiates
,
2349 { "roleB-initiates", "dop.roleB_initiates_element",
2350 FT_NONE
, BASE_NONE
, NULL
, 0,
2351 "ModifyRoleBInitiates", HFILL
}},
2352 { &hf_dop_newBindingID
,
2353 { "newBindingID", "dop.newBindingID_element",
2354 FT_NONE
, BASE_NONE
, NULL
, 0,
2355 "OperationalBindingID", HFILL
}},
2356 { &hf_dop_argumentNewAgreement
,
2357 { "newAgreement", "dop.newAgreement_element",
2358 FT_NONE
, BASE_NONE
, NULL
, 0,
2359 "ArgumentNewAgreement", HFILL
}},
2360 { &hf_dop_unsignedModifyOperationalBindingArgument
,
2361 { "unsignedModifyOperationalBindingArgument", "dop.unsignedModifyOperationalBindingArgument_element",
2362 FT_NONE
, BASE_NONE
, NULL
, 0,
2363 "ModifyOperationalBindingArgumentData", HFILL
}},
2364 { &hf_dop_signedModifyOperationalBindingArgument
,
2365 { "signedModifyOperationalBindingArgument", "dop.signedModifyOperationalBindingArgument_element",
2366 FT_NONE
, BASE_NONE
, NULL
, 0,
2368 { &hf_dop_modifyOperationalBindingArgument
,
2369 { "modifyOperationalBindingArgument", "dop.modifyOperationalBindingArgument_element",
2370 FT_NONE
, BASE_NONE
, NULL
, 0,
2371 "ModifyOperationalBindingArgumentData", HFILL
}},
2373 { "null", "dop.null_element",
2374 FT_NONE
, BASE_NONE
, NULL
, 0,
2376 { &hf_dop_protectedModifyResult
,
2377 { "protected", "dop.protected_element",
2378 FT_NONE
, BASE_NONE
, NULL
, 0,
2379 "ProtectedModifyResult", HFILL
}},
2380 { &hf_dop_modifyOperationalBindingResultData
,
2381 { "modifyOperationalBindingResultData", "dop.modifyOperationalBindingResultData_element",
2382 FT_NONE
, BASE_NONE
, NULL
, 0,
2384 { &hf_dop_resultNewAgreement
,
2385 { "newAgreement", "dop.newAgreement_element",
2386 FT_NONE
, BASE_NONE
, NULL
, 0,
2387 "ResultNewAgreement", HFILL
}},
2388 { &hf_dop_terminateInitiator
,
2389 { "initiator", "dop.initiator",
2390 FT_UINT32
, BASE_DEC
, VALS(dop_TerminateArgumentInitiator_vals
), 0,
2391 "TerminateArgumentInitiator", HFILL
}},
2392 { &hf_dop_terminateSymmetric
,
2393 { "symmetric", "dop.symmetric_element",
2394 FT_NONE
, BASE_NONE
, NULL
, 0,
2395 "TerminateSymmetric", HFILL
}},
2396 { &hf_dop_terminateRoleAInitiates
,
2397 { "roleA-initiates", "dop.roleA_initiates_element",
2398 FT_NONE
, BASE_NONE
, NULL
, 0,
2399 "TerminateRoleAInitiates", HFILL
}},
2400 { &hf_dop_terminateRoleBInitiates
,
2401 { "roleB-initiates", "dop.roleB_initiates_element",
2402 FT_NONE
, BASE_NONE
, NULL
, 0,
2403 "TerminateRoleBInitiates", HFILL
}},
2404 { &hf_dop_terminateAtTime
,
2405 { "terminateAt", "dop.terminateAtTime",
2406 FT_UINT32
, BASE_DEC
, VALS(dop_Time_vals
), 0,
2408 { &hf_dop_unsignedTerminateOperationalBindingArgument
,
2409 { "unsignedTerminateOperationalBindingArgument", "dop.unsignedTerminateOperationalBindingArgument_element",
2410 FT_NONE
, BASE_NONE
, NULL
, 0,
2411 "TerminateOperationalBindingArgumentData", HFILL
}},
2412 { &hf_dop_signedTerminateOperationalBindingArgument
,
2413 { "signedTerminateOperationalBindingArgument", "dop.signedTerminateOperationalBindingArgument_element",
2414 FT_NONE
, BASE_NONE
, NULL
, 0,
2416 { &hf_dop_terminateOperationalBindingArgument
,
2417 { "terminateOperationalBindingArgument", "dop.terminateOperationalBindingArgument_element",
2418 FT_NONE
, BASE_NONE
, NULL
, 0,
2419 "TerminateOperationalBindingArgumentData", HFILL
}},
2420 { &hf_dop_protectedTerminateResult
,
2421 { "protected", "dop.protected_element",
2422 FT_NONE
, BASE_NONE
, NULL
, 0,
2423 "ProtectedTerminateResult", HFILL
}},
2424 { &hf_dop_terminateOperationalBindingResultData
,
2425 { "terminateOperationalBindingResultData", "dop.terminateOperationalBindingResultData_element",
2426 FT_NONE
, BASE_NONE
, NULL
, 0,
2428 { &hf_dop_terminateAtGeneralizedTime
,
2429 { "terminateAt", "dop.terminateAtGeneralizedTime",
2430 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_LOCAL
, NULL
, 0,
2431 "GeneralizedTime", HFILL
}},
2433 { "problem", "dop.problem",
2434 FT_UINT32
, BASE_DEC
, VALS(dop_T_problem_vals
), 0,
2436 { &hf_dop_agreementProposal
,
2437 { "agreementProposal", "dop.agreementProposal_element",
2438 FT_NONE
, BASE_NONE
, NULL
, 0,
2441 { "retryAt", "dop.retryAt",
2442 FT_UINT32
, BASE_DEC
, VALS(dop_Time_vals
), 0,
2446 FT_UINT32
, BASE_DEC
, NULL
, 0,
2447 "RelativeDistinguishedName", HFILL
}},
2448 { &hf_dop_immediateSuperior
,
2449 { "immediateSuperior", "dop.immediateSuperior",
2450 FT_UINT32
, BASE_DEC
, NULL
, 0,
2451 "DistinguishedName", HFILL
}},
2452 { &hf_dop_contextPrefixInfo
,
2453 { "contextPrefixInfo", "dop.contextPrefixInfo",
2454 FT_UINT32
, BASE_DEC
, NULL
, 0,
2455 "DITcontext", HFILL
}},
2456 { &hf_dop_entryInfo
,
2457 { "entryInfo", "dop.entryInfo",
2458 FT_UINT32
, BASE_DEC
, NULL
, 0,
2459 "SET_OF_Attribute", HFILL
}},
2460 { &hf_dop_entryInfo_item
,
2461 { "Attribute", "dop.Attribute_element",
2462 FT_NONE
, BASE_NONE
, NULL
, 0,
2464 { &hf_dop_immediateSuperiorInfo
,
2465 { "immediateSuperiorInfo", "dop.immediateSuperiorInfo",
2466 FT_UINT32
, BASE_DEC
, NULL
, 0,
2467 "SET_OF_Attribute", HFILL
}},
2468 { &hf_dop_immediateSuperiorInfo_item
,
2469 { "Attribute", "dop.Attribute_element",
2470 FT_NONE
, BASE_NONE
, NULL
, 0,
2472 { &hf_dop_DITcontext_item
,
2473 { "Vertex", "dop.Vertex_element",
2474 FT_NONE
, BASE_NONE
, NULL
, 0,
2476 { &hf_dop_admPointInfo
,
2477 { "admPointInfo", "dop.admPointInfo",
2478 FT_UINT32
, BASE_DEC
, NULL
, 0,
2479 "SET_OF_Attribute", HFILL
}},
2480 { &hf_dop_admPointInfo_item
,
2481 { "Attribute", "dop.Attribute_element",
2482 FT_NONE
, BASE_NONE
, NULL
, 0,
2484 { &hf_dop_subentries
,
2485 { "subentries", "dop.subentries",
2486 FT_UINT32
, BASE_DEC
, NULL
, 0,
2487 "SET_OF_SubentryInfo", HFILL
}},
2488 { &hf_dop_subentries_item
,
2489 { "SubentryInfo", "dop.SubentryInfo_element",
2490 FT_NONE
, BASE_NONE
, NULL
, 0,
2492 { &hf_dop_accessPoints
,
2493 { "accessPoints", "dop.accessPoints",
2494 FT_UINT32
, BASE_DEC
, NULL
, 0,
2495 "MasterAndShadowAccessPoints", HFILL
}},
2497 { "info", "dop.info",
2498 FT_UINT32
, BASE_DEC
, NULL
, 0,
2499 "SET_OF_Attribute", HFILL
}},
2500 { &hf_dop_info_item
,
2501 { "Attribute", "dop.Attribute_element",
2502 FT_NONE
, BASE_NONE
, NULL
, 0,
2505 { "alias", "dop.alias",
2506 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
2507 "BOOLEAN", HFILL
}},
2508 { &hf_dop_identificationTag
,
2509 { "identificationTag", "dop.identificationTag",
2510 FT_UINT32
, BASE_DEC
, VALS(x509sat_DirectoryString_vals
), 0,
2511 "DirectoryString", HFILL
}},
2512 { &hf_dop_precedence
,
2513 { "precedence", "dop.precedence",
2514 FT_INT32
, BASE_DEC
, NULL
, 0,
2516 { &hf_dop_authenticationLevel
,
2517 { "authenticationLevel", "dop.authenticationLevel",
2518 FT_UINT32
, BASE_DEC
, VALS(dop_AuthenticationLevel_vals
), 0,
2520 { &hf_dop_itemOrUserFirst
,
2521 { "itemOrUserFirst", "dop.itemOrUserFirst",
2522 FT_UINT32
, BASE_DEC
, VALS(dop_T_itemOrUserFirst_vals
), 0,
2524 { &hf_dop_itemFirst
,
2525 { "itemFirst", "dop.itemFirst_element",
2526 FT_NONE
, BASE_NONE
, NULL
, 0,
2528 { &hf_dop_protectedItems
,
2529 { "protectedItems", "dop.protectedItems_element",
2530 FT_NONE
, BASE_NONE
, NULL
, 0,
2532 { &hf_dop_itemPermissions
,
2533 { "itemPermissions", "dop.itemPermissions",
2534 FT_UINT32
, BASE_DEC
, NULL
, 0,
2535 "SET_OF_ItemPermission", HFILL
}},
2536 { &hf_dop_itemPermissions_item
,
2537 { "ItemPermission", "dop.ItemPermission_element",
2538 FT_NONE
, BASE_NONE
, NULL
, 0,
2540 { &hf_dop_userFirst
,
2541 { "userFirst", "dop.userFirst_element",
2542 FT_NONE
, BASE_NONE
, NULL
, 0,
2544 { &hf_dop_userClasses
,
2545 { "userClasses", "dop.userClasses_element",
2546 FT_NONE
, BASE_NONE
, NULL
, 0,
2548 { &hf_dop_userPermissions
,
2549 { "userPermissions", "dop.userPermissions",
2550 FT_UINT32
, BASE_DEC
, NULL
, 0,
2551 "SET_OF_UserPermission", HFILL
}},
2552 { &hf_dop_userPermissions_item
,
2553 { "UserPermission", "dop.UserPermission_element",
2554 FT_NONE
, BASE_NONE
, NULL
, 0,
2557 { "entry", "dop.entry_element",
2558 FT_NONE
, BASE_NONE
, NULL
, 0,
2560 { &hf_dop_allUserAttributeTypes
,
2561 { "allUserAttributeTypes", "dop.allUserAttributeTypes_element",
2562 FT_NONE
, BASE_NONE
, NULL
, 0,
2564 { &hf_dop_attributeType
,
2565 { "attributeType", "dop.attributeType",
2566 FT_UINT32
, BASE_DEC
, NULL
, 0,
2567 "SET_OF_AttributeType", HFILL
}},
2568 { &hf_dop_attributeType_item
,
2569 { "AttributeType", "dop.AttributeType",
2570 FT_OID
, BASE_NONE
, NULL
, 0,
2572 { &hf_dop_allAttributeValues
,
2573 { "allAttributeValues", "dop.allAttributeValues",
2574 FT_UINT32
, BASE_DEC
, NULL
, 0,
2575 "SET_OF_AttributeType", HFILL
}},
2576 { &hf_dop_allAttributeValues_item
,
2577 { "AttributeType", "dop.AttributeType",
2578 FT_OID
, BASE_NONE
, NULL
, 0,
2580 { &hf_dop_allUserAttributeTypesAndValues
,
2581 { "allUserAttributeTypesAndValues", "dop.allUserAttributeTypesAndValues_element",
2582 FT_NONE
, BASE_NONE
, NULL
, 0,
2584 { &hf_dop_attributeValue
,
2585 { "attributeValue", "dop.attributeValue",
2586 FT_UINT32
, BASE_DEC
, NULL
, 0,
2587 "SET_OF_AttributeTypeAndValue", HFILL
}},
2588 { &hf_dop_attributeValue_item
,
2589 { "AttributeTypeAndValue", "dop.AttributeTypeAndValue_element",
2590 FT_NONE
, BASE_NONE
, NULL
, 0,
2592 { &hf_dop_selfValue
,
2593 { "selfValue", "dop.selfValue",
2594 FT_UINT32
, BASE_DEC
, NULL
, 0,
2595 "SET_OF_AttributeType", HFILL
}},
2596 { &hf_dop_selfValue_item
,
2597 { "AttributeType", "dop.AttributeType",
2598 FT_OID
, BASE_NONE
, NULL
, 0,
2600 { &hf_dop_rangeOfValues
,
2601 { "rangeOfValues", "dop.rangeOfValues",
2602 FT_UINT32
, BASE_DEC
, VALS(dap_Filter_vals
), 0,
2604 { &hf_dop_maxValueCount
,
2605 { "maxValueCount", "dop.maxValueCount",
2606 FT_UINT32
, BASE_DEC
, NULL
, 0,
2607 "SET_OF_MaxValueCount", HFILL
}},
2608 { &hf_dop_maxValueCount_item
,
2609 { "MaxValueCount", "dop.MaxValueCount_element",
2610 FT_NONE
, BASE_NONE
, NULL
, 0,
2612 { &hf_dop_maxImmSub
,
2613 { "maxImmSub", "dop.maxImmSub",
2614 FT_INT32
, BASE_DEC
, NULL
, 0,
2615 "INTEGER", HFILL
}},
2616 { &hf_dop_restrictedBy
,
2617 { "restrictedBy", "dop.restrictedBy",
2618 FT_UINT32
, BASE_DEC
, NULL
, 0,
2619 "SET_OF_RestrictedValue", HFILL
}},
2620 { &hf_dop_restrictedBy_item
,
2621 { "RestrictedValue", "dop.RestrictedValue_element",
2622 FT_NONE
, BASE_NONE
, NULL
, 0,
2625 { "contexts", "dop.contexts",
2626 FT_UINT32
, BASE_DEC
, NULL
, 0,
2627 "SET_OF_ContextAssertion", HFILL
}},
2628 { &hf_dop_contexts_item
,
2629 { "ContextAssertion", "dop.ContextAssertion_element",
2630 FT_NONE
, BASE_NONE
, NULL
, 0,
2633 { "classes", "dop.classes",
2634 FT_UINT32
, BASE_DEC
, VALS(x509if_Refinement_vals
), 0,
2635 "Refinement", HFILL
}},
2637 { "type", "dop.type",
2638 FT_OID
, BASE_NONE
, NULL
, 0,
2639 "AttributeType", HFILL
}},
2641 { "maxCount", "dop.maxCount",
2642 FT_INT32
, BASE_DEC
, NULL
, 0,
2643 "INTEGER", HFILL
}},
2645 { "valuesIn", "dop.valuesIn",
2646 FT_OID
, BASE_NONE
, NULL
, 0,
2647 "AttributeType", HFILL
}},
2649 { "allUsers", "dop.allUsers_element",
2650 FT_NONE
, BASE_NONE
, NULL
, 0,
2652 { &hf_dop_thisEntry
,
2653 { "thisEntry", "dop.thisEntry_element",
2654 FT_NONE
, BASE_NONE
, NULL
, 0,
2657 { "name", "dop.name",
2658 FT_UINT32
, BASE_DEC
, NULL
, 0,
2659 "SET_OF_NameAndOptionalUID", HFILL
}},
2660 { &hf_dop_name_item
,
2661 { "NameAndOptionalUID", "dop.NameAndOptionalUID_element",
2662 FT_NONE
, BASE_NONE
, NULL
, 0,
2664 { &hf_dop_userGroup
,
2665 { "userGroup", "dop.userGroup",
2666 FT_UINT32
, BASE_DEC
, NULL
, 0,
2667 "SET_OF_NameAndOptionalUID", HFILL
}},
2668 { &hf_dop_userGroup_item
,
2669 { "NameAndOptionalUID", "dop.NameAndOptionalUID_element",
2670 FT_NONE
, BASE_NONE
, NULL
, 0,
2673 { "subtree", "dop.subtree",
2674 FT_UINT32
, BASE_DEC
, NULL
, 0,
2675 "SET_OF_SubtreeSpecification", HFILL
}},
2676 { &hf_dop_subtree_item
,
2677 { "SubtreeSpecification", "dop.SubtreeSpecification_element",
2678 FT_NONE
, BASE_NONE
, NULL
, 0,
2680 { &hf_dop_grantsAndDenials
,
2681 { "grantsAndDenials", "dop.grantsAndDenials",
2682 FT_BYTES
, BASE_NONE
, NULL
, 0,
2684 { &hf_dop_basicLevels
,
2685 { "basicLevels", "dop.basicLevels_element",
2686 FT_NONE
, BASE_NONE
, NULL
, 0,
2689 { "level", "dop.level",
2690 FT_UINT32
, BASE_DEC
, VALS(dop_T_level_vals
), 0,
2692 { &hf_dop_localQualifier
,
2693 { "localQualifier", "dop.localQualifier",
2694 FT_INT32
, BASE_DEC
, NULL
, 0,
2695 "INTEGER", HFILL
}},
2697 { "signed", "dop.signed",
2698 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
2699 "BOOLEAN", HFILL
}},
2701 { "other", "dop.other_element",
2702 FT_NONE
, BASE_NONE
, NULL
, 0,
2703 "EXTERNAL", HFILL
}},
2704 { &hf_dop_DSEType_root
,
2705 { "root", "dop.DSEType.root",
2706 FT_BOOLEAN
, 8, NULL
, 0x80,
2708 { &hf_dop_DSEType_glue
,
2709 { "glue", "dop.DSEType.glue",
2710 FT_BOOLEAN
, 8, NULL
, 0x40,
2712 { &hf_dop_DSEType_cp
,
2713 { "cp", "dop.DSEType.cp",
2714 FT_BOOLEAN
, 8, NULL
, 0x20,
2716 { &hf_dop_DSEType_entry
,
2717 { "entry", "dop.DSEType.entry",
2718 FT_BOOLEAN
, 8, NULL
, 0x10,
2720 { &hf_dop_DSEType_alias
,
2721 { "alias", "dop.DSEType.alias",
2722 FT_BOOLEAN
, 8, NULL
, 0x08,
2724 { &hf_dop_DSEType_subr
,
2725 { "subr", "dop.DSEType.subr",
2726 FT_BOOLEAN
, 8, NULL
, 0x04,
2728 { &hf_dop_DSEType_nssr
,
2729 { "nssr", "dop.DSEType.nssr",
2730 FT_BOOLEAN
, 8, NULL
, 0x02,
2732 { &hf_dop_DSEType_supr
,
2733 { "supr", "dop.DSEType.supr",
2734 FT_BOOLEAN
, 8, NULL
, 0x01,
2736 { &hf_dop_DSEType_xr
,
2737 { "xr", "dop.DSEType.xr",
2738 FT_BOOLEAN
, 8, NULL
, 0x80,
2740 { &hf_dop_DSEType_admPoint
,
2741 { "admPoint", "dop.DSEType.admPoint",
2742 FT_BOOLEAN
, 8, NULL
, 0x40,
2744 { &hf_dop_DSEType_subentry
,
2745 { "subentry", "dop.DSEType.subentry",
2746 FT_BOOLEAN
, 8, NULL
, 0x20,
2748 { &hf_dop_DSEType_shadow
,
2749 { "shadow", "dop.DSEType.shadow",
2750 FT_BOOLEAN
, 8, NULL
, 0x10,
2752 { &hf_dop_DSEType_spare_bit12
,
2753 { "spare_bit12", "dop.DSEType.spare.bit12",
2754 FT_BOOLEAN
, 8, NULL
, 0x08,
2756 { &hf_dop_DSEType_immSupr
,
2757 { "immSupr", "dop.DSEType.immSupr",
2758 FT_BOOLEAN
, 8, NULL
, 0x04,
2760 { &hf_dop_DSEType_rhob
,
2761 { "rhob", "dop.DSEType.rhob",
2762 FT_BOOLEAN
, 8, NULL
, 0x02,
2764 { &hf_dop_DSEType_sa
,
2765 { "sa", "dop.DSEType.sa",
2766 FT_BOOLEAN
, 8, NULL
, 0x01,
2768 { &hf_dop_DSEType_dsSubentry
,
2769 { "dsSubentry", "dop.DSEType.dsSubentry",
2770 FT_BOOLEAN
, 8, NULL
, 0x80,
2772 { &hf_dop_DSEType_familyMember
,
2773 { "familyMember", "dop.DSEType.familyMember",
2774 FT_BOOLEAN
, 8, NULL
, 0x40,
2776 { &hf_dop_DSEType_ditBridge
,
2777 { "ditBridge", "dop.DSEType.ditBridge",
2778 FT_BOOLEAN
, 8, NULL
, 0x20,
2780 { &hf_dop_DSEType_writeableCopy
,
2781 { "writeableCopy", "dop.DSEType.writeableCopy",
2782 FT_BOOLEAN
, 8, NULL
, 0x10,
2784 { &hf_dop_GrantsAndDenials_grantAdd
,
2785 { "grantAdd", "dop.GrantsAndDenials.grantAdd",
2786 FT_BOOLEAN
, 8, NULL
, 0x80,
2788 { &hf_dop_GrantsAndDenials_denyAdd
,
2789 { "denyAdd", "dop.GrantsAndDenials.denyAdd",
2790 FT_BOOLEAN
, 8, NULL
, 0x40,
2792 { &hf_dop_GrantsAndDenials_grantDiscloseOnError
,
2793 { "grantDiscloseOnError", "dop.GrantsAndDenials.grantDiscloseOnError",
2794 FT_BOOLEAN
, 8, NULL
, 0x20,
2796 { &hf_dop_GrantsAndDenials_denyDiscloseOnError
,
2797 { "denyDiscloseOnError", "dop.GrantsAndDenials.denyDiscloseOnError",
2798 FT_BOOLEAN
, 8, NULL
, 0x10,
2800 { &hf_dop_GrantsAndDenials_grantRead
,
2801 { "grantRead", "dop.GrantsAndDenials.grantRead",
2802 FT_BOOLEAN
, 8, NULL
, 0x08,
2804 { &hf_dop_GrantsAndDenials_denyRead
,
2805 { "denyRead", "dop.GrantsAndDenials.denyRead",
2806 FT_BOOLEAN
, 8, NULL
, 0x04,
2808 { &hf_dop_GrantsAndDenials_grantRemove
,
2809 { "grantRemove", "dop.GrantsAndDenials.grantRemove",
2810 FT_BOOLEAN
, 8, NULL
, 0x02,
2812 { &hf_dop_GrantsAndDenials_denyRemove
,
2813 { "denyRemove", "dop.GrantsAndDenials.denyRemove",
2814 FT_BOOLEAN
, 8, NULL
, 0x01,
2816 { &hf_dop_GrantsAndDenials_grantBrowse
,
2817 { "grantBrowse", "dop.GrantsAndDenials.grantBrowse",
2818 FT_BOOLEAN
, 8, NULL
, 0x80,
2820 { &hf_dop_GrantsAndDenials_denyBrowse
,
2821 { "denyBrowse", "dop.GrantsAndDenials.denyBrowse",
2822 FT_BOOLEAN
, 8, NULL
, 0x40,
2824 { &hf_dop_GrantsAndDenials_grantExport
,
2825 { "grantExport", "dop.GrantsAndDenials.grantExport",
2826 FT_BOOLEAN
, 8, NULL
, 0x20,
2828 { &hf_dop_GrantsAndDenials_denyExport
,
2829 { "denyExport", "dop.GrantsAndDenials.denyExport",
2830 FT_BOOLEAN
, 8, NULL
, 0x10,
2832 { &hf_dop_GrantsAndDenials_grantImport
,
2833 { "grantImport", "dop.GrantsAndDenials.grantImport",
2834 FT_BOOLEAN
, 8, NULL
, 0x08,
2836 { &hf_dop_GrantsAndDenials_denyImport
,
2837 { "denyImport", "dop.GrantsAndDenials.denyImport",
2838 FT_BOOLEAN
, 8, NULL
, 0x04,
2840 { &hf_dop_GrantsAndDenials_grantModify
,
2841 { "grantModify", "dop.GrantsAndDenials.grantModify",
2842 FT_BOOLEAN
, 8, NULL
, 0x02,
2844 { &hf_dop_GrantsAndDenials_denyModify
,
2845 { "denyModify", "dop.GrantsAndDenials.denyModify",
2846 FT_BOOLEAN
, 8, NULL
, 0x01,
2848 { &hf_dop_GrantsAndDenials_grantRename
,
2849 { "grantRename", "dop.GrantsAndDenials.grantRename",
2850 FT_BOOLEAN
, 8, NULL
, 0x80,
2852 { &hf_dop_GrantsAndDenials_denyRename
,
2853 { "denyRename", "dop.GrantsAndDenials.denyRename",
2854 FT_BOOLEAN
, 8, NULL
, 0x40,
2856 { &hf_dop_GrantsAndDenials_grantReturnDN
,
2857 { "grantReturnDN", "dop.GrantsAndDenials.grantReturnDN",
2858 FT_BOOLEAN
, 8, NULL
, 0x20,
2860 { &hf_dop_GrantsAndDenials_denyReturnDN
,
2861 { "denyReturnDN", "dop.GrantsAndDenials.denyReturnDN",
2862 FT_BOOLEAN
, 8, NULL
, 0x10,
2864 { &hf_dop_GrantsAndDenials_grantCompare
,
2865 { "grantCompare", "dop.GrantsAndDenials.grantCompare",
2866 FT_BOOLEAN
, 8, NULL
, 0x08,
2868 { &hf_dop_GrantsAndDenials_denyCompare
,
2869 { "denyCompare", "dop.GrantsAndDenials.denyCompare",
2870 FT_BOOLEAN
, 8, NULL
, 0x04,
2872 { &hf_dop_GrantsAndDenials_grantFilterMatch
,
2873 { "grantFilterMatch", "dop.GrantsAndDenials.grantFilterMatch",
2874 FT_BOOLEAN
, 8, NULL
, 0x02,
2876 { &hf_dop_GrantsAndDenials_denyFilterMatch
,
2877 { "denyFilterMatch", "dop.GrantsAndDenials.denyFilterMatch",
2878 FT_BOOLEAN
, 8, NULL
, 0x01,
2880 { &hf_dop_GrantsAndDenials_grantInvoke
,
2881 { "grantInvoke", "dop.GrantsAndDenials.grantInvoke",
2882 FT_BOOLEAN
, 8, NULL
, 0x80,
2884 { &hf_dop_GrantsAndDenials_denyInvoke
,
2885 { "denyInvoke", "dop.GrantsAndDenials.denyInvoke",
2886 FT_BOOLEAN
, 8, NULL
, 0x40,
2890 /* List of subtrees */
2891 static int *ett
[] = {
2895 &ett_dop_SupplierOrConsumer
,
2896 &ett_dop_SET_OF_ProtocolInformation
,
2897 &ett_dop_SupplierInformation
,
2898 &ett_dop_SupplierAndConsumers
,
2899 &ett_dop_SET_OF_AccessPoint
,
2900 &ett_dop_EstablishOperationalBindingArgumentData
,
2901 &ett_dop_EstablishArgumentInitiator
,
2902 &ett_dop_EstablishOperationalBindingArgument
,
2903 &ett_dop_T_signedEstablishOperationalBindingArgument
,
2904 &ett_dop_OperationalBindingID
,
2906 &ett_dop_T_validFrom
,
2907 &ett_dop_T_validUntil
,
2909 &ett_dop_EstablishOperationalBindingResult
,
2910 &ett_dop_T_initiator
,
2911 &ett_dop_SEQUENCE_SIZE_1_MAX_OF_Attribute
,
2912 &ett_dop_ModifyOperationalBindingArgumentData
,
2913 &ett_dop_ModifyArgumentInitiator
,
2914 &ett_dop_ModifyOperationalBindingArgument
,
2915 &ett_dop_T_signedModifyOperationalBindingArgument
,
2916 &ett_dop_ModifyOperationalBindingResult
,
2917 &ett_dop_ProtectedModifyResult
,
2918 &ett_dop_ModifyOperationalBindingResultData
,
2919 &ett_dop_TerminateOperationalBindingArgumentData
,
2920 &ett_dop_TerminateArgumentInitiator
,
2921 &ett_dop_TerminateOperationalBindingArgument
,
2922 &ett_dop_T_signedTerminateOperationalBindingArgument
,
2923 &ett_dop_TerminateOperationalBindingResult
,
2924 &ett_dop_ProtectedTerminateResult
,
2925 &ett_dop_TerminateOperationalBindingResultData
,
2926 &ett_dop_OpBindingErrorParam
,
2927 &ett_dop_HierarchicalAgreement
,
2928 &ett_dop_SuperiorToSubordinate
,
2929 &ett_dop_SET_OF_Attribute
,
2930 &ett_dop_DITcontext
,
2932 &ett_dop_SET_OF_SubentryInfo
,
2933 &ett_dop_SubentryInfo
,
2934 &ett_dop_SubordinateToSuperior
,
2935 &ett_dop_SuperiorToSubordinateModification
,
2936 &ett_dop_NonSpecificHierarchicalAgreement
,
2937 &ett_dop_NHOBSuperiorToSubordinate
,
2938 &ett_dop_NHOBSubordinateToSuperior
,
2940 &ett_dop_T_itemOrUserFirst
,
2941 &ett_dop_T_itemFirst
,
2942 &ett_dop_SET_OF_ItemPermission
,
2943 &ett_dop_T_userFirst
,
2944 &ett_dop_SET_OF_UserPermission
,
2945 &ett_dop_ProtectedItems
,
2946 &ett_dop_SET_OF_AttributeType
,
2947 &ett_dop_SET_OF_AttributeTypeAndValue
,
2948 &ett_dop_SET_OF_MaxValueCount
,
2949 &ett_dop_SET_OF_RestrictedValue
,
2950 &ett_dop_SET_OF_ContextAssertion
,
2951 &ett_dop_MaxValueCount
,
2952 &ett_dop_RestrictedValue
,
2953 &ett_dop_UserClasses
,
2954 &ett_dop_SET_OF_NameAndOptionalUID
,
2955 &ett_dop_SET_OF_SubtreeSpecification
,
2956 &ett_dop_ItemPermission
,
2957 &ett_dop_UserPermission
,
2958 &ett_dop_AuthenticationLevel
,
2959 &ett_dop_T_basicLevels
,
2960 &ett_dop_GrantsAndDenials
,
2963 static ei_register_info ei
[] = {
2964 { &ei_dop_unknown_binding_parameter
, { "dop.unknown_binding_parameter", PI_UNDECODED
, PI_WARN
, "Unknown binding-parameter", EXPFILL
}},
2965 { &ei_dop_unsupported_opcode
, { "dop.unsupported_opcode", PI_UNDECODED
, PI_WARN
, "Unsupported DOP opcode", EXPFILL
}},
2966 { &ei_dop_unsupported_errcode
, { "dop.unsupported_errcode", PI_UNDECODED
, PI_WARN
, "Unsupported DOP errcode", EXPFILL
}},
2967 { &ei_dop_unsupported_pdu
, { "dop.unsupported_pdu", PI_UNDECODED
, PI_WARN
, "Unsupported DOP PDU", EXPFILL
}},
2968 { &ei_dop_zero_pdu
, { "dop.zero_pdu", PI_PROTOCOL
, PI_ERROR
, "Internal error, zero-byte DOP PDU", EXPFILL
}},
2971 expert_module_t
* expert_dop
;
2972 module_t
*dop_module
;
2974 /* Register protocol */
2975 proto_dop
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
2977 dop_handle
= register_dissector("dop", dissect_dop
, proto_dop
);
2979 dop_dissector_table
= register_dissector_table("dop.oid", "DOP OID", proto_dop
, FT_STRING
, STRING_CASE_SENSITIVE
);
2981 /* Register fields and subtrees */
2982 proto_register_field_array(proto_dop
, hf
, array_length(hf
));
2983 proto_register_subtree_array(ett
, array_length(ett
));
2984 expert_dop
= expert_register_protocol(proto_dop
);
2985 expert_register_field_array(expert_dop
, ei
, array_length(ei
));
2987 /* Register our configuration options for DOP, particularly our port */
2989 dop_module
= prefs_register_protocol_subtree("OSI/X.500", proto_dop
, NULL
);
2991 prefs_register_obsolete_preference(dop_module
, "tcp.port");
2993 prefs_register_static_text_preference(dop_module
, "tcp_port_info",
2994 "The TCP ports used by the DOP protocol should be added to the TPKT preference \"TPKT TCP ports\", or by selecting \"TPKT\" as the \"Transport\" protocol in the \"Decode As\" dialog.",
2995 "DOP TCP Port preference moved information");
3000 /*--- proto_reg_handoff_dop --- */
3001 void proto_reg_handoff_dop(void) {
3003 register_ber_oid_dissector("2.5.12.0", dissect_DSEType_PDU
, proto_dop
, "id-doa-dseType");
3004 register_ber_oid_dissector("2.5.12.5", dissect_SupplierInformation_PDU
, proto_dop
, "id-doa-supplierKnowledge");
3005 register_ber_oid_dissector("2.5.12.6", dissect_ConsumerInformation_PDU
, proto_dop
, "id-doa-consumerKnowledge");
3006 register_ber_oid_dissector("2.5.12.7", dissect_SupplierAndConsumers_PDU
, proto_dop
, "id-doa-secondaryShadows");
3007 dissector_add_string("dop.oid", "agreement.2.5.19.2", create_dissector_handle(dissect_HierarchicalAgreement_PDU
, proto_dop
));
3008 dissector_add_string("dop.oid", "establish.rolea.2.5.19.2", create_dissector_handle(dissect_SuperiorToSubordinate_PDU
, proto_dop
));
3009 dissector_add_string("dop.oid", "modify.rolea.2.5.19.2", create_dissector_handle(dissect_SuperiorToSubordinateModification_PDU
, proto_dop
));
3010 dissector_add_string("dop.oid", "establish.roleb.2.5.19.2", create_dissector_handle(dissect_SubordinateToSuperior_PDU
, proto_dop
));
3011 dissector_add_string("dop.oid", "modify.roleb.2.5.19.2", create_dissector_handle(dissect_SubordinateToSuperior_PDU
, proto_dop
));
3012 dissector_add_string("dop.oid", "agreement.2.5.19.3", create_dissector_handle(dissect_NonSpecificHierarchicalAgreement_PDU
, proto_dop
));
3013 dissector_add_string("dop.oid", "establish.rolea.2.5.19.3", create_dissector_handle(dissect_NHOBSuperiorToSubordinate_PDU
, proto_dop
));
3014 dissector_add_string("dop.oid", "modify.rolea.2.5.19.3", create_dissector_handle(dissect_NHOBSuperiorToSubordinate_PDU
, proto_dop
));
3015 dissector_add_string("dop.oid", "establish.roleb.2.5.19.3", create_dissector_handle(dissect_NHOBSubordinateToSuperior_PDU
, proto_dop
));
3016 dissector_add_string("dop.oid", "modify.roleb.2.5.19.3", create_dissector_handle(dissect_NHOBSubordinateToSuperior_PDU
, proto_dop
));
3017 register_ber_oid_dissector("2.5.24.4", dissect_ACIItem_PDU
, proto_dop
, "id-aca-prescriptiveACI");
3018 register_ber_oid_dissector("2.5.24.5", dissect_ACIItem_PDU
, proto_dop
, "id-aca-entryACI");
3019 register_ber_oid_dissector("2.5.24.6", dissect_ACIItem_PDU
, proto_dop
, "id-aca-subentryACI");
3021 /* APPLICATION CONTEXT */
3023 oid_add_from_string("id-ac-directory-operational-binding-management","2.5.3.3");
3025 /* ABSTRACT SYNTAXES */
3027 /* Register DOP with ROS (with no use of RTSE) */
3028 register_ros_oid_dissector_handle("2.5.9.4", dop_handle
, 0, "id-as-directory-operational-binding-management", false);
3032 oid_add_from_string("shadow-agreement","2.5.19.1");
3033 oid_add_from_string("hierarchical-agreement","2.5.19.2");
3034 oid_add_from_string("non-specific-hierarchical-agreement","2.5.19.3");
3036 /* ACCESS CONTROL SCHEMES */
3037 oid_add_from_string("basic-ACS","2.5.28.1");
3038 oid_add_from_string("simplified-ACS","2.5.28.2");
3039 oid_add_from_string("ruleBased-ACS","2.5.28.3");
3040 oid_add_from_string("ruleAndBasic-ACS","2.5.28.4");
3041 oid_add_from_string("ruleAndSimple-ACS","2.5.28.5");
3043 /* ADMINISTRATIVE ROLES */
3044 oid_add_from_string("id-ar-autonomousArea","2.5.23.1");
3045 oid_add_from_string("id-ar-accessControlSpecificArea","2.5.23.2");
3046 oid_add_from_string("id-ar-accessControlInnerArea","2.5.23.3");
3047 oid_add_from_string("id-ar-subschemaAdminSpecificArea","2.5.23.4");
3048 oid_add_from_string("id-ar-collectiveAttributeSpecificArea","2.5.23.5");
3049 oid_add_from_string("id-ar-collectiveAttributeInnerArea","2.5.23.6");
3050 oid_add_from_string("id-ar-contextDefaultSpecificArea","2.5.23.7");
3051 oid_add_from_string("id-ar-serviceSpecificArea","2.5.23.8");