1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-ieee1609dot2.c */
4 /* asn2wrs.py -q -L -p ieee1609dot2 -c ./ieee1609dot2.cnf -s ./packet-ieee1609dot2-template -D . -O ../.. IEEE1609dot2BaseTypes.asn Ieee1609Dot2CrlBaseTypes.asn Ieee1609Dot2Crl.asn Ieee1609Dot2.asn IEEE1609dot12.asn */
6 /* packet-IEEE1609dot2.c
7 * Routines for IEEE 1609.2
8 * Copyright 2018, Anders Broman <anders.broman@ericsson.com>
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
17 /* Also contains IEEE std 1609.12
18 * section 4.1.3 PSID allocations
26 #include <epan/packet.h>
27 #include <epan/conversation.h>
28 #include <epan/oids.h>
29 #include <epan/asn1.h>
30 #include <epan/proto_data.h>
31 #include <wsutil/array.h>
33 #include "packet-oer.h"
34 #include "packet-ieee1609dot2.h"
36 #define PNAME "IEEE1609dot2"
37 #define PSNAME "IEEE1609dot2"
38 #define PFNAME "ieee1609dot2"
40 void proto_register_ieee1609dot2(void);
41 void proto_reg_handoff_ieee1609dot2(void);
43 /* Initialize the protocol and registered fields */
44 int proto_ieee1609dot2
;
45 dissector_handle_t proto_ieee1609dot2_handle
;
46 static int hf_ieee1609dot2_SecuredCrl_PDU
; /* SecuredCrl */
47 static int hf_ieee1609dot2_Ieee1609Dot2Data_PDU
; /* Ieee1609Dot2Data */
48 static int hf_ieee1609dot2_SequenceOfUint8_item
; /* Uint8 */
49 static int hf_ieee1609dot2_SequenceOfUint16_item
; /* Uint16 */
50 static int hf_ieee1609dot2_SequenceOfHashedId3_item
; /* HashedId3 */
51 static int hf_ieee1609dot2_start
; /* Time32 */
52 static int hf_ieee1609dot2_duration
; /* Duration */
53 static int hf_ieee1609dot2_microseconds
; /* Uint16 */
54 static int hf_ieee1609dot2_milliseconds
; /* Uint16 */
55 static int hf_ieee1609dot2_seconds
; /* Uint16 */
56 static int hf_ieee1609dot2_minutes
; /* Uint16 */
57 static int hf_ieee1609dot2_hours
; /* Uint16 */
58 static int hf_ieee1609dot2_sixtyHours
; /* Uint16 */
59 static int hf_ieee1609dot2_years
; /* Uint16 */
60 static int hf_ieee1609dot2_circularRegion
; /* CircularRegion */
61 static int hf_ieee1609dot2_rectangularRegion
; /* SequenceOfRectangularRegion */
62 static int hf_ieee1609dot2_polygonalRegion
; /* PolygonalRegion */
63 static int hf_ieee1609dot2_identifiedRegion
; /* SequenceOfIdentifiedRegion */
64 static int hf_ieee1609dot2_center
; /* TwoDLocation */
65 static int hf_ieee1609dot2_radius
; /* Uint16 */
66 static int hf_ieee1609dot2_northWest
; /* TwoDLocation */
67 static int hf_ieee1609dot2_southEast
; /* TwoDLocation */
68 static int hf_ieee1609dot2_SequenceOfRectangularRegion_item
; /* RectangularRegion */
69 static int hf_ieee1609dot2_PolygonalRegion_item
; /* TwoDLocation */
70 static int hf_ieee1609dot2_latitude
; /* Latitude */
71 static int hf_ieee1609dot2_longitude
; /* Longitude */
72 static int hf_ieee1609dot2_countryOnly
; /* UnCountryId */
73 static int hf_ieee1609dot2_countryAndRegions
; /* CountryAndRegions */
74 static int hf_ieee1609dot2_countryAndSubregions
; /* CountryAndSubregions */
75 static int hf_ieee1609dot2_SequenceOfIdentifiedRegion_item
; /* IdentifiedRegion */
76 static int hf_ieee1609dot2_regions
; /* SequenceOfUint8 */
77 static int hf_ieee1609dot2_regionAndSubregions
; /* SequenceOfRegionAndSubregions */
78 static int hf_ieee1609dot2_rasRegion
; /* Uint8 */
79 static int hf_ieee1609dot2_subregions
; /* SequenceOfUint16 */
80 static int hf_ieee1609dot2_SequenceOfRegionAndSubregions_item
; /* RegionAndSubregions */
81 static int hf_ieee1609dot2_elevation
; /* Elevation */
82 static int hf_ieee1609dot2_ecdsaNistP256Signature
; /* EcdsaP256Signature */
83 static int hf_ieee1609dot2_ecdsaBrainpoolP256r1Signature
; /* EcdsaP256Signature */
84 static int hf_ieee1609dot2_ecdsaBrainpoolP384r1Signature
; /* EcdsaP384Signature */
85 static int hf_ieee1609dot2_ecdsaNistP384Signature
; /* EcdsaP384Signature */
86 static int hf_ieee1609dot2_sm2Signature
; /* EcsigP256Signature */
87 static int hf_ieee1609dot2_rSig
; /* EccP256CurvePoint */
88 static int hf_ieee1609dot2_sSig
; /* OCTET_STRING_SIZE_32 */
89 static int hf_ieee1609dot2_ecdsap384RSig
; /* EccP384CurvePoint */
90 static int hf_ieee1609dot2_ecdsap384SSig
; /* OCTET_STRING_SIZE_48 */
91 static int hf_ieee1609dot2_ecsigp256RSig
; /* OCTET_STRING_SIZE_32 */
92 static int hf_ieee1609dot2_x_only
; /* OCTET_STRING_SIZE_32 */
93 static int hf_ieee1609dot2_fill
; /* NULL */
94 static int hf_ieee1609dot2_compressed_y_0
; /* OCTET_STRING_SIZE_32 */
95 static int hf_ieee1609dot2_compressed_y_1
; /* OCTET_STRING_SIZE_32 */
96 static int hf_ieee1609dot2_uncompressedP256
; /* T_uncompressedP256 */
97 static int hf_ieee1609dot2_x
; /* OCTET_STRING_SIZE_32 */
98 static int hf_ieee1609dot2_y
; /* OCTET_STRING_SIZE_32 */
99 static int hf_ieee1609dot2_eccp384cpXOnly
; /* OCTET_STRING_SIZE_48 */
100 static int hf_ieee1609dot2_eccp384cpCompressed_y_0
; /* OCTET_STRING_SIZE_48 */
101 static int hf_ieee1609dot2_eccp384cpCompressed_y_1
; /* OCTET_STRING_SIZE_48 */
102 static int hf_ieee1609dot2_uncompressedP384
; /* T_uncompressedP384 */
103 static int hf_ieee1609dot2_eccp384cpX
; /* OCTET_STRING_SIZE_48 */
104 static int hf_ieee1609dot2_eccp384cpY
; /* OCTET_STRING_SIZE_48 */
105 static int hf_ieee1609dot2_v
; /* EccP256CurvePoint */
106 static int hf_ieee1609dot2_c
; /* OCTET_STRING_SIZE_16 */
107 static int hf_ieee1609dot2_t
; /* OCTET_STRING_SIZE_16 */
108 static int hf_ieee1609dot2_t_01
; /* OCTET_STRING_SIZE_32 */
109 static int hf_ieee1609dot2_public
; /* PublicEncryptionKey */
110 static int hf_ieee1609dot2_symmetric
; /* SymmetricEncryptionKey */
111 static int hf_ieee1609dot2_supportedSymmAlg
; /* SymmAlgorithm */
112 static int hf_ieee1609dot2_publicKey
; /* BasePublicEncryptionKey */
113 static int hf_ieee1609dot2_eciesNistP256
; /* EccP256CurvePoint */
114 static int hf_ieee1609dot2_eciesBrainpoolP256r1
; /* EccP256CurvePoint */
115 static int hf_ieee1609dot2_ecencSm2
; /* EccP256CurvePoint */
116 static int hf_ieee1609dot2_ecdsaNistP256
; /* EccP256CurvePoint */
117 static int hf_ieee1609dot2_ecdsaBrainpoolP256r1
; /* EccP256CurvePoint */
118 static int hf_ieee1609dot2_ecdsaBrainpoolP384r1
; /* EccP384CurvePoint */
119 static int hf_ieee1609dot2_ecdsaNistP384
; /* EccP384CurvePoint */
120 static int hf_ieee1609dot2_ecsigSm2
; /* EccP256CurvePoint */
121 static int hf_ieee1609dot2_aes128Ccm
; /* OCTET_STRING_SIZE_16 */
122 static int hf_ieee1609dot2_sm4Ccm
; /* OCTET_STRING_SIZE_16 */
123 static int hf_ieee1609dot2_psPsid
; /* T_psPsid */
124 static int hf_ieee1609dot2_ssp
; /* ServiceSpecificPermissions */
125 static int hf_ieee1609dot2_SequenceOfPsidSsp_item
; /* PsidSsp */
126 static int hf_ieee1609dot2_opaque
; /* T_opaque */
127 static int hf_ieee1609dot2_bitmapSsp
; /* BitmapSsp */
128 static int hf_ieee1609dot2_psid
; /* Psid */
129 static int hf_ieee1609dot2_sspRange
; /* SspRange */
130 static int hf_ieee1609dot2_SequenceOfPsidSspRange_item
; /* PsidSspRange */
131 static int hf_ieee1609dot2_srRange
; /* SequenceOfOctetString */
132 static int hf_ieee1609dot2_all
; /* NULL */
133 static int hf_ieee1609dot2_bitmapSspRange
; /* BitmapSspRange */
134 static int hf_ieee1609dot2_sspValue
; /* OCTET_STRING_SIZE_1_32 */
135 static int hf_ieee1609dot2_sspBitmask
; /* OCTET_STRING_SIZE_1_32 */
136 static int hf_ieee1609dot2_SequenceOfOctetString_item
; /* OCTET_STRING_SIZE_0_MAX */
137 static int hf_ieee1609dot2_jValue
; /* OCTET_STRING_SIZE_4 */
138 static int hf_ieee1609dot2_value
; /* OCTET_STRING_SIZE_9 */
139 static int hf_ieee1609dot2_SequenceOfLinkageSeed_item
; /* LinkageSeed */
140 static int hf_ieee1609dot2_version
; /* Uint8_1 */
141 static int hf_ieee1609dot2_crlSeries
; /* CrlSeries */
142 static int hf_ieee1609dot2_crlCraca
; /* HashedId8 */
143 static int hf_ieee1609dot2_issueDate
; /* Time32 */
144 static int hf_ieee1609dot2_nextCrl
; /* Time32 */
145 static int hf_ieee1609dot2_priorityInfo
; /* CrlPriorityInfo */
146 static int hf_ieee1609dot2_typeSpecific
; /* TypeSpecificCrlContents */
147 static int hf_ieee1609dot2_priority
; /* Uint8 */
148 static int hf_ieee1609dot2_fullHashCrl
; /* ToBeSignedHashIdCrl */
149 static int hf_ieee1609dot2_deltaHashCrl
; /* ToBeSignedHashIdCrl */
150 static int hf_ieee1609dot2_fullLinkedCrl
; /* ToBeSignedLinkageValueCrl */
151 static int hf_ieee1609dot2_deltaLinkedCrl
; /* ToBeSignedLinkageValueCrl */
152 static int hf_ieee1609dot2_fullLinkedCrlWithAlg
; /* ToBeSignedLinkageValueCrlWithAlgIdentifier */
153 static int hf_ieee1609dot2_deltaLinkedCrlWithAlg
; /* ToBeSignedLinkageValueCrlWithAlgIdentifier */
154 static int hf_ieee1609dot2_crlSerial
; /* Uint32 */
155 static int hf_ieee1609dot2_entries
; /* SequenceOfHashBasedRevocationInfo */
156 static int hf_ieee1609dot2_SequenceOfHashBasedRevocationInfo_item
; /* HashBasedRevocationInfo */
157 static int hf_ieee1609dot2_hashedId
; /* HashedId10 */
158 static int hf_ieee1609dot2_expiry
; /* Time32 */
159 static int hf_ieee1609dot2_iRev
; /* IValue */
160 static int hf_ieee1609dot2_indexWithinI
; /* Uint8 */
161 static int hf_ieee1609dot2_individual
; /* SequenceOfJMaxGroup */
162 static int hf_ieee1609dot2_groups
; /* SequenceOfGroupCrlEntry */
163 static int hf_ieee1609dot2_groupsSingleSeed
; /* SequenceOfGroupSingleSeedCrlEntry */
164 static int hf_ieee1609dot2_SequenceOfJMaxGroup_item
; /* JMaxGroup */
165 static int hf_ieee1609dot2_jmax
; /* Uint8 */
166 static int hf_ieee1609dot2_contents
; /* SequenceOfLAGroup */
167 static int hf_ieee1609dot2_SequenceOfLAGroup_item
; /* LAGroup */
168 static int hf_ieee1609dot2_la1Id
; /* LaId */
169 static int hf_ieee1609dot2_la2Id
; /* LaId */
170 static int hf_ieee1609dot2_contents_01
; /* SequenceOfIMaxGroup */
171 static int hf_ieee1609dot2_SequenceOfIMaxGroup_item
; /* IMaxGroup */
172 static int hf_ieee1609dot2_iMax
; /* Uint16 */
173 static int hf_ieee1609dot2_contents_02
; /* SequenceOfIndividualRevocation */
174 static int hf_ieee1609dot2_singleSeed
; /* SequenceOfLinkageSeed */
175 static int hf_ieee1609dot2_SequenceOfIndividualRevocation_item
; /* IndividualRevocation */
176 static int hf_ieee1609dot2_linkageSeed1
; /* LinkageSeed */
177 static int hf_ieee1609dot2_linkageSeed2
; /* LinkageSeed */
178 static int hf_ieee1609dot2_SequenceOfGroupCrlEntry_item
; /* GroupCrlEntry */
179 static int hf_ieee1609dot2_seedEvolution
; /* SeedEvolutionFunctionIdentifier */
180 static int hf_ieee1609dot2_lvGeneration
; /* LvGenerationFunctionIdentifier */
181 static int hf_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry_item
; /* GroupSingleSeedCrlEntry */
182 static int hf_ieee1609dot2_laId
; /* LaId */
183 static int hf_ieee1609dot2_linkageSeed
; /* LinkageSeed */
184 static int hf_ieee1609dot2_content
; /* SecuredCrlContent */
185 static int hf_ieee1609dot2_signedData
; /* CrlSignedData */
186 static int hf_ieee1609dot2_tbsData
; /* CrlToBeSignedData */
187 static int hf_ieee1609dot2_payload
; /* CrlSignedDataPayload */
188 static int hf_ieee1609dot2_headerInfo
; /* HeaderInfo */
189 static int hf_ieee1609dot2_data
; /* Ieee1609Dot2CrlData */
190 static int hf_ieee1609dot2_content_01
; /* Ieee1609Dot2CrlContent */
191 static int hf_ieee1609dot2_unsecuredData
; /* CrlContents */
192 static int hf_ieee1609dot2_protocolVersion
; /* Uint8_3 */
193 static int hf_ieee1609dot2_content_02
; /* Ieee1609Dot2Content */
194 static int hf_ieee1609dot2_unsecuredData_01
; /* T_unsecuredData */
195 static int hf_ieee1609dot2_signedData_01
; /* SignedData */
196 static int hf_ieee1609dot2_encryptedData
; /* EncryptedData */
197 static int hf_ieee1609dot2_signedCertificateRequest
; /* Opaque */
198 static int hf_ieee1609dot2_signedX509CertificateRequest
; /* Opaque */
199 static int hf_ieee1609dot2_hashId
; /* HashAlgorithm */
200 static int hf_ieee1609dot2_tbsData_01
; /* ToBeSignedData */
201 static int hf_ieee1609dot2_signer
; /* SignerIdentifier */
202 static int hf_ieee1609dot2_signature
; /* Signature */
203 static int hf_ieee1609dot2_payload_01
; /* SignedDataPayload */
204 static int hf_ieee1609dot2_data_01
; /* Ieee1609Dot2Data */
205 static int hf_ieee1609dot2_extDataHash
; /* HashedData */
206 static int hf_ieee1609dot2_omitted
; /* NULL */
207 static int hf_ieee1609dot2_sha256HashedData
; /* HashedId32 */
208 static int hf_ieee1609dot2_sha384HashedData
; /* HashedId48 */
209 static int hf_ieee1609dot2_sm3HashedData
; /* HashedId32 */
210 static int hf_ieee1609dot2_hiPsid
; /* T_hiPsid */
211 static int hf_ieee1609dot2_generationTime
; /* Time64 */
212 static int hf_ieee1609dot2_expiryTime
; /* Time64 */
213 static int hf_ieee1609dot2_generationLocation
; /* ThreeDLocation */
214 static int hf_ieee1609dot2_p2pcdLearningRequest
; /* HashedId3 */
215 static int hf_ieee1609dot2_missingCrlIdentifier
; /* MissingCrlIdentifier */
216 static int hf_ieee1609dot2_encryptionKey
; /* EncryptionKey */
217 static int hf_ieee1609dot2_inlineP2pcdRequest
; /* SequenceOfHashedId3 */
218 static int hf_ieee1609dot2_requestedCertificate
; /* Certificate */
219 static int hf_ieee1609dot2_pduFunctionalType
; /* PduFunctionalType */
220 static int hf_ieee1609dot2_contributedExtensions
; /* ContributedExtensionBlocks */
221 static int hf_ieee1609dot2_cracaId
; /* HashedId3 */
222 static int hf_ieee1609dot2_ContributedExtensionBlocks_item
; /* ContributedExtensionBlock */
223 static int hf_ieee1609dot2_contributorId
; /* HeaderInfoContributorId */
224 static int hf_ieee1609dot2_extns
; /* T_extns */
225 static int hf_ieee1609dot2_extns_item
; /* T_extns_item */
226 static int hf_ieee1609dot2_digest
; /* HashedId8 */
227 static int hf_ieee1609dot2_certificate
; /* SequenceOfCertificate */
228 static int hf_ieee1609dot2_siSelf
; /* NULL */
229 static int hf_ieee1609dot2_recipients
; /* SequenceOfRecipientInfo */
230 static int hf_ieee1609dot2_ciphertext
; /* SymmetricCiphertext */
231 static int hf_ieee1609dot2_pskRecipInfo
; /* PreSharedKeyRecipientInfo */
232 static int hf_ieee1609dot2_symmRecipInfo
; /* SymmRecipientInfo */
233 static int hf_ieee1609dot2_certRecipInfo
; /* PKRecipientInfo */
234 static int hf_ieee1609dot2_signedDataRecipInfo
; /* PKRecipientInfo */
235 static int hf_ieee1609dot2_rekRecipInfo
; /* PKRecipientInfo */
236 static int hf_ieee1609dot2_SequenceOfRecipientInfo_item
; /* RecipientInfo */
237 static int hf_ieee1609dot2_recipientId
; /* HashedId8 */
238 static int hf_ieee1609dot2_sriEncKey
; /* SymmetricCiphertext */
239 static int hf_ieee1609dot2_encKey
; /* EncryptedDataEncryptionKey */
240 static int hf_ieee1609dot2_edeEciesNistP256
; /* EciesP256EncryptedKey */
241 static int hf_ieee1609dot2_edekEciesBrainpoolP256r1
; /* EciesP256EncryptedKey */
242 static int hf_ieee1609dot2_ecencSm2256
; /* EcencP256EncryptedKey */
243 static int hf_ieee1609dot2_aes128ccm
; /* One28BitCcmCiphertext */
244 static int hf_ieee1609dot2_sm4Ccm_01
; /* One28BitCcmCiphertext */
245 static int hf_ieee1609dot2_nonce
; /* OCTET_STRING_SIZE_12 */
246 static int hf_ieee1609dot2_ccmCiphertext
; /* Opaque */
247 static int hf_ieee1609dot2_SequenceOfCertificate_item
; /* Certificate */
248 static int hf_ieee1609dot2_version_01
; /* Uint8_3 */
249 static int hf_ieee1609dot2_type
; /* CertificateType */
250 static int hf_ieee1609dot2_issuer
; /* IssuerIdentifier */
251 static int hf_ieee1609dot2_toBeSigned
; /* ToBeSignedCertificate */
252 static int hf_ieee1609dot2_sha256AndDigest
; /* HashedId8 */
253 static int hf_ieee1609dot2_iiSelf
; /* HashAlgorithm */
254 static int hf_ieee1609dot2_sha384AndDigest
; /* HashedId8 */
255 static int hf_ieee1609dot2_sm3AndDigest
; /* HashedId8 */
256 static int hf_ieee1609dot2_certificateId
; /* CertificateId */
257 static int hf_ieee1609dot2_validityPeriod
; /* ValidityPeriod */
258 static int hf_ieee1609dot2_region
; /* GeographicRegion */
259 static int hf_ieee1609dot2_assuranceLevel
; /* SubjectAssurance */
260 static int hf_ieee1609dot2_appPermissions
; /* SequenceOfPsidSsp */
261 static int hf_ieee1609dot2_certIssuePermissions
; /* SequenceOfPsidGroupPermissions */
262 static int hf_ieee1609dot2_certRequestPermissions
; /* SequenceOfPsidGroupPermissions */
263 static int hf_ieee1609dot2_canRequestRollover
; /* NULL */
264 static int hf_ieee1609dot2_tbscEncryptionKey
; /* PublicEncryptionKey */
265 static int hf_ieee1609dot2_verifyKeyIndicator
; /* VerificationKeyIndicator */
266 static int hf_ieee1609dot2_flags
; /* T_flags */
267 static int hf_ieee1609dot2_appExtensions
; /* SequenceOfAppExtensions */
268 static int hf_ieee1609dot2_certIssueExtensions
; /* SequenceOfCertIssueExtensions */
269 static int hf_ieee1609dot2_certRequestExtension
; /* SequenceOfCertRequestExtensions */
270 static int hf_ieee1609dot2_linkageData
; /* LinkageData */
271 static int hf_ieee1609dot2_name
; /* Hostname */
272 static int hf_ieee1609dot2_binaryId
; /* OCTET_STRING_SIZE_1_64 */
273 static int hf_ieee1609dot2_none
; /* NULL */
274 static int hf_ieee1609dot2_iCert
; /* IValue */
275 static int hf_ieee1609dot2_linkage_value
; /* LinkageValue */
276 static int hf_ieee1609dot2_group_linkage_value
; /* GroupLinkageValue */
277 static int hf_ieee1609dot2_subjectPermissions
; /* SubjectPermissions */
278 static int hf_ieee1609dot2_minChainLength
; /* INTEGER */
279 static int hf_ieee1609dot2_chainLengthRange
; /* INTEGER */
280 static int hf_ieee1609dot2_eeType
; /* EndEntityType */
281 static int hf_ieee1609dot2_SequenceOfPsidGroupPermissions_item
; /* PsidGroupPermissions */
282 static int hf_ieee1609dot2_explicit
; /* SequenceOfPsidSspRange */
283 static int hf_ieee1609dot2_verificationKey
; /* PublicVerificationKey */
284 static int hf_ieee1609dot2_reconstructionValue
; /* EccP256CurvePoint */
285 static int hf_ieee1609dot2_SequenceOfAppExtensions_item
; /* AppExtension */
286 static int hf_ieee1609dot2_id
; /* ExtId */
287 static int hf_ieee1609dot2_content_03
; /* T_content */
288 static int hf_ieee1609dot2_SequenceOfCertIssueExtensions_item
; /* CertIssueExtension */
289 static int hf_ieee1609dot2_permissions
; /* T_permissions */
290 static int hf_ieee1609dot2_specific
; /* T_specific */
291 static int hf_ieee1609dot2_SequenceOfCertRequestExtensions_item
; /* CertRequestExtension */
292 static int hf_ieee1609dot2_permissions_01
; /* T_permissions_01 */
293 static int hf_ieee1609dot2_content_04
; /* T_content_01 */
295 static int hf_ieee1609dot2_T_flags_usesCubk
;
296 static int hf_ieee1609dot2_EndEntityType_app
;
297 static int hf_ieee1609dot2_EndEntityType_enrol
;
299 /* Initialize the subtree pointers */
300 static int ett_ieee1609dot2_ssp
;
301 static int ett_ieee1609dot2_SequenceOfUint8
;
302 static int ett_ieee1609dot2_SequenceOfUint16
;
303 static int ett_ieee1609dot2_SequenceOfHashedId3
;
304 static int ett_ieee1609dot2_ValidityPeriod
;
305 static int ett_ieee1609dot2_Duration
;
306 static int ett_ieee1609dot2_GeographicRegion
;
307 static int ett_ieee1609dot2_CircularRegion
;
308 static int ett_ieee1609dot2_RectangularRegion
;
309 static int ett_ieee1609dot2_SequenceOfRectangularRegion
;
310 static int ett_ieee1609dot2_PolygonalRegion
;
311 static int ett_ieee1609dot2_TwoDLocation
;
312 static int ett_ieee1609dot2_IdentifiedRegion
;
313 static int ett_ieee1609dot2_SequenceOfIdentifiedRegion
;
314 static int ett_ieee1609dot2_CountryAndRegions
;
315 static int ett_ieee1609dot2_CountryAndSubregions
;
316 static int ett_ieee1609dot2_RegionAndSubregions
;
317 static int ett_ieee1609dot2_SequenceOfRegionAndSubregions
;
318 static int ett_ieee1609dot2_ThreeDLocation
;
319 static int ett_ieee1609dot2_Signature
;
320 static int ett_ieee1609dot2_EcdsaP256Signature
;
321 static int ett_ieee1609dot2_EcdsaP384Signature
;
322 static int ett_ieee1609dot2_EcsigP256Signature
;
323 static int ett_ieee1609dot2_EccP256CurvePoint
;
324 static int ett_ieee1609dot2_T_uncompressedP256
;
325 static int ett_ieee1609dot2_EccP384CurvePoint
;
326 static int ett_ieee1609dot2_T_uncompressedP384
;
327 static int ett_ieee1609dot2_EciesP256EncryptedKey
;
328 static int ett_ieee1609dot2_EcencP256EncryptedKey
;
329 static int ett_ieee1609dot2_EncryptionKey
;
330 static int ett_ieee1609dot2_PublicEncryptionKey
;
331 static int ett_ieee1609dot2_BasePublicEncryptionKey
;
332 static int ett_ieee1609dot2_PublicVerificationKey
;
333 static int ett_ieee1609dot2_SymmetricEncryptionKey
;
334 static int ett_ieee1609dot2_PsidSsp
;
335 static int ett_ieee1609dot2_SequenceOfPsidSsp
;
336 static int ett_ieee1609dot2_ServiceSpecificPermissions
;
337 static int ett_ieee1609dot2_PsidSspRange
;
338 static int ett_ieee1609dot2_SequenceOfPsidSspRange
;
339 static int ett_ieee1609dot2_SspRange
;
340 static int ett_ieee1609dot2_BitmapSspRange
;
341 static int ett_ieee1609dot2_SequenceOfOctetString
;
342 static int ett_ieee1609dot2_GroupLinkageValue
;
343 static int ett_ieee1609dot2_SequenceOfLinkageSeed
;
344 static int ett_ieee1609dot2_CrlContents
;
345 static int ett_ieee1609dot2_CrlPriorityInfo
;
346 static int ett_ieee1609dot2_TypeSpecificCrlContents
;
347 static int ett_ieee1609dot2_ToBeSignedHashIdCrl
;
348 static int ett_ieee1609dot2_SequenceOfHashBasedRevocationInfo
;
349 static int ett_ieee1609dot2_HashBasedRevocationInfo
;
350 static int ett_ieee1609dot2_ToBeSignedLinkageValueCrl
;
351 static int ett_ieee1609dot2_SequenceOfJMaxGroup
;
352 static int ett_ieee1609dot2_JMaxGroup
;
353 static int ett_ieee1609dot2_SequenceOfLAGroup
;
354 static int ett_ieee1609dot2_LAGroup
;
355 static int ett_ieee1609dot2_SequenceOfIMaxGroup
;
356 static int ett_ieee1609dot2_IMaxGroup
;
357 static int ett_ieee1609dot2_SequenceOfIndividualRevocation
;
358 static int ett_ieee1609dot2_IndividualRevocation
;
359 static int ett_ieee1609dot2_SequenceOfGroupCrlEntry
;
360 static int ett_ieee1609dot2_GroupCrlEntry
;
361 static int ett_ieee1609dot2_ToBeSignedLinkageValueCrlWithAlgIdentifier
;
362 static int ett_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry
;
363 static int ett_ieee1609dot2_GroupSingleSeedCrlEntry
;
364 static int ett_ieee1609dot2_SecuredCrl
;
365 static int ett_ieee1609dot2_SecuredCrlContent
;
366 static int ett_ieee1609dot2_CrlSignedData
;
367 static int ett_ieee1609dot2_CrlToBeSignedData
;
368 static int ett_ieee1609dot2_CrlSignedDataPayload
;
369 static int ett_ieee1609dot2_Ieee1609Dot2CrlData
;
370 static int ett_ieee1609dot2_Ieee1609Dot2CrlContent
;
371 static int ett_ieee1609dot2_Ieee1609Dot2Data
;
372 static int ett_ieee1609dot2_Ieee1609Dot2Content
;
373 static int ett_ieee1609dot2_SignedData
;
374 static int ett_ieee1609dot2_ToBeSignedData
;
375 static int ett_ieee1609dot2_SignedDataPayload
;
376 static int ett_ieee1609dot2_HashedData
;
377 static int ett_ieee1609dot2_HeaderInfo
;
378 static int ett_ieee1609dot2_MissingCrlIdentifier
;
379 static int ett_ieee1609dot2_ContributedExtensionBlocks
;
380 static int ett_ieee1609dot2_ContributedExtensionBlock
;
381 static int ett_ieee1609dot2_T_extns
;
382 static int ett_ieee1609dot2_SignerIdentifier
;
383 static int ett_ieee1609dot2_EncryptedData
;
384 static int ett_ieee1609dot2_RecipientInfo
;
385 static int ett_ieee1609dot2_SequenceOfRecipientInfo
;
386 static int ett_ieee1609dot2_SymmRecipientInfo
;
387 static int ett_ieee1609dot2_PKRecipientInfo
;
388 static int ett_ieee1609dot2_EncryptedDataEncryptionKey
;
389 static int ett_ieee1609dot2_SymmetricCiphertext
;
390 static int ett_ieee1609dot2_One28BitCcmCiphertext
;
391 static int ett_ieee1609dot2_SequenceOfCertificate
;
392 static int ett_ieee1609dot2_CertificateBase
;
393 static int ett_ieee1609dot2_IssuerIdentifier
;
394 static int ett_ieee1609dot2_ToBeSignedCertificate
;
395 static int ett_ieee1609dot2_T_flags
;
396 static int ett_ieee1609dot2_CertificateId
;
397 static int ett_ieee1609dot2_LinkageData
;
398 static int ett_ieee1609dot2_EndEntityType
;
399 static int ett_ieee1609dot2_PsidGroupPermissions
;
400 static int ett_ieee1609dot2_SequenceOfPsidGroupPermissions
;
401 static int ett_ieee1609dot2_SubjectPermissions
;
402 static int ett_ieee1609dot2_VerificationKeyIndicator
;
403 static int ett_ieee1609dot2_SequenceOfAppExtensions
;
404 static int ett_ieee1609dot2_AppExtension
;
405 static int ett_ieee1609dot2_SequenceOfCertIssueExtensions
;
406 static int ett_ieee1609dot2_CertIssueExtension
;
407 static int ett_ieee1609dot2_T_permissions
;
408 static int ett_ieee1609dot2_SequenceOfCertRequestExtensions
;
409 static int ett_ieee1609dot2_CertRequestExtension
;
410 static int ett_ieee1609dot2_T_permissions_01
;
412 static dissector_table_t unsecured_data_subdissector_table
;
413 static dissector_table_t ssp_subdissector_table
;
415 typedef struct ieee1609_private_data
{
416 tvbuff_t
*unsecured_data
;
417 uint64_t psidssp
; // psid for Service Specific Permissions
418 } ieee1609_private_data_t
;
421 ieee1609dot2_set_next_default_psid(packet_info
*pinfo
, uint32_t psid
)
423 p_add_proto_data(wmem_file_scope(), pinfo
, proto_ieee1609dot2
, 0, GUINT_TO_POINTER(psid
));
426 /*--- Cyclic dependencies ---*/
428 /* Ieee1609Dot2Data -> Ieee1609Dot2Content -> SignedData -> ToBeSignedData -> SignedDataPayload -> Ieee1609Dot2Data */
429 static int dissect_ieee1609dot2_Ieee1609Dot2Data(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
);
435 dissect_ieee1609dot2_Uint8(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
436 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
437 0U, 255U, NULL
, false);
445 dissect_ieee1609dot2_Uint16(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
446 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
447 0U, 65535U, NULL
, false);
455 dissect_ieee1609dot2_Uint32(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
456 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
457 0U, 4294967295U, NULL
, false);
465 dissect_ieee1609dot2_Uint64(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
466 offset
= dissect_oer_constrained_integer_64b(tvb
, offset
, actx
, tree
, hf_index
,
467 0U, UINT64_C(18446744073709551615), NULL
, false);
473 static const oer_sequence_t SequenceOfUint8_sequence_of
[1] = {
474 { &hf_ieee1609dot2_SequenceOfUint8_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8
},
478 dissect_ieee1609dot2_SequenceOfUint8(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
479 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
480 ett_ieee1609dot2_SequenceOfUint8
, SequenceOfUint8_sequence_of
);
486 static const oer_sequence_t SequenceOfUint16_sequence_of
[1] = {
487 { &hf_ieee1609dot2_SequenceOfUint16_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint16
},
491 dissect_ieee1609dot2_SequenceOfUint16(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
492 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
493 ett_ieee1609dot2_SequenceOfUint16
, SequenceOfUint16_sequence_of
);
501 dissect_ieee1609dot2_Opaque(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
502 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
503 NO_BOUND
, NO_BOUND
, false, NULL
);
511 dissect_ieee1609dot2_HashedId3(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
512 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
519 static const oer_sequence_t SequenceOfHashedId3_sequence_of
[1] = {
520 { &hf_ieee1609dot2_SequenceOfHashedId3_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashedId3
},
524 dissect_ieee1609dot2_SequenceOfHashedId3(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
525 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
526 ett_ieee1609dot2_SequenceOfHashedId3
, SequenceOfHashedId3_sequence_of
);
534 dissect_ieee1609dot2_HashedId8(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
535 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
544 dissect_ieee1609dot2_HashedId10(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
545 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
546 10, 10, false, NULL
);
554 dissect_ieee1609dot2_HashedId32(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
555 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
556 32, 32, false, NULL
);
564 dissect_ieee1609dot2_HashedId48(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
565 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
566 48, 48, false, NULL
);
574 dissect_ieee1609dot2_Time32(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
575 offset
= dissect_ieee1609dot2_Uint32(tvb
, offset
, actx
, tree
, hf_index
);
583 dissect_ieee1609dot2_Time64(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
584 offset
= dissect_ieee1609dot2_Uint64(tvb
, offset
, actx
, tree
, hf_index
);
590 static const value_string ieee1609dot2_Duration_vals
[] = {
591 { 0, "microseconds" },
592 { 1, "milliseconds" },
601 static const oer_choice_t Duration_choice
[] = {
602 { 0, &hf_ieee1609dot2_microseconds
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_Uint16
},
603 { 1, &hf_ieee1609dot2_milliseconds
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_Uint16
},
604 { 2, &hf_ieee1609dot2_seconds
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_Uint16
},
605 { 3, &hf_ieee1609dot2_minutes
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_Uint16
},
606 { 4, &hf_ieee1609dot2_hours
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_Uint16
},
607 { 5, &hf_ieee1609dot2_sixtyHours
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_Uint16
},
608 { 6, &hf_ieee1609dot2_years
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_Uint16
},
613 dissect_ieee1609dot2_Duration(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
614 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
615 ett_ieee1609dot2_Duration
, Duration_choice
,
622 static const oer_sequence_t ValidityPeriod_sequence
[] = {
623 { &hf_ieee1609dot2_start
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Time32
},
624 { &hf_ieee1609dot2_duration
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Duration
},
629 dissect_ieee1609dot2_ValidityPeriod(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
630 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
631 ett_ieee1609dot2_ValidityPeriod
, ValidityPeriod_sequence
);
639 dissect_ieee1609dot2_NinetyDegreeInt(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
640 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
641 -900000000, 900000001U, NULL
, false);
649 dissect_ieee1609dot2_Latitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
650 offset
= dissect_ieee1609dot2_NinetyDegreeInt(tvb
, offset
, actx
, tree
, hf_index
);
658 dissect_ieee1609dot2_OneEightyDegreeInt(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
659 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
660 -1799999999, 1800000001U, NULL
, false);
668 dissect_ieee1609dot2_Longitude(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
669 offset
= dissect_ieee1609dot2_OneEightyDegreeInt(tvb
, offset
, actx
, tree
, hf_index
);
675 static const oer_sequence_t TwoDLocation_sequence
[] = {
676 { &hf_ieee1609dot2_latitude
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Latitude
},
677 { &hf_ieee1609dot2_longitude
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Longitude
},
682 dissect_ieee1609dot2_TwoDLocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
683 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
684 ett_ieee1609dot2_TwoDLocation
, TwoDLocation_sequence
);
690 static const oer_sequence_t CircularRegion_sequence
[] = {
691 { &hf_ieee1609dot2_center
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_TwoDLocation
},
692 { &hf_ieee1609dot2_radius
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint16
},
697 dissect_ieee1609dot2_CircularRegion(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
698 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
699 ett_ieee1609dot2_CircularRegion
, CircularRegion_sequence
);
705 static const oer_sequence_t RectangularRegion_sequence
[] = {
706 { &hf_ieee1609dot2_northWest
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_TwoDLocation
},
707 { &hf_ieee1609dot2_southEast
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_TwoDLocation
},
712 dissect_ieee1609dot2_RectangularRegion(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
713 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
714 ett_ieee1609dot2_RectangularRegion
, RectangularRegion_sequence
);
720 static const oer_sequence_t SequenceOfRectangularRegion_sequence_of
[1] = {
721 { &hf_ieee1609dot2_SequenceOfRectangularRegion_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_RectangularRegion
},
725 dissect_ieee1609dot2_SequenceOfRectangularRegion(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
726 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
727 ett_ieee1609dot2_SequenceOfRectangularRegion
, SequenceOfRectangularRegion_sequence_of
);
733 static const oer_sequence_t PolygonalRegion_sequence_of
[1] = {
734 { &hf_ieee1609dot2_PolygonalRegion_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_TwoDLocation
},
738 dissect_ieee1609dot2_PolygonalRegion(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
739 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
740 ett_ieee1609dot2_PolygonalRegion
, PolygonalRegion_sequence_of
,
749 dissect_ieee1609dot2_UnCountryId(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
750 offset
= dissect_ieee1609dot2_Uint16(tvb
, offset
, actx
, tree
, hf_index
);
756 static const oer_sequence_t CountryAndRegions_sequence
[] = {
757 { &hf_ieee1609dot2_countryOnly
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_UnCountryId
},
758 { &hf_ieee1609dot2_regions
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfUint8
},
763 dissect_ieee1609dot2_CountryAndRegions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
764 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
765 ett_ieee1609dot2_CountryAndRegions
, CountryAndRegions_sequence
);
771 static const oer_sequence_t RegionAndSubregions_sequence
[] = {
772 { &hf_ieee1609dot2_rasRegion
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8
},
773 { &hf_ieee1609dot2_subregions
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfUint16
},
778 dissect_ieee1609dot2_RegionAndSubregions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
779 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
780 ett_ieee1609dot2_RegionAndSubregions
, RegionAndSubregions_sequence
);
786 static const oer_sequence_t SequenceOfRegionAndSubregions_sequence_of
[1] = {
787 { &hf_ieee1609dot2_SequenceOfRegionAndSubregions_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_RegionAndSubregions
},
791 dissect_ieee1609dot2_SequenceOfRegionAndSubregions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
792 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
793 ett_ieee1609dot2_SequenceOfRegionAndSubregions
, SequenceOfRegionAndSubregions_sequence_of
);
799 static const oer_sequence_t CountryAndSubregions_sequence
[] = {
800 { &hf_ieee1609dot2_countryOnly
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_UnCountryId
},
801 { &hf_ieee1609dot2_regionAndSubregions
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfRegionAndSubregions
},
806 dissect_ieee1609dot2_CountryAndSubregions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
807 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
808 ett_ieee1609dot2_CountryAndSubregions
, CountryAndSubregions_sequence
);
814 static const value_string ieee1609dot2_IdentifiedRegion_vals
[] = {
815 { 0, "countryOnly" },
816 { 1, "countryAndRegions" },
817 { 2, "countryAndSubregions" },
821 static const oer_choice_t IdentifiedRegion_choice
[] = {
822 { 0, &hf_ieee1609dot2_countryOnly
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_UnCountryId
},
823 { 1, &hf_ieee1609dot2_countryAndRegions
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_CountryAndRegions
},
824 { 2, &hf_ieee1609dot2_countryAndSubregions
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_CountryAndSubregions
},
829 dissect_ieee1609dot2_IdentifiedRegion(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
830 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
831 ett_ieee1609dot2_IdentifiedRegion
, IdentifiedRegion_choice
,
838 static const oer_sequence_t SequenceOfIdentifiedRegion_sequence_of
[1] = {
839 { &hf_ieee1609dot2_SequenceOfIdentifiedRegion_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_IdentifiedRegion
},
843 dissect_ieee1609dot2_SequenceOfIdentifiedRegion(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
844 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
845 ett_ieee1609dot2_SequenceOfIdentifiedRegion
, SequenceOfIdentifiedRegion_sequence_of
);
851 static const value_string ieee1609dot2_GeographicRegion_vals
[] = {
852 { 0, "circularRegion" },
853 { 1, "rectangularRegion" },
854 { 2, "polygonalRegion" },
855 { 3, "identifiedRegion" },
859 static const oer_choice_t GeographicRegion_choice
[] = {
860 { 0, &hf_ieee1609dot2_circularRegion
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_CircularRegion
},
861 { 1, &hf_ieee1609dot2_rectangularRegion
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_SequenceOfRectangularRegion
},
862 { 2, &hf_ieee1609dot2_polygonalRegion
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_PolygonalRegion
},
863 { 3, &hf_ieee1609dot2_identifiedRegion
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_SequenceOfIdentifiedRegion
},
868 dissect_ieee1609dot2_GeographicRegion(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
869 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
870 ett_ieee1609dot2_GeographicRegion
, GeographicRegion_choice
,
879 dissect_ieee1609dot2_Elevation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
880 offset
= dissect_ieee1609dot2_Uint16(tvb
, offset
, actx
, tree
, hf_index
);
886 static const oer_sequence_t ThreeDLocation_sequence
[] = {
887 { &hf_ieee1609dot2_latitude
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Latitude
},
888 { &hf_ieee1609dot2_longitude
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Longitude
},
889 { &hf_ieee1609dot2_elevation
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Elevation
},
894 dissect_ieee1609dot2_ThreeDLocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
895 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
896 ett_ieee1609dot2_ThreeDLocation
, ThreeDLocation_sequence
);
904 dissect_ieee1609dot2_OCTET_STRING_SIZE_32(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
905 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
906 32, 32, false, NULL
);
914 dissect_ieee1609dot2_NULL(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
915 offset
= dissect_oer_null(tvb
, offset
, actx
, tree
, hf_index
);
921 static const oer_sequence_t T_uncompressedP256_sequence
[] = {
922 { &hf_ieee1609dot2_x
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
923 { &hf_ieee1609dot2_y
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
928 dissect_ieee1609dot2_T_uncompressedP256(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
929 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
930 ett_ieee1609dot2_T_uncompressedP256
, T_uncompressedP256_sequence
);
936 static const value_string ieee1609dot2_EccP256CurvePoint_vals
[] = {
939 { 2, "compressed-y-0" },
940 { 3, "compressed-y-1" },
941 { 4, "uncompressedP256" },
945 static const oer_choice_t EccP256CurvePoint_choice
[] = {
946 { 0, &hf_ieee1609dot2_x_only
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
947 { 1, &hf_ieee1609dot2_fill
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_NULL
},
948 { 2, &hf_ieee1609dot2_compressed_y_0
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
949 { 3, &hf_ieee1609dot2_compressed_y_1
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
950 { 4, &hf_ieee1609dot2_uncompressedP256
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_T_uncompressedP256
},
955 dissect_ieee1609dot2_EccP256CurvePoint(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
956 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
957 ett_ieee1609dot2_EccP256CurvePoint
, EccP256CurvePoint_choice
,
964 static const oer_sequence_t EcdsaP256Signature_sequence
[] = {
965 { &hf_ieee1609dot2_rSig
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_EccP256CurvePoint
},
966 { &hf_ieee1609dot2_sSig
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
971 dissect_ieee1609dot2_EcdsaP256Signature(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
972 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
973 ett_ieee1609dot2_EcdsaP256Signature
, EcdsaP256Signature_sequence
);
981 dissect_ieee1609dot2_OCTET_STRING_SIZE_48(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
982 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
983 48, 48, false, NULL
);
989 static const oer_sequence_t T_uncompressedP384_sequence
[] = {
990 { &hf_ieee1609dot2_eccp384cpX
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_48
},
991 { &hf_ieee1609dot2_eccp384cpY
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_48
},
996 dissect_ieee1609dot2_T_uncompressedP384(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
997 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
998 ett_ieee1609dot2_T_uncompressedP384
, T_uncompressedP384_sequence
);
1004 static const value_string ieee1609dot2_EccP384CurvePoint_vals
[] = {
1007 { 2, "compressed-y-0" },
1008 { 3, "compressed-y-1" },
1009 { 4, "uncompressedP384" },
1013 static const oer_choice_t EccP384CurvePoint_choice
[] = {
1014 { 0, &hf_ieee1609dot2_eccp384cpXOnly
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_OCTET_STRING_SIZE_48
},
1015 { 1, &hf_ieee1609dot2_fill
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_NULL
},
1016 { 2, &hf_ieee1609dot2_eccp384cpCompressed_y_0
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_OCTET_STRING_SIZE_48
},
1017 { 3, &hf_ieee1609dot2_eccp384cpCompressed_y_1
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_OCTET_STRING_SIZE_48
},
1018 { 4, &hf_ieee1609dot2_uncompressedP384
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_T_uncompressedP384
},
1019 { 0, NULL
, 0, NULL
}
1023 dissect_ieee1609dot2_EccP384CurvePoint(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1024 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1025 ett_ieee1609dot2_EccP384CurvePoint
, EccP384CurvePoint_choice
,
1032 static const oer_sequence_t EcdsaP384Signature_sequence
[] = {
1033 { &hf_ieee1609dot2_ecdsap384RSig
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_EccP384CurvePoint
},
1034 { &hf_ieee1609dot2_ecdsap384SSig
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_48
},
1035 { NULL
, 0, 0, NULL
}
1039 dissect_ieee1609dot2_EcdsaP384Signature(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1040 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1041 ett_ieee1609dot2_EcdsaP384Signature
, EcdsaP384Signature_sequence
);
1047 static const oer_sequence_t EcsigP256Signature_sequence
[] = {
1048 { &hf_ieee1609dot2_ecsigp256RSig
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
1049 { &hf_ieee1609dot2_sSig
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
1050 { NULL
, 0, 0, NULL
}
1054 dissect_ieee1609dot2_EcsigP256Signature(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1055 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1056 ett_ieee1609dot2_EcsigP256Signature
, EcsigP256Signature_sequence
);
1062 static const value_string ieee1609dot2_Signature_vals
[] = {
1063 { 0, "ecdsaNistP256Signature" },
1064 { 1, "ecdsaBrainpoolP256r1Signature" },
1065 { 2, "ecdsaBrainpoolP384r1Signature" },
1066 { 3, "ecdsaNistP384Signature" },
1067 { 4, "sm2Signature" },
1071 static const oer_choice_t Signature_choice
[] = {
1072 { 0, &hf_ieee1609dot2_ecdsaNistP256Signature
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EcdsaP256Signature
},
1073 { 1, &hf_ieee1609dot2_ecdsaBrainpoolP256r1Signature
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EcdsaP256Signature
},
1074 { 2, &hf_ieee1609dot2_ecdsaBrainpoolP384r1Signature
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EcdsaP384Signature
},
1075 { 3, &hf_ieee1609dot2_ecdsaNistP384Signature
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EcdsaP384Signature
},
1076 { 4, &hf_ieee1609dot2_sm2Signature
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EcsigP256Signature
},
1077 { 0, NULL
, 0, NULL
}
1081 dissect_ieee1609dot2_Signature(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1082 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1083 ett_ieee1609dot2_Signature
, Signature_choice
,
1090 static const value_string ieee1609dot2_SymmAlgorithm_vals
[] = {
1098 dissect_ieee1609dot2_SymmAlgorithm(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1099 offset
= dissect_oer_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1100 1, NULL
, true, 1, NULL
);
1106 static const value_string ieee1609dot2_HashAlgorithm_vals
[] = {
1115 dissect_ieee1609dot2_HashAlgorithm(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1116 offset
= dissect_oer_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1117 1, NULL
, true, 2, NULL
);
1125 dissect_ieee1609dot2_OCTET_STRING_SIZE_16(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1126 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1127 16, 16, false, NULL
);
1133 static const oer_sequence_t EciesP256EncryptedKey_sequence
[] = {
1134 { &hf_ieee1609dot2_v
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_EccP256CurvePoint
},
1135 { &hf_ieee1609dot2_c
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_16
},
1136 { &hf_ieee1609dot2_t
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_16
},
1137 { NULL
, 0, 0, NULL
}
1141 dissect_ieee1609dot2_EciesP256EncryptedKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1142 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1143 ett_ieee1609dot2_EciesP256EncryptedKey
, EciesP256EncryptedKey_sequence
);
1149 static const oer_sequence_t EcencP256EncryptedKey_sequence
[] = {
1150 { &hf_ieee1609dot2_v
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_EccP256CurvePoint
},
1151 { &hf_ieee1609dot2_c
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_16
},
1152 { &hf_ieee1609dot2_t_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_32
},
1153 { NULL
, 0, 0, NULL
}
1157 dissect_ieee1609dot2_EcencP256EncryptedKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1158 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1159 ett_ieee1609dot2_EcencP256EncryptedKey
, EcencP256EncryptedKey_sequence
);
1165 static const value_string ieee1609dot2_BasePublicEncryptionKey_vals
[] = {
1166 { 0, "eciesNistP256" },
1167 { 1, "eciesBrainpoolP256r1" },
1172 static const oer_choice_t BasePublicEncryptionKey_choice
[] = {
1173 { 0, &hf_ieee1609dot2_eciesNistP256
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP256CurvePoint
},
1174 { 1, &hf_ieee1609dot2_eciesBrainpoolP256r1
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP256CurvePoint
},
1175 { 2, &hf_ieee1609dot2_ecencSm2
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP256CurvePoint
},
1176 { 0, NULL
, 0, NULL
}
1180 dissect_ieee1609dot2_BasePublicEncryptionKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1181 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1182 ett_ieee1609dot2_BasePublicEncryptionKey
, BasePublicEncryptionKey_choice
,
1189 static const oer_sequence_t PublicEncryptionKey_sequence
[] = {
1190 { &hf_ieee1609dot2_supportedSymmAlg
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SymmAlgorithm
},
1191 { &hf_ieee1609dot2_publicKey
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_BasePublicEncryptionKey
},
1192 { NULL
, 0, 0, NULL
}
1196 dissect_ieee1609dot2_PublicEncryptionKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1197 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1198 ett_ieee1609dot2_PublicEncryptionKey
, PublicEncryptionKey_sequence
);
1204 static const value_string ieee1609dot2_SymmetricEncryptionKey_vals
[] = {
1210 static const oer_choice_t SymmetricEncryptionKey_choice
[] = {
1211 { 0, &hf_ieee1609dot2_aes128Ccm
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_OCTET_STRING_SIZE_16
},
1212 { 1, &hf_ieee1609dot2_sm4Ccm
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_OCTET_STRING_SIZE_16
},
1213 { 0, NULL
, 0, NULL
}
1217 dissect_ieee1609dot2_SymmetricEncryptionKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1218 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1219 ett_ieee1609dot2_SymmetricEncryptionKey
, SymmetricEncryptionKey_choice
,
1226 static const value_string ieee1609dot2_EncryptionKey_vals
[] = {
1232 static const oer_choice_t EncryptionKey_choice
[] = {
1233 { 0, &hf_ieee1609dot2_public
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_PublicEncryptionKey
},
1234 { 1, &hf_ieee1609dot2_symmetric
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_SymmetricEncryptionKey
},
1235 { 0, NULL
, 0, NULL
}
1239 dissect_ieee1609dot2_EncryptionKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1240 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1241 ett_ieee1609dot2_EncryptionKey
, EncryptionKey_choice
,
1248 static const value_string ieee1609dot2_PublicVerificationKey_vals
[] = {
1249 { 0, "ecdsaNistP256" },
1250 { 1, "ecdsaBrainpoolP256r1" },
1251 { 2, "ecdsaBrainpoolP384r1" },
1252 { 3, "ecdsaNistP384" },
1257 static const oer_choice_t PublicVerificationKey_choice
[] = {
1258 { 0, &hf_ieee1609dot2_ecdsaNistP256
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP256CurvePoint
},
1259 { 1, &hf_ieee1609dot2_ecdsaBrainpoolP256r1
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP256CurvePoint
},
1260 { 2, &hf_ieee1609dot2_ecdsaBrainpoolP384r1
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP384CurvePoint
},
1261 { 3, &hf_ieee1609dot2_ecdsaNistP384
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP384CurvePoint
},
1262 { 4, &hf_ieee1609dot2_ecsigSm2
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP256CurvePoint
},
1263 { 0, NULL
, 0, NULL
}
1267 dissect_ieee1609dot2_PublicVerificationKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1268 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1269 ett_ieee1609dot2_PublicVerificationKey
, PublicVerificationKey_choice
,
1276 const val64_string ieee1609dot2_Psid_vals
[] = {
1277 { psid_system
, "psid-system" },
1278 { psid_electronic_fee_collection
, "psid-electronic-fee-collection" },
1279 { psid_freight_fleet_management
, "psid-freight-fleet-management" },
1280 { psid_public_transport
, "psid-public-transport" },
1281 { psid_traffic_traveller_information
, "psid-traffic-traveller-information" },
1282 { psid_traffic_control
, "psid-traffic-control" },
1283 { psid_parking_management
, "psid-parking-management" },
1284 { psid_geographic_road_database
, "psid-geographic-road-database" },
1285 { psid_medium_range_preinformation
, "psid-medium-range-preinformation" },
1286 { psid_man_machine_interface
, "psid-man-machine-interface" },
1287 { psid_intersystem_interface
, "psid-intersystem-interface" },
1288 { psid_automatic_vehicle_identification
, "psid-automatic-vehicle-identification" },
1289 { psid_emergency_warning
, "psid-emergency-warning" },
1290 { psid_private
, "psid-private" },
1291 { psid_multi_purpose_payment
, "psid-multi-purpose-payment" },
1292 { psid_dsrc_resource_manager
, "psid-dsrc-resource-manager" },
1293 { psid_after_theft_systems
, "psid-after-theft-systems" },
1294 { psid_cruise_assist_highway_system
, "psid-cruise-assist-highway-system" },
1295 { psid_multi_purpose_information_system
, "psid-multi-purpose-information-system" },
1296 { psid_multi_mobile_information_system
, "psid-multi-mobile-information-system" },
1297 { psid_efc_compliance_check_communication_applications
, "psid-efc-compliance-check-communication-applications" },
1298 { psid_efc_localisation_augmentation_communication_applications
, "psid-efc-localisation-augmentation-communication-applications" },
1299 { psid_iso_cen_dsrc_applications_0x16
, "psid-iso-cen-dsrc-applications-0x16" },
1300 { psid_iso_cen_dsrc_applications_0x17
, "psid-iso-cen-dsrc-applications-0x17" },
1301 { psid_iso_cen_dsrc_applications_0x18
, "psid-iso-cen-dsrc-applications-0x18" },
1302 { psid_iso_cen_dsrc_applications_0x19
, "psid-iso-cen-dsrc-applications-0x19" },
1303 { psid_iso_cen_dsrc_applications_0x1a
, "psid-iso-cen-dsrc-applications-0x1a" },
1304 { psid_iso_cen_dsrc_applications_0x1b
, "psid-iso-cen-dsrc-applications-0x1b" },
1305 { psid_iso_cen_dsrc_applications_0x1c
, "psid-iso-cen-dsrc-applications-0x1c" },
1306 { psid_private_use_0x1d
, "psid-private-use-0x1d" },
1307 { psid_private_use_0x1e
, "psid-private-use-0x1e" },
1308 { psid_iso_cen_dsrc_applications_0x1f
, "psid-iso-cen-dsrc-applications-0x1f" },
1309 { psid_vehicle_to_vehicle_safety_and_awarenesss
, "psid-vehicle-to-vehicle-safety-and-awarenesss" },
1310 { psid_limited_sensor_vehicle_to_vehicle_safety_and_awarenesss
, "psid-limited-sensor-vehicle-to-vehicle-safety-and-awarenesss" },
1311 { psid_tracked_vehicle_safety_and_awarenesss
, "psid-tracked-vehicle-safety-and-awarenesss" },
1312 { psid_wave_security_managements
, "psid-wave-security-managements" },
1313 { psid_ca_basic_services
, "psid-ca-basic-services" },
1314 { psid_den_basic_services
, "psid-den-basic-services" },
1315 { psid_misbehavior_reporting_for_common_applications
, "psid-misbehavior-reporting-for-common-applications" },
1316 { psid_vulnerable_road_users_safety_applications
, "psid-vulnerable-road-users-safety-applications" },
1317 { psid_testings
, "psid-testings" },
1318 { psid_differential_gps_corrections_uncompressed
, "psid-differential-gps-corrections-uncompressed" },
1319 { psid_differential_gps_corrections_compressed
, "psid-differential-gps-corrections-compressed" },
1320 { psid_intersection_safety_and_awareness
, "psid-intersection-safety-and-awareness" },
1321 { psid_traveller_information_and_roadside_signage
, "psid-traveller-information-and-roadside-signage" },
1322 { psid_mobile_probe_exchanges
, "psid-mobile-probe-exchanges" },
1323 { psid_emergency_and_erratic_vehicles_present_in_roadway
, "psid-emergency-and-erratic-vehicles-present-in-roadway" },
1324 { psid_remote_management_protocol_execution
, "psid-remote-management-protocol-execution" },
1325 { psid_wave_service_advertisement
, "psid-wave-service-advertisement" },
1326 { psid_peer_to_peer_distribution_of_security_management_information
, "psid-peer-to-peer-distribution-of-security-management-information" },
1327 { psid_traffic_light_manoeuver_service
, "psid-traffic-light-manoeuver-service" },
1328 { psid_road_and_lane_topology_service
, "psid-road-and-lane-topology-service" },
1329 { psid_infrastructure_to_vehicle_information_service
, "psid-infrastructure-to-vehicle-information-service" },
1330 { psid_traffic_light_control_requests_service
, "psid-traffic-light-control-requests-service" },
1331 { psid_geonetworking_management_communications
, "psid-geonetworking-management-communications" },
1332 { psid_certificate_revocation_list_application
, "psid-certificate-revocation-list-application" },
1333 { psid_traffic_light_control_status_service
, "psid-traffic-light-control-status-service" },
1334 { psid_collective_perception_service
, "psid-collective-perception-service" },
1335 { psid_vehicle_initiated_distress_notivication
, "psid-vehicle-initiated-distress-notivication" },
1336 { psid_fast_service_advertisement_protocol
, "psid-fast-service-advertisement-protocol" },
1337 { psid_its_station_internal_management_communications_protocol
, "psid-its-station-internal-management-communications-protocol" },
1338 { psid_veniam_delay_tolerant_networking
, "psid-veniam-delay-tolerant-networking" },
1339 { psid_transcore_software_update
, "psid-transcore-software-update" },
1340 { psid_sra_private_applications_0x204084
, "psid-sra-private-applications-0x204084" },
1341 { psid_sra_private_applications_0x204085
, "psid-sra-private-applications-0x204085" },
1342 { psid_sra_private_applications_0x204086
, "psid-sra-private-applications-0x204086" },
1343 { psid_sra_private_applications_0x204087
, "psid-sra-private-applications-0x204087" },
1344 { psid_ipv6_routing
, "psid-ipv6-routing" },
1350 dissect_ieee1609dot2_Psid(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1351 offset
= dissect_oer_constrained_integer_64b_no_ub(tvb
, offset
, actx
, tree
, hf_index
,
1352 0U, NO_BOUND
, NULL
, false);
1360 dissect_ieee1609dot2_T_psPsid(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1361 offset
= dissect_oer_constrained_integer_64b_no_ub(tvb
, offset
, actx
, tree
, hf_index
,
1362 0U, NO_BOUND
, &((ieee1609_private_data_t
*)actx
->private_data
)->psidssp
, false);
1371 dissect_ieee1609dot2_T_opaque(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1373 ieee1609_private_data_t
*my_private_data
= (ieee1609_private_data_t
*)actx
->private_data
;
1375 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1376 0, NO_BOUND
, false, &ssp
);
1379 proto_tree
*subtree
= proto_item_add_subtree(actx
->created_item
, ett_ieee1609dot2_ssp
);
1380 /* Call next dissector here */
1381 dissector_try_uint(ssp_subdissector_table
, (uint32_t) my_private_data
->psidssp
, ssp
, actx
->pinfo
, subtree
);
1390 dissect_ieee1609dot2_BitmapSsp(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1391 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1392 0, 31, false, NULL
);
1398 static const value_string ieee1609dot2_ServiceSpecificPermissions_vals
[] = {
1404 static const oer_choice_t ServiceSpecificPermissions_choice
[] = {
1405 { 0, &hf_ieee1609dot2_opaque
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_T_opaque
},
1406 { 1, &hf_ieee1609dot2_bitmapSsp
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_BitmapSsp
},
1407 { 0, NULL
, 0, NULL
}
1411 dissect_ieee1609dot2_ServiceSpecificPermissions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1412 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1413 ett_ieee1609dot2_ServiceSpecificPermissions
, ServiceSpecificPermissions_choice
,
1420 static const oer_sequence_t PsidSsp_sequence
[] = {
1421 { &hf_ieee1609dot2_psPsid
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_T_psPsid
},
1422 { &hf_ieee1609dot2_ssp
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_ServiceSpecificPermissions
},
1423 { NULL
, 0, 0, NULL
}
1427 dissect_ieee1609dot2_PsidSsp(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1428 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1429 ett_ieee1609dot2_PsidSsp
, PsidSsp_sequence
);
1435 static const oer_sequence_t SequenceOfPsidSsp_sequence_of
[1] = {
1436 { &hf_ieee1609dot2_SequenceOfPsidSsp_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_PsidSsp
},
1440 dissect_ieee1609dot2_SequenceOfPsidSsp(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1441 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1442 ett_ieee1609dot2_SequenceOfPsidSsp
, SequenceOfPsidSsp_sequence_of
);
1450 dissect_ieee1609dot2_OCTET_STRING_SIZE_0_MAX(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1451 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1452 0, NO_BOUND
, false, NULL
);
1458 static const oer_sequence_t SequenceOfOctetString_sequence_of
[1] = {
1459 { &hf_ieee1609dot2_SequenceOfOctetString_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_0_MAX
},
1463 dissect_ieee1609dot2_SequenceOfOctetString(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1464 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1465 ett_ieee1609dot2_SequenceOfOctetString
, SequenceOfOctetString_sequence_of
,
1466 0, NO_BOUND
, false);
1474 dissect_ieee1609dot2_OCTET_STRING_SIZE_1_32(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1475 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1476 1, 32, false, NULL
);
1482 static const oer_sequence_t BitmapSspRange_sequence
[] = {
1483 { &hf_ieee1609dot2_sspValue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_1_32
},
1484 { &hf_ieee1609dot2_sspBitmask
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_1_32
},
1485 { NULL
, 0, 0, NULL
}
1489 dissect_ieee1609dot2_BitmapSspRange(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1490 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1491 ett_ieee1609dot2_BitmapSspRange
, BitmapSspRange_sequence
);
1497 static const value_string ieee1609dot2_SspRange_vals
[] = {
1500 { 2, "bitmapSspRange" },
1504 static const oer_choice_t SspRange_choice
[] = {
1505 { 0, &hf_ieee1609dot2_srRange
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_SequenceOfOctetString
},
1506 { 1, &hf_ieee1609dot2_all
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_NULL
},
1507 { 2, &hf_ieee1609dot2_bitmapSspRange
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_BitmapSspRange
},
1508 { 0, NULL
, 0, NULL
}
1512 dissect_ieee1609dot2_SspRange(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1513 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
1514 ett_ieee1609dot2_SspRange
, SspRange_choice
,
1521 static const oer_sequence_t PsidSspRange_sequence
[] = {
1522 { &hf_ieee1609dot2_psid
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Psid
},
1523 { &hf_ieee1609dot2_sspRange
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SspRange
},
1524 { NULL
, 0, 0, NULL
}
1528 dissect_ieee1609dot2_PsidSspRange(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1529 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1530 ett_ieee1609dot2_PsidSspRange
, PsidSspRange_sequence
);
1536 static const oer_sequence_t SequenceOfPsidSspRange_sequence_of
[1] = {
1537 { &hf_ieee1609dot2_SequenceOfPsidSspRange_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_PsidSspRange
},
1541 dissect_ieee1609dot2_SequenceOfPsidSspRange(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1542 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1543 ett_ieee1609dot2_SequenceOfPsidSspRange
, SequenceOfPsidSspRange_sequence_of
);
1551 dissect_ieee1609dot2_SubjectAssurance(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1552 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1561 dissect_ieee1609dot2_CrlSeries(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1562 offset
= dissect_ieee1609dot2_Uint16(tvb
, offset
, actx
, tree
, hf_index
);
1570 dissect_ieee1609dot2_IValue(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1571 offset
= dissect_ieee1609dot2_Uint16(tvb
, offset
, actx
, tree
, hf_index
);
1579 dissect_ieee1609dot2_Hostname(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1580 offset
= dissect_oer_UTF8String(tvb
, offset
, actx
, tree
, hf_index
,
1589 dissect_ieee1609dot2_LinkageValue(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1590 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1599 dissect_ieee1609dot2_OCTET_STRING_SIZE_4(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1600 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1609 dissect_ieee1609dot2_OCTET_STRING_SIZE_9(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1610 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1617 static const oer_sequence_t GroupLinkageValue_sequence
[] = {
1618 { &hf_ieee1609dot2_jValue
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_4
},
1619 { &hf_ieee1609dot2_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_9
},
1620 { NULL
, 0, 0, NULL
}
1624 dissect_ieee1609dot2_GroupLinkageValue(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1625 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1626 ett_ieee1609dot2_GroupLinkageValue
, GroupLinkageValue_sequence
);
1634 dissect_ieee1609dot2_LaId(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1635 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1644 dissect_ieee1609dot2_LinkageSeed(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1645 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1646 16, 16, false, NULL
);
1652 static const oer_sequence_t SequenceOfLinkageSeed_sequence_of
[1] = {
1653 { &hf_ieee1609dot2_SequenceOfLinkageSeed_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LinkageSeed
},
1657 dissect_ieee1609dot2_SequenceOfLinkageSeed(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1658 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1659 ett_ieee1609dot2_SequenceOfLinkageSeed
, SequenceOfLinkageSeed_sequence_of
);
1665 static const value_string ieee1609dot2_ExtId_vals
[] = {
1666 { 1, "certExtId-OperatingOrganization" },
1672 dissect_ieee1609dot2_ExtId(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1673 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1674 0U, 255U, NULL
, false);
1682 dissect_ieee1609dot2_Uint8_1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1683 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1684 1U, 1U, NULL
, false);
1690 static const oer_sequence_t CrlPriorityInfo_sequence
[] = {
1691 { &hf_ieee1609dot2_priority
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_Uint8
},
1692 { NULL
, 0, 0, NULL
}
1696 dissect_ieee1609dot2_CrlPriorityInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1697 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1698 ett_ieee1609dot2_CrlPriorityInfo
, CrlPriorityInfo_sequence
);
1704 static const oer_sequence_t HashBasedRevocationInfo_sequence
[] = {
1705 { &hf_ieee1609dot2_hashedId
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashedId10
},
1706 { &hf_ieee1609dot2_expiry
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Time32
},
1707 { NULL
, 0, 0, NULL
}
1711 dissect_ieee1609dot2_HashBasedRevocationInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1712 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1713 ett_ieee1609dot2_HashBasedRevocationInfo
, HashBasedRevocationInfo_sequence
);
1719 static const oer_sequence_t SequenceOfHashBasedRevocationInfo_sequence_of
[1] = {
1720 { &hf_ieee1609dot2_SequenceOfHashBasedRevocationInfo_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashBasedRevocationInfo
},
1724 dissect_ieee1609dot2_SequenceOfHashBasedRevocationInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1725 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1726 ett_ieee1609dot2_SequenceOfHashBasedRevocationInfo
, SequenceOfHashBasedRevocationInfo_sequence_of
);
1732 static const oer_sequence_t ToBeSignedHashIdCrl_sequence
[] = {
1733 { &hf_ieee1609dot2_crlSerial
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint32
},
1734 { &hf_ieee1609dot2_entries
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfHashBasedRevocationInfo
},
1735 { NULL
, 0, 0, NULL
}
1739 dissect_ieee1609dot2_ToBeSignedHashIdCrl(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1740 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1741 ett_ieee1609dot2_ToBeSignedHashIdCrl
, ToBeSignedHashIdCrl_sequence
);
1747 static const oer_sequence_t IndividualRevocation_sequence
[] = {
1748 { &hf_ieee1609dot2_linkageSeed1
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LinkageSeed
},
1749 { &hf_ieee1609dot2_linkageSeed2
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LinkageSeed
},
1750 { NULL
, 0, 0, NULL
}
1754 dissect_ieee1609dot2_IndividualRevocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1755 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1756 ett_ieee1609dot2_IndividualRevocation
, IndividualRevocation_sequence
);
1762 static const oer_sequence_t SequenceOfIndividualRevocation_sequence_of
[1] = {
1763 { &hf_ieee1609dot2_SequenceOfIndividualRevocation_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_IndividualRevocation
},
1767 dissect_ieee1609dot2_SequenceOfIndividualRevocation(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1768 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1769 ett_ieee1609dot2_SequenceOfIndividualRevocation
, SequenceOfIndividualRevocation_sequence_of
,
1770 0, NO_BOUND
, false);
1776 static const oer_sequence_t IMaxGroup_sequence
[] = {
1777 { &hf_ieee1609dot2_iMax
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint16
},
1778 { &hf_ieee1609dot2_contents_02
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfIndividualRevocation
},
1779 { &hf_ieee1609dot2_singleSeed
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfLinkageSeed
},
1780 { NULL
, 0, 0, NULL
}
1784 dissect_ieee1609dot2_IMaxGroup(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1785 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1786 ett_ieee1609dot2_IMaxGroup
, IMaxGroup_sequence
);
1792 static const oer_sequence_t SequenceOfIMaxGroup_sequence_of
[1] = {
1793 { &hf_ieee1609dot2_SequenceOfIMaxGroup_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_IMaxGroup
},
1797 dissect_ieee1609dot2_SequenceOfIMaxGroup(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1798 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1799 ett_ieee1609dot2_SequenceOfIMaxGroup
, SequenceOfIMaxGroup_sequence_of
);
1805 static const oer_sequence_t LAGroup_sequence
[] = {
1806 { &hf_ieee1609dot2_la1Id
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LaId
},
1807 { &hf_ieee1609dot2_la2Id
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LaId
},
1808 { &hf_ieee1609dot2_contents_01
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfIMaxGroup
},
1809 { NULL
, 0, 0, NULL
}
1813 dissect_ieee1609dot2_LAGroup(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1814 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1815 ett_ieee1609dot2_LAGroup
, LAGroup_sequence
);
1821 static const oer_sequence_t SequenceOfLAGroup_sequence_of
[1] = {
1822 { &hf_ieee1609dot2_SequenceOfLAGroup_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LAGroup
},
1826 dissect_ieee1609dot2_SequenceOfLAGroup(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1827 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1828 ett_ieee1609dot2_SequenceOfLAGroup
, SequenceOfLAGroup_sequence_of
);
1834 static const oer_sequence_t JMaxGroup_sequence
[] = {
1835 { &hf_ieee1609dot2_jmax
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8
},
1836 { &hf_ieee1609dot2_contents
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfLAGroup
},
1837 { NULL
, 0, 0, NULL
}
1841 dissect_ieee1609dot2_JMaxGroup(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1842 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1843 ett_ieee1609dot2_JMaxGroup
, JMaxGroup_sequence
);
1849 static const oer_sequence_t SequenceOfJMaxGroup_sequence_of
[1] = {
1850 { &hf_ieee1609dot2_SequenceOfJMaxGroup_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_JMaxGroup
},
1854 dissect_ieee1609dot2_SequenceOfJMaxGroup(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1855 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1856 ett_ieee1609dot2_SequenceOfJMaxGroup
, SequenceOfJMaxGroup_sequence_of
);
1862 static const oer_sequence_t GroupCrlEntry_sequence
[] = {
1863 { &hf_ieee1609dot2_iMax
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint16
},
1864 { &hf_ieee1609dot2_la1Id
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LaId
},
1865 { &hf_ieee1609dot2_linkageSeed1
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LinkageSeed
},
1866 { &hf_ieee1609dot2_la2Id
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LaId
},
1867 { &hf_ieee1609dot2_linkageSeed2
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LinkageSeed
},
1868 { NULL
, 0, 0, NULL
}
1872 dissect_ieee1609dot2_GroupCrlEntry(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1873 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1874 ett_ieee1609dot2_GroupCrlEntry
, GroupCrlEntry_sequence
);
1880 static const oer_sequence_t SequenceOfGroupCrlEntry_sequence_of
[1] = {
1881 { &hf_ieee1609dot2_SequenceOfGroupCrlEntry_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_GroupCrlEntry
},
1885 dissect_ieee1609dot2_SequenceOfGroupCrlEntry(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1886 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1887 ett_ieee1609dot2_SequenceOfGroupCrlEntry
, SequenceOfGroupCrlEntry_sequence_of
);
1893 static const oer_sequence_t GroupSingleSeedCrlEntry_sequence
[] = {
1894 { &hf_ieee1609dot2_iMax
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint16
},
1895 { &hf_ieee1609dot2_laId
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LaId
},
1896 { &hf_ieee1609dot2_linkageSeed
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LinkageSeed
},
1897 { NULL
, 0, 0, NULL
}
1901 dissect_ieee1609dot2_GroupSingleSeedCrlEntry(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1902 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1903 ett_ieee1609dot2_GroupSingleSeedCrlEntry
, GroupSingleSeedCrlEntry_sequence
);
1909 static const oer_sequence_t SequenceOfGroupSingleSeedCrlEntry_sequence_of
[1] = {
1910 { &hf_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_GroupSingleSeedCrlEntry
},
1914 dissect_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1915 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1916 ett_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry
, SequenceOfGroupSingleSeedCrlEntry_sequence_of
);
1922 static const oer_sequence_t ToBeSignedLinkageValueCrl_sequence
[] = {
1923 { &hf_ieee1609dot2_iRev
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_IValue
},
1924 { &hf_ieee1609dot2_indexWithinI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8
},
1925 { &hf_ieee1609dot2_individual
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfJMaxGroup
},
1926 { &hf_ieee1609dot2_groups
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfGroupCrlEntry
},
1927 { &hf_ieee1609dot2_groupsSingleSeed
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry
},
1928 { NULL
, 0, 0, NULL
}
1932 dissect_ieee1609dot2_ToBeSignedLinkageValueCrl(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1933 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1934 ett_ieee1609dot2_ToBeSignedLinkageValueCrl
, ToBeSignedLinkageValueCrl_sequence
);
1942 dissect_ieee1609dot2_SeedEvolutionFunctionIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1943 offset
= dissect_oer_null(tvb
, offset
, actx
, tree
, hf_index
);
1951 dissect_ieee1609dot2_LvGenerationFunctionIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1952 offset
= dissect_oer_null(tvb
, offset
, actx
, tree
, hf_index
);
1958 static const oer_sequence_t ToBeSignedLinkageValueCrlWithAlgIdentifier_sequence
[] = {
1959 { &hf_ieee1609dot2_iRev
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_IValue
},
1960 { &hf_ieee1609dot2_indexWithinI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8
},
1961 { &hf_ieee1609dot2_seedEvolution
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SeedEvolutionFunctionIdentifier
},
1962 { &hf_ieee1609dot2_lvGeneration
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LvGenerationFunctionIdentifier
},
1963 { &hf_ieee1609dot2_individual
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfJMaxGroup
},
1964 { &hf_ieee1609dot2_groups
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfGroupCrlEntry
},
1965 { &hf_ieee1609dot2_groupsSingleSeed
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry
},
1966 { NULL
, 0, 0, NULL
}
1970 dissect_ieee1609dot2_ToBeSignedLinkageValueCrlWithAlgIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1971 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1972 ett_ieee1609dot2_ToBeSignedLinkageValueCrlWithAlgIdentifier
, ToBeSignedLinkageValueCrlWithAlgIdentifier_sequence
);
1978 static const value_string ieee1609dot2_TypeSpecificCrlContents_vals
[] = {
1979 { 0, "fullHashCrl" },
1980 { 1, "deltaHashCrl" },
1981 { 2, "fullLinkedCrl" },
1982 { 3, "deltaLinkedCrl" },
1983 { 4, "fullLinkedCrlWithAlg" },
1984 { 5, "deltaLinkedCrlWithAlg" },
1988 static const oer_choice_t TypeSpecificCrlContents_choice
[] = {
1989 { 0, &hf_ieee1609dot2_fullHashCrl
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_ToBeSignedHashIdCrl
},
1990 { 1, &hf_ieee1609dot2_deltaHashCrl
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_ToBeSignedHashIdCrl
},
1991 { 2, &hf_ieee1609dot2_fullLinkedCrl
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_ToBeSignedLinkageValueCrl
},
1992 { 3, &hf_ieee1609dot2_deltaLinkedCrl
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_ToBeSignedLinkageValueCrl
},
1993 { 4, &hf_ieee1609dot2_fullLinkedCrlWithAlg
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_ToBeSignedLinkageValueCrlWithAlgIdentifier
},
1994 { 5, &hf_ieee1609dot2_deltaLinkedCrlWithAlg
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_ToBeSignedLinkageValueCrlWithAlgIdentifier
},
1995 { 0, NULL
, 0, NULL
}
1999 dissect_ieee1609dot2_TypeSpecificCrlContents(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2000 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2001 ett_ieee1609dot2_TypeSpecificCrlContents
, TypeSpecificCrlContents_choice
,
2008 static const oer_sequence_t CrlContents_sequence
[] = {
2009 { &hf_ieee1609dot2_version
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8_1
},
2010 { &hf_ieee1609dot2_crlSeries
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CrlSeries
},
2011 { &hf_ieee1609dot2_crlCraca
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashedId8
},
2012 { &hf_ieee1609dot2_issueDate
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Time32
},
2013 { &hf_ieee1609dot2_nextCrl
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Time32
},
2014 { &hf_ieee1609dot2_priorityInfo
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CrlPriorityInfo
},
2015 { &hf_ieee1609dot2_typeSpecific
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_TypeSpecificCrlContents
},
2016 { NULL
, 0, 0, NULL
}
2020 dissect_ieee1609dot2_CrlContents(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2021 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2022 ett_ieee1609dot2_CrlContents
, CrlContents_sequence
);
2028 static const value_string ieee1609dot2_Ieee1609Dot2CrlContent_vals
[] = {
2029 { 0, "unsecuredData" },
2033 static const oer_choice_t Ieee1609Dot2CrlContent_choice
[] = {
2034 { 0, &hf_ieee1609dot2_unsecuredData
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_CrlContents
},
2035 { 0, NULL
, 0, NULL
}
2039 dissect_ieee1609dot2_Ieee1609Dot2CrlContent(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2040 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2041 ett_ieee1609dot2_Ieee1609Dot2CrlContent
, Ieee1609Dot2CrlContent_choice
,
2048 static const oer_sequence_t Ieee1609Dot2CrlData_sequence
[] = {
2049 { &hf_ieee1609dot2_content_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Ieee1609Dot2CrlContent
},
2050 { NULL
, 0, 0, NULL
}
2054 dissect_ieee1609dot2_Ieee1609Dot2CrlData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2055 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2056 ett_ieee1609dot2_Ieee1609Dot2CrlData
, Ieee1609Dot2CrlData_sequence
);
2062 static const oer_sequence_t CrlSignedDataPayload_sequence
[] = {
2063 { &hf_ieee1609dot2_data
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_Ieee1609Dot2CrlData
},
2064 { NULL
, 0, 0, NULL
}
2068 dissect_ieee1609dot2_CrlSignedDataPayload(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2069 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2070 ett_ieee1609dot2_CrlSignedDataPayload
, CrlSignedDataPayload_sequence
);
2078 dissect_ieee1609dot2_T_hiPsid(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2080 ieee1609_private_data_t
*my_private_data
= (ieee1609_private_data_t
*)actx
->private_data
;
2082 offset
= dissect_oer_constrained_integer_64b_no_ub(tvb
, offset
, actx
, tree
, hf_index
,
2083 0U, NO_BOUND
, &psid
, false);
2084 if ((my_private_data
!= NULL
) && (my_private_data
->unsecured_data
!= NULL
)) {
2085 /* Call next dissector here */
2086 ieee1609dot2_set_next_default_psid(actx
->pinfo
, (uint32_t)psid
);
2087 dissector_try_uint(unsecured_data_subdissector_table
, (uint32_t) psid
, my_private_data
->unsecured_data
, actx
->pinfo
, tree
);
2088 my_private_data
->unsecured_data
= NULL
;
2096 static const oer_sequence_t MissingCrlIdentifier_sequence
[] = {
2097 { &hf_ieee1609dot2_cracaId
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashedId3
},
2098 { &hf_ieee1609dot2_crlSeries
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CrlSeries
},
2099 { NULL
, 0, 0, NULL
}
2103 dissect_ieee1609dot2_MissingCrlIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2104 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2105 ett_ieee1609dot2_MissingCrlIdentifier
, MissingCrlIdentifier_sequence
);
2113 dissect_ieee1609dot2_Uint8_3(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2114 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2115 3U, 3U, NULL
, false);
2121 static const value_string ieee1609dot2_CertificateType_vals
[] = {
2129 dissect_ieee1609dot2_CertificateType(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2130 offset
= dissect_oer_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
2131 2, NULL
, true, 0, NULL
);
2137 static const value_string ieee1609dot2_IssuerIdentifier_vals
[] = {
2138 { 0, "sha256AndDigest" },
2140 { 2, "sha384AndDigest" },
2141 { 3, "sm3AndDigest" },
2145 static const oer_choice_t IssuerIdentifier_choice
[] = {
2146 { 0, &hf_ieee1609dot2_sha256AndDigest
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_HashedId8
},
2147 { 1, &hf_ieee1609dot2_iiSelf
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_HashAlgorithm
},
2148 { 2, &hf_ieee1609dot2_sha384AndDigest
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_HashedId8
},
2149 { 3, &hf_ieee1609dot2_sm3AndDigest
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_HashedId8
},
2150 { 0, NULL
, 0, NULL
}
2154 dissect_ieee1609dot2_IssuerIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2155 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2156 ett_ieee1609dot2_IssuerIdentifier
, IssuerIdentifier_choice
,
2163 static const oer_sequence_t LinkageData_sequence
[] = {
2164 { &hf_ieee1609dot2_iCert
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_IValue
},
2165 { &hf_ieee1609dot2_linkage_value
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_LinkageValue
},
2166 { &hf_ieee1609dot2_group_linkage_value
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_GroupLinkageValue
},
2167 { NULL
, 0, 0, NULL
}
2171 dissect_ieee1609dot2_LinkageData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2172 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2173 ett_ieee1609dot2_LinkageData
, LinkageData_sequence
);
2181 dissect_ieee1609dot2_OCTET_STRING_SIZE_1_64(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2182 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
2183 1, 64, false, NULL
);
2189 static const value_string ieee1609dot2_CertificateId_vals
[] = {
2190 { 0, "linkageData" },
2197 static const oer_choice_t CertificateId_choice
[] = {
2198 { 0, &hf_ieee1609dot2_linkageData
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_LinkageData
},
2199 { 1, &hf_ieee1609dot2_name
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_Hostname
},
2200 { 2, &hf_ieee1609dot2_binaryId
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_OCTET_STRING_SIZE_1_64
},
2201 { 3, &hf_ieee1609dot2_none
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_NULL
},
2202 { 0, NULL
, 0, NULL
}
2206 dissect_ieee1609dot2_CertificateId(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2207 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2208 ett_ieee1609dot2_CertificateId
, CertificateId_choice
,
2215 static const value_string ieee1609dot2_SubjectPermissions_vals
[] = {
2221 static const oer_choice_t SubjectPermissions_choice
[] = {
2222 { 0, &hf_ieee1609dot2_explicit
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_SequenceOfPsidSspRange
},
2223 { 1, &hf_ieee1609dot2_all
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_NULL
},
2224 { 0, NULL
, 0, NULL
}
2228 dissect_ieee1609dot2_SubjectPermissions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2229 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2230 ett_ieee1609dot2_SubjectPermissions
, SubjectPermissions_choice
,
2239 dissect_ieee1609dot2_INTEGER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2240 offset
= dissect_oer_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2246 static int * const EndEntityType_bits
[] = {
2247 &hf_ieee1609dot2_EndEntityType_app
,
2248 &hf_ieee1609dot2_EndEntityType_enrol
,
2253 dissect_ieee1609dot2_EndEntityType(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2254 offset
= dissect_oer_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
2255 8, 8, false, EndEntityType_bits
, 2, NULL
, NULL
);
2261 static const oer_sequence_t PsidGroupPermissions_sequence
[] = {
2262 { &hf_ieee1609dot2_subjectPermissions
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SubjectPermissions
},
2263 { &hf_ieee1609dot2_minChainLength
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_INTEGER
},
2264 { &hf_ieee1609dot2_chainLengthRange
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_INTEGER
},
2265 { &hf_ieee1609dot2_eeType
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_EndEntityType
},
2266 { NULL
, 0, 0, NULL
}
2270 dissect_ieee1609dot2_PsidGroupPermissions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2271 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2272 ett_ieee1609dot2_PsidGroupPermissions
, PsidGroupPermissions_sequence
);
2278 static const oer_sequence_t SequenceOfPsidGroupPermissions_sequence_of
[1] = {
2279 { &hf_ieee1609dot2_SequenceOfPsidGroupPermissions_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_PsidGroupPermissions
},
2283 dissect_ieee1609dot2_SequenceOfPsidGroupPermissions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2284 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2285 ett_ieee1609dot2_SequenceOfPsidGroupPermissions
, SequenceOfPsidGroupPermissions_sequence_of
);
2291 static const value_string ieee1609dot2_VerificationKeyIndicator_vals
[] = {
2292 { 0, "verificationKey" },
2293 { 1, "reconstructionValue" },
2297 static const oer_choice_t VerificationKeyIndicator_choice
[] = {
2298 { 0, &hf_ieee1609dot2_verificationKey
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_PublicVerificationKey
},
2299 { 1, &hf_ieee1609dot2_reconstructionValue
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EccP256CurvePoint
},
2300 { 0, NULL
, 0, NULL
}
2304 dissect_ieee1609dot2_VerificationKeyIndicator(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2305 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2306 ett_ieee1609dot2_VerificationKeyIndicator
, VerificationKeyIndicator_choice
,
2313 static int * const T_flags_bits
[] = {
2314 &hf_ieee1609dot2_T_flags_usesCubk
,
2319 dissect_ieee1609dot2_T_flags(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2320 offset
= dissect_oer_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
2321 8, 8, false, T_flags_bits
, 1, NULL
, NULL
);
2329 dissect_ieee1609dot2_T_content(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2330 offset
= dissect_oer_open_type(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2336 static const oer_sequence_t AppExtension_sequence
[] = {
2337 { &hf_ieee1609dot2_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_ExtId
},
2338 { &hf_ieee1609dot2_content_03
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_T_content
},
2339 { NULL
, 0, 0, NULL
}
2343 dissect_ieee1609dot2_AppExtension(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2344 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2345 ett_ieee1609dot2_AppExtension
, AppExtension_sequence
);
2351 static const oer_sequence_t SequenceOfAppExtensions_sequence_of
[1] = {
2352 { &hf_ieee1609dot2_SequenceOfAppExtensions_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_AppExtension
},
2356 dissect_ieee1609dot2_SequenceOfAppExtensions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2357 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2358 ett_ieee1609dot2_SequenceOfAppExtensions
, SequenceOfAppExtensions_sequence_of
,
2359 1, NO_BOUND
, false);
2367 dissect_ieee1609dot2_T_specific(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2368 offset
= dissect_oer_open_type(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2374 static const value_string ieee1609dot2_T_permissions_vals
[] = {
2380 static const oer_choice_t T_permissions_choice
[] = {
2381 { 0, &hf_ieee1609dot2_specific
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_T_specific
},
2382 { 1, &hf_ieee1609dot2_all
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_NULL
},
2383 { 0, NULL
, 0, NULL
}
2387 dissect_ieee1609dot2_T_permissions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2388 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2389 ett_ieee1609dot2_T_permissions
, T_permissions_choice
,
2396 static const oer_sequence_t CertIssueExtension_sequence
[] = {
2397 { &hf_ieee1609dot2_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_ExtId
},
2398 { &hf_ieee1609dot2_permissions
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_T_permissions
},
2399 { NULL
, 0, 0, NULL
}
2403 dissect_ieee1609dot2_CertIssueExtension(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2404 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2405 ett_ieee1609dot2_CertIssueExtension
, CertIssueExtension_sequence
);
2411 static const oer_sequence_t SequenceOfCertIssueExtensions_sequence_of
[1] = {
2412 { &hf_ieee1609dot2_SequenceOfCertIssueExtensions_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CertIssueExtension
},
2416 dissect_ieee1609dot2_SequenceOfCertIssueExtensions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2417 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2418 ett_ieee1609dot2_SequenceOfCertIssueExtensions
, SequenceOfCertIssueExtensions_sequence_of
,
2419 1, NO_BOUND
, false);
2427 dissect_ieee1609dot2_T_content_01(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2428 offset
= dissect_oer_open_type(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2434 static const value_string ieee1609dot2_T_permissions_01_vals
[] = {
2440 static const oer_choice_t T_permissions_01_choice
[] = {
2441 { 0, &hf_ieee1609dot2_content_04
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_T_content_01
},
2442 { 1, &hf_ieee1609dot2_all
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_NULL
},
2443 { 0, NULL
, 0, NULL
}
2447 dissect_ieee1609dot2_T_permissions_01(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2448 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2449 ett_ieee1609dot2_T_permissions_01
, T_permissions_01_choice
,
2456 static const oer_sequence_t CertRequestExtension_sequence
[] = {
2457 { &hf_ieee1609dot2_id
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_ExtId
},
2458 { &hf_ieee1609dot2_permissions_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_T_permissions_01
},
2459 { NULL
, 0, 0, NULL
}
2463 dissect_ieee1609dot2_CertRequestExtension(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2464 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2465 ett_ieee1609dot2_CertRequestExtension
, CertRequestExtension_sequence
);
2471 static const oer_sequence_t SequenceOfCertRequestExtensions_sequence_of
[1] = {
2472 { &hf_ieee1609dot2_SequenceOfCertRequestExtensions_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CertRequestExtension
},
2476 dissect_ieee1609dot2_SequenceOfCertRequestExtensions(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2477 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2478 ett_ieee1609dot2_SequenceOfCertRequestExtensions
, SequenceOfCertRequestExtensions_sequence_of
,
2479 1, NO_BOUND
, false);
2485 static const oer_sequence_t ToBeSignedCertificate_sequence
[] = {
2486 { &hf_ieee1609dot2_certificateId
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CertificateId
},
2487 { &hf_ieee1609dot2_cracaId
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashedId3
},
2488 { &hf_ieee1609dot2_crlSeries
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CrlSeries
},
2489 { &hf_ieee1609dot2_validityPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_ValidityPeriod
},
2490 { &hf_ieee1609dot2_region
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_GeographicRegion
},
2491 { &hf_ieee1609dot2_assuranceLevel
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SubjectAssurance
},
2492 { &hf_ieee1609dot2_appPermissions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfPsidSsp
},
2493 { &hf_ieee1609dot2_certIssuePermissions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfPsidGroupPermissions
},
2494 { &hf_ieee1609dot2_certRequestPermissions
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfPsidGroupPermissions
},
2495 { &hf_ieee1609dot2_canRequestRollover
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_NULL
},
2496 { &hf_ieee1609dot2_tbscEncryptionKey
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_PublicEncryptionKey
},
2497 { &hf_ieee1609dot2_verifyKeyIndicator
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_VerificationKeyIndicator
},
2498 { &hf_ieee1609dot2_flags
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_T_flags
},
2499 { &hf_ieee1609dot2_appExtensions
, ASN1_NOT_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfAppExtensions
},
2500 { &hf_ieee1609dot2_certIssueExtensions
, ASN1_NOT_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfCertIssueExtensions
},
2501 { &hf_ieee1609dot2_certRequestExtension
, ASN1_NOT_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfCertRequestExtensions
},
2502 { NULL
, 0, 0, NULL
}
2506 dissect_ieee1609dot2_ToBeSignedCertificate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2507 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2508 ett_ieee1609dot2_ToBeSignedCertificate
, ToBeSignedCertificate_sequence
);
2514 static const oer_sequence_t CertificateBase_sequence
[] = {
2515 { &hf_ieee1609dot2_version_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8_3
},
2516 { &hf_ieee1609dot2_type
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CertificateType
},
2517 { &hf_ieee1609dot2_issuer
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_IssuerIdentifier
},
2518 { &hf_ieee1609dot2_toBeSigned
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_ToBeSignedCertificate
},
2519 { &hf_ieee1609dot2_signature
, ASN1_NO_EXTENSIONS
, ASN1_OPTIONAL
, dissect_ieee1609dot2_Signature
},
2520 { NULL
, 0, 0, NULL
}
2524 dissect_ieee1609dot2_CertificateBase(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2525 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2526 ett_ieee1609dot2_CertificateBase
, CertificateBase_sequence
);
2534 dissect_ieee1609dot2_Certificate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2535 offset
= dissect_ieee1609dot2_CertificateBase(tvb
, offset
, actx
, tree
, hf_index
);
2541 static const value_string ieee1609dot2_PduFunctionalType_vals
[] = {
2542 { 1, "tlsHandshake" },
2543 { 2, "iso21177ExtendedAuth" },
2544 { 3, "iso21177SessionExtension" },
2550 dissect_ieee1609dot2_PduFunctionalType(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2551 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2552 0U, 255U, NULL
, false);
2558 static const value_string ieee1609dot2_HeaderInfoContributorId_vals
[] = {
2559 { 1, "ieee1609HeaderInfoContributorId" },
2560 { 2, "etsiHeaderInfoContributorId" },
2566 dissect_ieee1609dot2_HeaderInfoContributorId(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2567 offset
= dissect_oer_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
2568 0U, 255U, NULL
, false);
2576 dissect_ieee1609dot2_T_extns_item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2577 offset
= dissect_oer_open_type(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2583 static const oer_sequence_t T_extns_sequence_of
[1] = {
2584 { &hf_ieee1609dot2_extns_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_T_extns_item
},
2588 dissect_ieee1609dot2_T_extns(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2589 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2590 ett_ieee1609dot2_T_extns
, T_extns_sequence_of
,
2591 1, NO_BOUND
, false);
2597 static const oer_sequence_t ContributedExtensionBlock_sequence
[] = {
2598 { &hf_ieee1609dot2_contributorId
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HeaderInfoContributorId
},
2599 { &hf_ieee1609dot2_extns
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_T_extns
},
2600 { NULL
, 0, 0, NULL
}
2604 dissect_ieee1609dot2_ContributedExtensionBlock(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2605 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2606 ett_ieee1609dot2_ContributedExtensionBlock
, ContributedExtensionBlock_sequence
);
2612 static const oer_sequence_t ContributedExtensionBlocks_sequence_of
[1] = {
2613 { &hf_ieee1609dot2_ContributedExtensionBlocks_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_ContributedExtensionBlock
},
2617 dissect_ieee1609dot2_ContributedExtensionBlocks(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2618 offset
= dissect_oer_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2619 ett_ieee1609dot2_ContributedExtensionBlocks
, ContributedExtensionBlocks_sequence_of
,
2620 1, NO_BOUND
, false);
2626 static const oer_sequence_t HeaderInfo_sequence
[] = {
2627 { &hf_ieee1609dot2_hiPsid
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_T_hiPsid
},
2628 { &hf_ieee1609dot2_generationTime
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_Time64
},
2629 { &hf_ieee1609dot2_expiryTime
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_Time64
},
2630 { &hf_ieee1609dot2_generationLocation
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_ThreeDLocation
},
2631 { &hf_ieee1609dot2_p2pcdLearningRequest
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_HashedId3
},
2632 { &hf_ieee1609dot2_missingCrlIdentifier
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_MissingCrlIdentifier
},
2633 { &hf_ieee1609dot2_encryptionKey
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_EncryptionKey
},
2634 { &hf_ieee1609dot2_inlineP2pcdRequest
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_SequenceOfHashedId3
},
2635 { &hf_ieee1609dot2_requestedCertificate
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_Certificate
},
2636 { &hf_ieee1609dot2_pduFunctionalType
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_PduFunctionalType
},
2637 { &hf_ieee1609dot2_contributedExtensions
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_ContributedExtensionBlocks
},
2638 { NULL
, 0, 0, NULL
}
2642 dissect_ieee1609dot2_HeaderInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2643 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2644 ett_ieee1609dot2_HeaderInfo
, HeaderInfo_sequence
);
2650 static const oer_sequence_t CrlToBeSignedData_sequence
[] = {
2651 { &hf_ieee1609dot2_payload
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CrlSignedDataPayload
},
2652 { &hf_ieee1609dot2_headerInfo
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HeaderInfo
},
2653 { NULL
, 0, 0, NULL
}
2657 dissect_ieee1609dot2_CrlToBeSignedData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2658 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2659 ett_ieee1609dot2_CrlToBeSignedData
, CrlToBeSignedData_sequence
);
2665 static const oer_sequence_t CrlSignedData_sequence
[] = {
2666 { &hf_ieee1609dot2_tbsData
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_CrlToBeSignedData
},
2667 { NULL
, 0, 0, NULL
}
2671 dissect_ieee1609dot2_CrlSignedData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2672 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2673 ett_ieee1609dot2_CrlSignedData
, CrlSignedData_sequence
);
2679 static const value_string ieee1609dot2_SecuredCrlContent_vals
[] = {
2680 { 0, "signedData" },
2684 static const oer_choice_t SecuredCrlContent_choice
[] = {
2685 { 0, &hf_ieee1609dot2_signedData
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_CrlSignedData
},
2686 { 0, NULL
, 0, NULL
}
2690 dissect_ieee1609dot2_SecuredCrlContent(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2691 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2692 ett_ieee1609dot2_SecuredCrlContent
, SecuredCrlContent_choice
,
2699 static const oer_sequence_t SecuredCrl_sequence
[] = {
2700 { &hf_ieee1609dot2_content
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SecuredCrlContent
},
2701 { NULL
, 0, 0, NULL
}
2705 dissect_ieee1609dot2_SecuredCrl(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2706 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2707 ett_ieee1609dot2_SecuredCrl
, SecuredCrl_sequence
);
2715 dissect_ieee1609dot2_T_unsecuredData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2716 ieee1609_private_data_t
*my_private_data
= (ieee1609_private_data_t
*)actx
->private_data
;
2718 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
2719 NO_BOUND
, NO_BOUND
, false, &my_private_data
->unsecured_data
);
2721 if (my_private_data
->unsecured_data
) {
2722 // psid may also be provided in HeaderInfo
2723 uint32_t psid
= GPOINTER_TO_UINT(p_get_proto_data(wmem_file_scope(), actx
->pinfo
, proto_ieee1609dot2
, 0));
2725 /* Call next dissector here */
2726 dissector_try_uint(unsecured_data_subdissector_table
, psid
, my_private_data
->unsecured_data
, actx
->pinfo
, tree
);
2727 my_private_data
->unsecured_data
= NULL
;
2729 // else: wait for the HeaderInfo for a second chance to dissect the content
2737 static const value_string ieee1609dot2_HashedData_vals
[] = {
2738 { 0, "sha256HashedData" },
2739 { 1, "sha384HashedData" },
2740 { 2, "sm3HashedData" },
2744 static const oer_choice_t HashedData_choice
[] = {
2745 { 0, &hf_ieee1609dot2_sha256HashedData
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_HashedId32
},
2746 { 1, &hf_ieee1609dot2_sha384HashedData
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_HashedId48
},
2747 { 2, &hf_ieee1609dot2_sm3HashedData
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_HashedId32
},
2748 { 0, NULL
, 0, NULL
}
2752 dissect_ieee1609dot2_HashedData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2753 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2754 ett_ieee1609dot2_HashedData
, HashedData_choice
,
2761 static const oer_sequence_t SignedDataPayload_sequence
[] = {
2762 { &hf_ieee1609dot2_data_01
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_Ieee1609Dot2Data
},
2763 { &hf_ieee1609dot2_extDataHash
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_HashedData
},
2764 { &hf_ieee1609dot2_omitted
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_ieee1609dot2_NULL
},
2765 { NULL
, 0, 0, NULL
}
2769 dissect_ieee1609dot2_SignedDataPayload(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2770 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2771 ett_ieee1609dot2_SignedDataPayload
, SignedDataPayload_sequence
);
2777 static const oer_sequence_t ToBeSignedData_sequence
[] = {
2778 { &hf_ieee1609dot2_payload_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SignedDataPayload
},
2779 { &hf_ieee1609dot2_headerInfo
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HeaderInfo
},
2780 { NULL
, 0, 0, NULL
}
2784 dissect_ieee1609dot2_ToBeSignedData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2785 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2786 ett_ieee1609dot2_ToBeSignedData
, ToBeSignedData_sequence
);
2792 static const oer_sequence_t SequenceOfCertificate_sequence_of
[1] = {
2793 { &hf_ieee1609dot2_SequenceOfCertificate_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Certificate
},
2797 dissect_ieee1609dot2_SequenceOfCertificate(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2798 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2799 ett_ieee1609dot2_SequenceOfCertificate
, SequenceOfCertificate_sequence_of
);
2805 static const value_string ieee1609dot2_SignerIdentifier_vals
[] = {
2807 { 1, "certificate" },
2812 static const oer_choice_t SignerIdentifier_choice
[] = {
2813 { 0, &hf_ieee1609dot2_digest
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_HashedId8
},
2814 { 1, &hf_ieee1609dot2_certificate
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_SequenceOfCertificate
},
2815 { 2, &hf_ieee1609dot2_siSelf
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_NULL
},
2816 { 0, NULL
, 0, NULL
}
2820 dissect_ieee1609dot2_SignerIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2821 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2822 ett_ieee1609dot2_SignerIdentifier
, SignerIdentifier_choice
,
2829 static const oer_sequence_t SignedData_sequence
[] = {
2830 { &hf_ieee1609dot2_hashId
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashAlgorithm
},
2831 { &hf_ieee1609dot2_tbsData_01
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_ToBeSignedData
},
2832 { &hf_ieee1609dot2_signer
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SignerIdentifier
},
2833 { &hf_ieee1609dot2_signature
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Signature
},
2834 { NULL
, 0, 0, NULL
}
2838 dissect_ieee1609dot2_SignedData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2839 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2840 ett_ieee1609dot2_SignedData
, SignedData_sequence
);
2848 dissect_ieee1609dot2_PreSharedKeyRecipientInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2849 offset
= dissect_ieee1609dot2_HashedId8(tvb
, offset
, actx
, tree
, hf_index
);
2857 dissect_ieee1609dot2_OCTET_STRING_SIZE_12(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2858 offset
= dissect_oer_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
2859 12, 12, false, NULL
);
2865 static const oer_sequence_t One28BitCcmCiphertext_sequence
[] = {
2866 { &hf_ieee1609dot2_nonce
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_OCTET_STRING_SIZE_12
},
2867 { &hf_ieee1609dot2_ccmCiphertext
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Opaque
},
2868 { NULL
, 0, 0, NULL
}
2872 dissect_ieee1609dot2_One28BitCcmCiphertext(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2873 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2874 ett_ieee1609dot2_One28BitCcmCiphertext
, One28BitCcmCiphertext_sequence
);
2880 static const value_string ieee1609dot2_SymmetricCiphertext_vals
[] = {
2886 static const oer_choice_t SymmetricCiphertext_choice
[] = {
2887 { 0, &hf_ieee1609dot2_aes128ccm
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_One28BitCcmCiphertext
},
2888 { 1, &hf_ieee1609dot2_sm4Ccm_01
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_One28BitCcmCiphertext
},
2889 { 0, NULL
, 0, NULL
}
2893 dissect_ieee1609dot2_SymmetricCiphertext(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2894 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2895 ett_ieee1609dot2_SymmetricCiphertext
, SymmetricCiphertext_choice
,
2902 static const oer_sequence_t SymmRecipientInfo_sequence
[] = {
2903 { &hf_ieee1609dot2_recipientId
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashedId8
},
2904 { &hf_ieee1609dot2_sriEncKey
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SymmetricCiphertext
},
2905 { NULL
, 0, 0, NULL
}
2909 dissect_ieee1609dot2_SymmRecipientInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2910 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2911 ett_ieee1609dot2_SymmRecipientInfo
, SymmRecipientInfo_sequence
);
2917 static const value_string ieee1609dot2_EncryptedDataEncryptionKey_vals
[] = {
2918 { 0, "eciesNistP256" },
2919 { 1, "eciesBrainpoolP256r1" },
2920 { 2, "ecencSm2256" },
2924 static const oer_choice_t EncryptedDataEncryptionKey_choice
[] = {
2925 { 0, &hf_ieee1609dot2_edeEciesNistP256
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EciesP256EncryptedKey
},
2926 { 1, &hf_ieee1609dot2_edekEciesBrainpoolP256r1
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EciesP256EncryptedKey
},
2927 { 2, &hf_ieee1609dot2_ecencSm2256
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_EcencP256EncryptedKey
},
2928 { 0, NULL
, 0, NULL
}
2932 dissect_ieee1609dot2_EncryptedDataEncryptionKey(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2933 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2934 ett_ieee1609dot2_EncryptedDataEncryptionKey
, EncryptedDataEncryptionKey_choice
,
2941 static const oer_sequence_t PKRecipientInfo_sequence
[] = {
2942 { &hf_ieee1609dot2_recipientId
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_HashedId8
},
2943 { &hf_ieee1609dot2_encKey
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_EncryptedDataEncryptionKey
},
2944 { NULL
, 0, 0, NULL
}
2948 dissect_ieee1609dot2_PKRecipientInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2949 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2950 ett_ieee1609dot2_PKRecipientInfo
, PKRecipientInfo_sequence
);
2956 static const value_string ieee1609dot2_RecipientInfo_vals
[] = {
2957 { 0, "pskRecipInfo" },
2958 { 1, "symmRecipInfo" },
2959 { 2, "certRecipInfo" },
2960 { 3, "signedDataRecipInfo" },
2961 { 4, "rekRecipInfo" },
2965 static const oer_choice_t RecipientInfo_choice
[] = {
2966 { 0, &hf_ieee1609dot2_pskRecipInfo
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_PreSharedKeyRecipientInfo
},
2967 { 1, &hf_ieee1609dot2_symmRecipInfo
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_SymmRecipientInfo
},
2968 { 2, &hf_ieee1609dot2_certRecipInfo
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_PKRecipientInfo
},
2969 { 3, &hf_ieee1609dot2_signedDataRecipInfo
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_PKRecipientInfo
},
2970 { 4, &hf_ieee1609dot2_rekRecipInfo
, ASN1_NO_EXTENSIONS
, dissect_ieee1609dot2_PKRecipientInfo
},
2971 { 0, NULL
, 0, NULL
}
2975 dissect_ieee1609dot2_RecipientInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2976 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
2977 ett_ieee1609dot2_RecipientInfo
, RecipientInfo_choice
,
2984 static const oer_sequence_t SequenceOfRecipientInfo_sequence_of
[1] = {
2985 { &hf_ieee1609dot2_SequenceOfRecipientInfo_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_RecipientInfo
},
2989 dissect_ieee1609dot2_SequenceOfRecipientInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2990 offset
= dissect_oer_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2991 ett_ieee1609dot2_SequenceOfRecipientInfo
, SequenceOfRecipientInfo_sequence_of
);
2997 static const oer_sequence_t EncryptedData_sequence
[] = {
2998 { &hf_ieee1609dot2_recipients
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SequenceOfRecipientInfo
},
2999 { &hf_ieee1609dot2_ciphertext
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_SymmetricCiphertext
},
3000 { NULL
, 0, 0, NULL
}
3004 dissect_ieee1609dot2_EncryptedData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3005 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3006 ett_ieee1609dot2_EncryptedData
, EncryptedData_sequence
);
3012 static const value_string ieee1609dot2_Ieee1609Dot2Content_vals
[] = {
3013 { 0, "unsecuredData" },
3014 { 1, "signedData" },
3015 { 2, "encryptedData" },
3016 { 3, "signedCertificateRequest" },
3017 { 4, "signedX509CertificateRequest" },
3021 static const oer_choice_t Ieee1609Dot2Content_choice
[] = {
3022 { 0, &hf_ieee1609dot2_unsecuredData_01
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_T_unsecuredData
},
3023 { 1, &hf_ieee1609dot2_signedData_01
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_SignedData
},
3024 { 2, &hf_ieee1609dot2_encryptedData
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_EncryptedData
},
3025 { 3, &hf_ieee1609dot2_signedCertificateRequest
, ASN1_EXTENSION_ROOT
, dissect_ieee1609dot2_Opaque
},
3026 { 4, &hf_ieee1609dot2_signedX509CertificateRequest
, ASN1_NOT_EXTENSION_ROOT
, dissect_ieee1609dot2_Opaque
},
3027 { 0, NULL
, 0, NULL
}
3031 dissect_ieee1609dot2_Ieee1609Dot2Content(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3032 offset
= dissect_oer_choice(tvb
, offset
, actx
, tree
, hf_index
,
3033 ett_ieee1609dot2_Ieee1609Dot2Content
, Ieee1609Dot2Content_choice
,
3040 static const oer_sequence_t Ieee1609Dot2Data_sequence
[] = {
3041 { &hf_ieee1609dot2_protocolVersion
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Uint8_3
},
3042 { &hf_ieee1609dot2_content_02
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_ieee1609dot2_Ieee1609Dot2Content
},
3043 { NULL
, 0, 0, NULL
}
3047 dissect_ieee1609dot2_Ieee1609Dot2Data(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
3048 // Ieee1609Dot2Data -> Ieee1609Dot2Content -> SignedData -> ToBeSignedData -> SignedDataPayload -> Ieee1609Dot2Data
3049 actx
->pinfo
->dissection_depth
+= 5;
3050 increment_dissection_depth(actx
->pinfo
);
3051 actx
->private_data
= (void*)wmem_new0(actx
->pinfo
->pool
, ieee1609_private_data_t
);
3052 offset
= dissect_oer_sequence(tvb
, offset
, actx
, tree
, hf_index
,
3053 ett_ieee1609dot2_Ieee1609Dot2Data
, Ieee1609Dot2Data_sequence
);
3055 actx
->pinfo
->dissection_depth
-= 5;
3056 decrement_dissection_depth(actx
->pinfo
);
3062 static int dissect_SecuredCrl_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3064 asn1_ctx_t asn1_ctx
;
3065 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_OER
, true, pinfo
);
3066 offset
= dissect_ieee1609dot2_SecuredCrl(tvb
, offset
, &asn1_ctx
, tree
, hf_ieee1609dot2_SecuredCrl_PDU
);
3069 static int dissect_Ieee1609Dot2Data_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
3071 asn1_ctx_t asn1_ctx
;
3072 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_OER
, true, pinfo
);
3073 offset
= dissect_ieee1609dot2_Ieee1609Dot2Data(tvb
, offset
, &asn1_ctx
, tree
, hf_ieee1609dot2_Ieee1609Dot2Data_PDU
);
3080 ieee1609dot2_NinetyDegreeInt_fmt(char *s
, uint32_t v
)
3082 int32_t lat
= (int32_t)v
;
3083 if (lat
== 900000001) {
3084 snprintf(s
, ITEM_LABEL_LENGTH
, "unavailable(%d)", lat
);
3086 snprintf(s
, ITEM_LABEL_LENGTH
, "%u°%u'%.3f\"%c (%d)",
3087 abs(lat
) / 10000000,
3088 abs(lat
) % 10000000 * 6 / 1000000,
3089 abs(lat
) % 10000000 * 6 % 1000000 * 6.0 / 100000.0,
3090 (lat
>= 0) ? 'N' : 'S',
3096 ieee1609dot2_OneEightyDegreeInt_fmt(char *s
, uint32_t v
)
3098 int32_t lng
= (int32_t)v
;
3099 if (lng
== 1800000001) {
3100 snprintf(s
, ITEM_LABEL_LENGTH
, "unavailable(%d)", lng
);
3102 snprintf(s
, ITEM_LABEL_LENGTH
, "%u°%u'%.3f\"%c (%d)",
3103 abs(lng
) / 10000000,
3104 abs(lng
) % 10000000 * 6 / 1000000,
3105 abs(lng
) % 10000000 * 6 % 1000000 * 6.0 / 100000.0,
3106 (lng
>= 0) ? 'E' : 'W',
3113 ieee1609dot2_Time32_fmt(char *s
, uint32_t v
)
3115 time_t secs
= v
+ 1072915200 - 5;
3116 struct tm
*tm
= gmtime(&secs
);
3117 snprintf(s
, ITEM_LABEL_LENGTH
, "%u-%02u-%02u %02u:%02u:%02u (%u)",
3118 tm
->tm_year
+ 1900, tm
->tm_mon
+ 1, tm
->tm_mday
, tm
->tm_hour
, tm
->tm_min
, tm
->tm_sec
, v
3123 ieee1609dot2_Time64_fmt(char *s
, uint64_t v
)
3125 time_t secs
= v
/ 1000000 + 1072915200 - 5;
3126 uint32_t usecs
= v
% 1000000;
3127 struct tm
*tm
= gmtime(&secs
);
3128 snprintf(s
, ITEM_LABEL_LENGTH
, "%u-%02u-%02u %02u:%02u:%02u.%06u (%" PRIu64
")",
3129 tm
->tm_year
+ 1900, tm
->tm_mon
+ 1, tm
->tm_mday
, tm
->tm_hour
, tm
->tm_min
, tm
->tm_sec
, usecs
, v
3133 /*--- proto_register_ieee1609dot2 ----------------------------------------------*/
3134 void proto_register_ieee1609dot2(void) {
3136 /* List of fields */
3137 static hf_register_info hf
[] = {
3138 { &hf_ieee1609dot2_SecuredCrl_PDU
,
3139 { "SecuredCrl", "ieee1609dot2.SecuredCrl_element",
3140 FT_NONE
, BASE_NONE
, NULL
, 0,
3142 { &hf_ieee1609dot2_Ieee1609Dot2Data_PDU
,
3143 { "Ieee1609Dot2Data", "ieee1609dot2.Ieee1609Dot2Data_element",
3144 FT_NONE
, BASE_NONE
, NULL
, 0,
3146 { &hf_ieee1609dot2_SequenceOfUint8_item
,
3147 { "Uint8", "ieee1609dot2.Uint8",
3148 FT_UINT32
, BASE_DEC
, NULL
, 0,
3150 { &hf_ieee1609dot2_SequenceOfUint16_item
,
3151 { "Uint16", "ieee1609dot2.Uint16",
3152 FT_UINT32
, BASE_DEC
, NULL
, 0,
3154 { &hf_ieee1609dot2_SequenceOfHashedId3_item
,
3155 { "HashedId3", "ieee1609dot2.HashedId3",
3156 FT_BYTES
, BASE_NONE
, NULL
, 0,
3158 { &hf_ieee1609dot2_start
,
3159 { "start", "ieee1609dot2.start",
3160 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_Time32_fmt
), 0,
3162 { &hf_ieee1609dot2_duration
,
3163 { "duration", "ieee1609dot2.duration",
3164 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_Duration_vals
), 0,
3166 { &hf_ieee1609dot2_microseconds
,
3167 { "microseconds", "ieee1609dot2.microseconds",
3168 FT_UINT32
, BASE_DEC
, NULL
, 0,
3170 { &hf_ieee1609dot2_milliseconds
,
3171 { "milliseconds", "ieee1609dot2.milliseconds",
3172 FT_UINT32
, BASE_DEC
, NULL
, 0,
3174 { &hf_ieee1609dot2_seconds
,
3175 { "seconds", "ieee1609dot2.seconds",
3176 FT_UINT32
, BASE_DEC
, NULL
, 0,
3178 { &hf_ieee1609dot2_minutes
,
3179 { "minutes", "ieee1609dot2.minutes",
3180 FT_UINT32
, BASE_DEC
, NULL
, 0,
3182 { &hf_ieee1609dot2_hours
,
3183 { "hours", "ieee1609dot2.hours",
3184 FT_UINT32
, BASE_DEC
, NULL
, 0,
3186 { &hf_ieee1609dot2_sixtyHours
,
3187 { "sixtyHours", "ieee1609dot2.sixtyHours",
3188 FT_UINT32
, BASE_DEC
, NULL
, 0,
3190 { &hf_ieee1609dot2_years
,
3191 { "years", "ieee1609dot2.years",
3192 FT_UINT32
, BASE_DEC
, NULL
, 0,
3194 { &hf_ieee1609dot2_circularRegion
,
3195 { "circularRegion", "ieee1609dot2.circularRegion_element",
3196 FT_NONE
, BASE_NONE
, NULL
, 0,
3198 { &hf_ieee1609dot2_rectangularRegion
,
3199 { "rectangularRegion", "ieee1609dot2.rectangularRegion",
3200 FT_UINT32
, BASE_DEC
, NULL
, 0,
3201 "SequenceOfRectangularRegion", HFILL
}},
3202 { &hf_ieee1609dot2_polygonalRegion
,
3203 { "polygonalRegion", "ieee1609dot2.polygonalRegion",
3204 FT_UINT32
, BASE_DEC
, NULL
, 0,
3206 { &hf_ieee1609dot2_identifiedRegion
,
3207 { "identifiedRegion", "ieee1609dot2.identifiedRegion",
3208 FT_UINT32
, BASE_DEC
, NULL
, 0,
3209 "SequenceOfIdentifiedRegion", HFILL
}},
3210 { &hf_ieee1609dot2_center
,
3211 { "center", "ieee1609dot2.center_element",
3212 FT_NONE
, BASE_NONE
, NULL
, 0,
3213 "TwoDLocation", HFILL
}},
3214 { &hf_ieee1609dot2_radius
,
3215 { "radius", "ieee1609dot2.radius",
3216 FT_UINT32
, BASE_DEC
, NULL
, 0,
3218 { &hf_ieee1609dot2_northWest
,
3219 { "northWest", "ieee1609dot2.northWest_element",
3220 FT_NONE
, BASE_NONE
, NULL
, 0,
3221 "TwoDLocation", HFILL
}},
3222 { &hf_ieee1609dot2_southEast
,
3223 { "southEast", "ieee1609dot2.southEast_element",
3224 FT_NONE
, BASE_NONE
, NULL
, 0,
3225 "TwoDLocation", HFILL
}},
3226 { &hf_ieee1609dot2_SequenceOfRectangularRegion_item
,
3227 { "RectangularRegion", "ieee1609dot2.RectangularRegion_element",
3228 FT_NONE
, BASE_NONE
, NULL
, 0,
3230 { &hf_ieee1609dot2_PolygonalRegion_item
,
3231 { "TwoDLocation", "ieee1609dot2.TwoDLocation_element",
3232 FT_NONE
, BASE_NONE
, NULL
, 0,
3234 { &hf_ieee1609dot2_latitude
,
3235 { "latitude", "ieee1609dot2.latitude",
3236 FT_INT32
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_NinetyDegreeInt_fmt
), 0,
3238 { &hf_ieee1609dot2_longitude
,
3239 { "longitude", "ieee1609dot2.longitude",
3240 FT_INT32
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_OneEightyDegreeInt_fmt
), 0,
3242 { &hf_ieee1609dot2_countryOnly
,
3243 { "countryOnly", "ieee1609dot2.countryOnly",
3244 FT_UINT32
, BASE_DEC
, NULL
, 0,
3245 "UnCountryId", HFILL
}},
3246 { &hf_ieee1609dot2_countryAndRegions
,
3247 { "countryAndRegions", "ieee1609dot2.countryAndRegions_element",
3248 FT_NONE
, BASE_NONE
, NULL
, 0,
3250 { &hf_ieee1609dot2_countryAndSubregions
,
3251 { "countryAndSubregions", "ieee1609dot2.countryAndSubregions_element",
3252 FT_NONE
, BASE_NONE
, NULL
, 0,
3254 { &hf_ieee1609dot2_SequenceOfIdentifiedRegion_item
,
3255 { "IdentifiedRegion", "ieee1609dot2.IdentifiedRegion",
3256 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_IdentifiedRegion_vals
), 0,
3258 { &hf_ieee1609dot2_regions
,
3259 { "regions", "ieee1609dot2.regions",
3260 FT_UINT32
, BASE_DEC
, NULL
, 0,
3261 "SequenceOfUint8", HFILL
}},
3262 { &hf_ieee1609dot2_regionAndSubregions
,
3263 { "regionAndSubregions", "ieee1609dot2.regionAndSubregions",
3264 FT_UINT32
, BASE_DEC
, NULL
, 0,
3265 "SequenceOfRegionAndSubregions", HFILL
}},
3266 { &hf_ieee1609dot2_rasRegion
,
3267 { "region", "ieee1609dot2.rasRegion",
3268 FT_UINT32
, BASE_DEC
, NULL
, 0,
3270 { &hf_ieee1609dot2_subregions
,
3271 { "subregions", "ieee1609dot2.subregions",
3272 FT_UINT32
, BASE_DEC
, NULL
, 0,
3273 "SequenceOfUint16", HFILL
}},
3274 { &hf_ieee1609dot2_SequenceOfRegionAndSubregions_item
,
3275 { "RegionAndSubregions", "ieee1609dot2.RegionAndSubregions_element",
3276 FT_NONE
, BASE_NONE
, NULL
, 0,
3278 { &hf_ieee1609dot2_elevation
,
3279 { "elevation", "ieee1609dot2.elevation",
3280 FT_UINT32
, BASE_DEC
, NULL
, 0,
3282 { &hf_ieee1609dot2_ecdsaNistP256Signature
,
3283 { "ecdsaNistP256Signature", "ieee1609dot2.ecdsaNistP256Signature_element",
3284 FT_NONE
, BASE_NONE
, NULL
, 0,
3285 "EcdsaP256Signature", HFILL
}},
3286 { &hf_ieee1609dot2_ecdsaBrainpoolP256r1Signature
,
3287 { "ecdsaBrainpoolP256r1Signature", "ieee1609dot2.ecdsaBrainpoolP256r1Signature_element",
3288 FT_NONE
, BASE_NONE
, NULL
, 0,
3289 "EcdsaP256Signature", HFILL
}},
3290 { &hf_ieee1609dot2_ecdsaBrainpoolP384r1Signature
,
3291 { "ecdsaBrainpoolP384r1Signature", "ieee1609dot2.ecdsaBrainpoolP384r1Signature_element",
3292 FT_NONE
, BASE_NONE
, NULL
, 0,
3293 "EcdsaP384Signature", HFILL
}},
3294 { &hf_ieee1609dot2_ecdsaNistP384Signature
,
3295 { "ecdsaNistP384Signature", "ieee1609dot2.ecdsaNistP384Signature_element",
3296 FT_NONE
, BASE_NONE
, NULL
, 0,
3297 "EcdsaP384Signature", HFILL
}},
3298 { &hf_ieee1609dot2_sm2Signature
,
3299 { "sm2Signature", "ieee1609dot2.sm2Signature_element",
3300 FT_NONE
, BASE_NONE
, NULL
, 0,
3301 "EcsigP256Signature", HFILL
}},
3302 { &hf_ieee1609dot2_rSig
,
3303 { "rSig", "ieee1609dot2.rSig",
3304 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3305 "EccP256CurvePoint", HFILL
}},
3306 { &hf_ieee1609dot2_sSig
,
3307 { "sSig", "ieee1609dot2.sSig",
3308 FT_BYTES
, BASE_NONE
, NULL
, 0,
3309 "OCTET_STRING_SIZE_32", HFILL
}},
3310 { &hf_ieee1609dot2_ecdsap384RSig
,
3311 { "rSig", "ieee1609dot2.ecdsap384RSig",
3312 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP384CurvePoint_vals
), 0,
3313 "EccP384CurvePoint", HFILL
}},
3314 { &hf_ieee1609dot2_ecdsap384SSig
,
3315 { "sSig", "ieee1609dot2.ecdsap384SSig",
3316 FT_BYTES
, BASE_NONE
, NULL
, 0,
3317 "OCTET_STRING_SIZE_48", HFILL
}},
3318 { &hf_ieee1609dot2_ecsigp256RSig
,
3319 { "rSig", "ieee1609dot2.ecsigp256RSig",
3320 FT_BYTES
, BASE_NONE
, NULL
, 0,
3321 "OCTET_STRING_SIZE_32", HFILL
}},
3322 { &hf_ieee1609dot2_x_only
,
3323 { "x-only", "ieee1609dot2.x_only",
3324 FT_BYTES
, BASE_NONE
, NULL
, 0,
3325 "OCTET_STRING_SIZE_32", HFILL
}},
3326 { &hf_ieee1609dot2_fill
,
3327 { "fill", "ieee1609dot2.fill_element",
3328 FT_NONE
, BASE_NONE
, NULL
, 0,
3330 { &hf_ieee1609dot2_compressed_y_0
,
3331 { "compressed-y-0", "ieee1609dot2.compressed_y_0",
3332 FT_BYTES
, BASE_NONE
, NULL
, 0,
3333 "OCTET_STRING_SIZE_32", HFILL
}},
3334 { &hf_ieee1609dot2_compressed_y_1
,
3335 { "compressed-y-1", "ieee1609dot2.compressed_y_1",
3336 FT_BYTES
, BASE_NONE
, NULL
, 0,
3337 "OCTET_STRING_SIZE_32", HFILL
}},
3338 { &hf_ieee1609dot2_uncompressedP256
,
3339 { "uncompressedP256", "ieee1609dot2.uncompressedP256_element",
3340 FT_NONE
, BASE_NONE
, NULL
, 0,
3342 { &hf_ieee1609dot2_x
,
3343 { "x", "ieee1609dot2.x",
3344 FT_BYTES
, BASE_NONE
, NULL
, 0,
3345 "OCTET_STRING_SIZE_32", HFILL
}},
3346 { &hf_ieee1609dot2_y
,
3347 { "y", "ieee1609dot2.y",
3348 FT_BYTES
, BASE_NONE
, NULL
, 0,
3349 "OCTET_STRING_SIZE_32", HFILL
}},
3350 { &hf_ieee1609dot2_eccp384cpXOnly
,
3351 { "x-only", "ieee1609dot2.eccp384cpXOnly",
3352 FT_BYTES
, BASE_NONE
, NULL
, 0,
3353 "OCTET_STRING_SIZE_48", HFILL
}},
3354 { &hf_ieee1609dot2_eccp384cpCompressed_y_0
,
3355 { "compressed-y-0", "ieee1609dot2.eccp384cpCompressed_y_0",
3356 FT_BYTES
, BASE_NONE
, NULL
, 0,
3357 "OCTET_STRING_SIZE_48", HFILL
}},
3358 { &hf_ieee1609dot2_eccp384cpCompressed_y_1
,
3359 { "compressed-y-1", "ieee1609dot2.eccp384cpCompressed_y_1",
3360 FT_BYTES
, BASE_NONE
, NULL
, 0,
3361 "OCTET_STRING_SIZE_48", HFILL
}},
3362 { &hf_ieee1609dot2_uncompressedP384
,
3363 { "uncompressedP384", "ieee1609dot2.uncompressedP384_element",
3364 FT_NONE
, BASE_NONE
, NULL
, 0,
3366 { &hf_ieee1609dot2_eccp384cpX
,
3367 { "x", "ieee1609dot2.eccp384cpX",
3368 FT_BYTES
, BASE_NONE
, NULL
, 0,
3369 "OCTET_STRING_SIZE_48", HFILL
}},
3370 { &hf_ieee1609dot2_eccp384cpY
,
3371 { "y", "ieee1609dot2.eccp384cpY",
3372 FT_BYTES
, BASE_NONE
, NULL
, 0,
3373 "OCTET_STRING_SIZE_48", HFILL
}},
3374 { &hf_ieee1609dot2_v
,
3375 { "v", "ieee1609dot2.v",
3376 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3377 "EccP256CurvePoint", HFILL
}},
3378 { &hf_ieee1609dot2_c
,
3379 { "c", "ieee1609dot2.c",
3380 FT_BYTES
, BASE_NONE
, NULL
, 0,
3381 "OCTET_STRING_SIZE_16", HFILL
}},
3382 { &hf_ieee1609dot2_t
,
3383 { "t", "ieee1609dot2.t",
3384 FT_BYTES
, BASE_NONE
, NULL
, 0,
3385 "OCTET_STRING_SIZE_16", HFILL
}},
3386 { &hf_ieee1609dot2_t_01
,
3387 { "t", "ieee1609dot2.t",
3388 FT_BYTES
, BASE_NONE
, NULL
, 0,
3389 "OCTET_STRING_SIZE_32", HFILL
}},
3390 { &hf_ieee1609dot2_public
,
3391 { "public", "ieee1609dot2.public_element",
3392 FT_NONE
, BASE_NONE
, NULL
, 0,
3393 "PublicEncryptionKey", HFILL
}},
3394 { &hf_ieee1609dot2_symmetric
,
3395 { "symmetric", "ieee1609dot2.symmetric",
3396 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SymmetricEncryptionKey_vals
), 0,
3397 "SymmetricEncryptionKey", HFILL
}},
3398 { &hf_ieee1609dot2_supportedSymmAlg
,
3399 { "supportedSymmAlg", "ieee1609dot2.supportedSymmAlg",
3400 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SymmAlgorithm_vals
), 0,
3401 "SymmAlgorithm", HFILL
}},
3402 { &hf_ieee1609dot2_publicKey
,
3403 { "publicKey", "ieee1609dot2.publicKey",
3404 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_BasePublicEncryptionKey_vals
), 0,
3405 "BasePublicEncryptionKey", HFILL
}},
3406 { &hf_ieee1609dot2_eciesNistP256
,
3407 { "eciesNistP256", "ieee1609dot2.eciesNistP256",
3408 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3409 "EccP256CurvePoint", HFILL
}},
3410 { &hf_ieee1609dot2_eciesBrainpoolP256r1
,
3411 { "eciesBrainpoolP256r1", "ieee1609dot2.eciesBrainpoolP256r1",
3412 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3413 "EccP256CurvePoint", HFILL
}},
3414 { &hf_ieee1609dot2_ecencSm2
,
3415 { "ecencSm2", "ieee1609dot2.ecencSm2",
3416 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3417 "EccP256CurvePoint", HFILL
}},
3418 { &hf_ieee1609dot2_ecdsaNistP256
,
3419 { "ecdsaNistP256", "ieee1609dot2.ecdsaNistP256",
3420 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3421 "EccP256CurvePoint", HFILL
}},
3422 { &hf_ieee1609dot2_ecdsaBrainpoolP256r1
,
3423 { "ecdsaBrainpoolP256r1", "ieee1609dot2.ecdsaBrainpoolP256r1",
3424 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3425 "EccP256CurvePoint", HFILL
}},
3426 { &hf_ieee1609dot2_ecdsaBrainpoolP384r1
,
3427 { "ecdsaBrainpoolP384r1", "ieee1609dot2.ecdsaBrainpoolP384r1",
3428 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP384CurvePoint_vals
), 0,
3429 "EccP384CurvePoint", HFILL
}},
3430 { &hf_ieee1609dot2_ecdsaNistP384
,
3431 { "ecdsaNistP384", "ieee1609dot2.ecdsaNistP384",
3432 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP384CurvePoint_vals
), 0,
3433 "EccP384CurvePoint", HFILL
}},
3434 { &hf_ieee1609dot2_ecsigSm2
,
3435 { "ecsigSm2", "ieee1609dot2.ecsigSm2",
3436 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
3437 "EccP256CurvePoint", HFILL
}},
3438 { &hf_ieee1609dot2_aes128Ccm
,
3439 { "aes128Ccm", "ieee1609dot2.aes128Ccm",
3440 FT_BYTES
, BASE_NONE
, NULL
, 0,
3441 "OCTET_STRING_SIZE_16", HFILL
}},
3442 { &hf_ieee1609dot2_sm4Ccm
,
3443 { "sm4Ccm", "ieee1609dot2.sm4Ccm",
3444 FT_BYTES
, BASE_NONE
, NULL
, 0,
3445 "OCTET_STRING_SIZE_16", HFILL
}},
3446 { &hf_ieee1609dot2_psPsid
,
3447 { "psid", "ieee1609dot2.psPsid",
3448 FT_UINT64
, BASE_DEC
|BASE_VAL64_STRING
, VALS64(ieee1609dot2_Psid_vals
), 0,
3449 "T_psPsid", HFILL
}},
3450 { &hf_ieee1609dot2_ssp
,
3451 { "ssp", "ieee1609dot2.ssp",
3452 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_ServiceSpecificPermissions_vals
), 0,
3453 "ServiceSpecificPermissions", HFILL
}},
3454 { &hf_ieee1609dot2_SequenceOfPsidSsp_item
,
3455 { "PsidSsp", "ieee1609dot2.PsidSsp_element",
3456 FT_NONE
, BASE_NONE
, NULL
, 0,
3458 { &hf_ieee1609dot2_opaque
,
3459 { "opaque", "ieee1609dot2.opaque",
3460 FT_BYTES
, BASE_NONE
, NULL
, 0,
3462 { &hf_ieee1609dot2_bitmapSsp
,
3463 { "bitmapSsp", "ieee1609dot2.bitmapSsp",
3464 FT_BYTES
, BASE_NONE
, NULL
, 0,
3466 { &hf_ieee1609dot2_psid
,
3467 { "psid", "ieee1609dot2.psid",
3468 FT_UINT64
, BASE_DEC
|BASE_VAL64_STRING
, VALS64(ieee1609dot2_Psid_vals
), 0,
3470 { &hf_ieee1609dot2_sspRange
,
3471 { "sspRange", "ieee1609dot2.sspRange",
3472 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SspRange_vals
), 0,
3474 { &hf_ieee1609dot2_SequenceOfPsidSspRange_item
,
3475 { "PsidSspRange", "ieee1609dot2.PsidSspRange_element",
3476 FT_NONE
, BASE_NONE
, NULL
, 0,
3478 { &hf_ieee1609dot2_srRange
,
3479 { "opaque", "ieee1609dot2.srRange.opaque",
3480 FT_UINT32
, BASE_DEC
, NULL
, 0,
3481 "SequenceOfOctetString", HFILL
}},
3482 { &hf_ieee1609dot2_all
,
3483 { "all", "ieee1609dot2.all_element",
3484 FT_NONE
, BASE_NONE
, NULL
, 0,
3486 { &hf_ieee1609dot2_bitmapSspRange
,
3487 { "bitmapSspRange", "ieee1609dot2.bitmapSspRange_element",
3488 FT_NONE
, BASE_NONE
, NULL
, 0,
3490 { &hf_ieee1609dot2_sspValue
,
3491 { "sspValue", "ieee1609dot2.sspValue",
3492 FT_BYTES
, BASE_NONE
, NULL
, 0,
3493 "OCTET_STRING_SIZE_1_32", HFILL
}},
3494 { &hf_ieee1609dot2_sspBitmask
,
3495 { "sspBitmask", "ieee1609dot2.sspBitmask",
3496 FT_BYTES
, BASE_NONE
, NULL
, 0,
3497 "OCTET_STRING_SIZE_1_32", HFILL
}},
3498 { &hf_ieee1609dot2_SequenceOfOctetString_item
,
3499 { "SequenceOfOctetString item", "ieee1609dot2.SequenceOfOctetString_item",
3500 FT_BYTES
, BASE_NONE
, NULL
, 0,
3501 "OCTET_STRING_SIZE_0_MAX", HFILL
}},
3502 { &hf_ieee1609dot2_jValue
,
3503 { "jValue", "ieee1609dot2.jValue",
3504 FT_BYTES
, BASE_NONE
, NULL
, 0,
3505 "OCTET_STRING_SIZE_4", HFILL
}},
3506 { &hf_ieee1609dot2_value
,
3507 { "value", "ieee1609dot2.value",
3508 FT_BYTES
, BASE_NONE
, NULL
, 0,
3509 "OCTET_STRING_SIZE_9", HFILL
}},
3510 { &hf_ieee1609dot2_SequenceOfLinkageSeed_item
,
3511 { "LinkageSeed", "ieee1609dot2.LinkageSeed",
3512 FT_BYTES
, BASE_NONE
, NULL
, 0,
3514 { &hf_ieee1609dot2_version
,
3515 { "version", "ieee1609dot2.version",
3516 FT_UINT32
, BASE_DEC
, NULL
, 0,
3517 "Uint8_1", HFILL
}},
3518 { &hf_ieee1609dot2_crlSeries
,
3519 { "crlSeries", "ieee1609dot2.crlSeries",
3520 FT_UINT32
, BASE_DEC
, NULL
, 0,
3522 { &hf_ieee1609dot2_crlCraca
,
3523 { "crlCraca", "ieee1609dot2.crlCraca",
3524 FT_BYTES
, BASE_NONE
, NULL
, 0,
3525 "HashedId8", HFILL
}},
3526 { &hf_ieee1609dot2_issueDate
,
3527 { "issueDate", "ieee1609dot2.issueDate",
3528 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_Time32_fmt
), 0,
3530 { &hf_ieee1609dot2_nextCrl
,
3531 { "nextCrl", "ieee1609dot2.nextCrl",
3532 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_Time32_fmt
), 0,
3534 { &hf_ieee1609dot2_priorityInfo
,
3535 { "priorityInfo", "ieee1609dot2.priorityInfo_element",
3536 FT_NONE
, BASE_NONE
, NULL
, 0,
3537 "CrlPriorityInfo", HFILL
}},
3538 { &hf_ieee1609dot2_typeSpecific
,
3539 { "typeSpecific", "ieee1609dot2.typeSpecific",
3540 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_TypeSpecificCrlContents_vals
), 0,
3541 "TypeSpecificCrlContents", HFILL
}},
3542 { &hf_ieee1609dot2_priority
,
3543 { "priority", "ieee1609dot2.priority",
3544 FT_UINT32
, BASE_DEC
, NULL
, 0,
3546 { &hf_ieee1609dot2_fullHashCrl
,
3547 { "fullHashCrl", "ieee1609dot2.fullHashCrl_element",
3548 FT_NONE
, BASE_NONE
, NULL
, 0,
3549 "ToBeSignedHashIdCrl", HFILL
}},
3550 { &hf_ieee1609dot2_deltaHashCrl
,
3551 { "deltaHashCrl", "ieee1609dot2.deltaHashCrl_element",
3552 FT_NONE
, BASE_NONE
, NULL
, 0,
3553 "ToBeSignedHashIdCrl", HFILL
}},
3554 { &hf_ieee1609dot2_fullLinkedCrl
,
3555 { "fullLinkedCrl", "ieee1609dot2.fullLinkedCrl_element",
3556 FT_NONE
, BASE_NONE
, NULL
, 0,
3557 "ToBeSignedLinkageValueCrl", HFILL
}},
3558 { &hf_ieee1609dot2_deltaLinkedCrl
,
3559 { "deltaLinkedCrl", "ieee1609dot2.deltaLinkedCrl_element",
3560 FT_NONE
, BASE_NONE
, NULL
, 0,
3561 "ToBeSignedLinkageValueCrl", HFILL
}},
3562 { &hf_ieee1609dot2_fullLinkedCrlWithAlg
,
3563 { "fullLinkedCrlWithAlg", "ieee1609dot2.fullLinkedCrlWithAlg_element",
3564 FT_NONE
, BASE_NONE
, NULL
, 0,
3565 "ToBeSignedLinkageValueCrlWithAlgIdentifier", HFILL
}},
3566 { &hf_ieee1609dot2_deltaLinkedCrlWithAlg
,
3567 { "deltaLinkedCrlWithAlg", "ieee1609dot2.deltaLinkedCrlWithAlg_element",
3568 FT_NONE
, BASE_NONE
, NULL
, 0,
3569 "ToBeSignedLinkageValueCrlWithAlgIdentifier", HFILL
}},
3570 { &hf_ieee1609dot2_crlSerial
,
3571 { "crlSerial", "ieee1609dot2.crlSerial",
3572 FT_UINT32
, BASE_DEC
, NULL
, 0,
3574 { &hf_ieee1609dot2_entries
,
3575 { "entries", "ieee1609dot2.entries",
3576 FT_UINT32
, BASE_DEC
, NULL
, 0,
3577 "SequenceOfHashBasedRevocationInfo", HFILL
}},
3578 { &hf_ieee1609dot2_SequenceOfHashBasedRevocationInfo_item
,
3579 { "HashBasedRevocationInfo", "ieee1609dot2.HashBasedRevocationInfo_element",
3580 FT_NONE
, BASE_NONE
, NULL
, 0,
3582 { &hf_ieee1609dot2_hashedId
,
3583 { "id", "ieee1609dot2.hashedId",
3584 FT_BYTES
, BASE_NONE
, NULL
, 0,
3585 "HashedId10", HFILL
}},
3586 { &hf_ieee1609dot2_expiry
,
3587 { "expiry", "ieee1609dot2.expiry",
3588 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_Time32_fmt
), 0,
3590 { &hf_ieee1609dot2_iRev
,
3591 { "iRev", "ieee1609dot2.iRev",
3592 FT_UINT32
, BASE_DEC
, NULL
, 0,
3594 { &hf_ieee1609dot2_indexWithinI
,
3595 { "indexWithinI", "ieee1609dot2.indexWithinI",
3596 FT_UINT32
, BASE_DEC
, NULL
, 0,
3598 { &hf_ieee1609dot2_individual
,
3599 { "individual", "ieee1609dot2.individual",
3600 FT_UINT32
, BASE_DEC
, NULL
, 0,
3601 "SequenceOfJMaxGroup", HFILL
}},
3602 { &hf_ieee1609dot2_groups
,
3603 { "groups", "ieee1609dot2.groups",
3604 FT_UINT32
, BASE_DEC
, NULL
, 0,
3605 "SequenceOfGroupCrlEntry", HFILL
}},
3606 { &hf_ieee1609dot2_groupsSingleSeed
,
3607 { "groupsSingleSeed", "ieee1609dot2.groupsSingleSeed",
3608 FT_UINT32
, BASE_DEC
, NULL
, 0,
3609 "SequenceOfGroupSingleSeedCrlEntry", HFILL
}},
3610 { &hf_ieee1609dot2_SequenceOfJMaxGroup_item
,
3611 { "JMaxGroup", "ieee1609dot2.JMaxGroup_element",
3612 FT_NONE
, BASE_NONE
, NULL
, 0,
3614 { &hf_ieee1609dot2_jmax
,
3615 { "jmax", "ieee1609dot2.jmax",
3616 FT_UINT32
, BASE_DEC
, NULL
, 0,
3618 { &hf_ieee1609dot2_contents
,
3619 { "contents", "ieee1609dot2.contents",
3620 FT_UINT32
, BASE_DEC
, NULL
, 0,
3621 "SequenceOfLAGroup", HFILL
}},
3622 { &hf_ieee1609dot2_SequenceOfLAGroup_item
,
3623 { "LAGroup", "ieee1609dot2.LAGroup_element",
3624 FT_NONE
, BASE_NONE
, NULL
, 0,
3626 { &hf_ieee1609dot2_la1Id
,
3627 { "la1Id", "ieee1609dot2.la1Id",
3628 FT_BYTES
, BASE_NONE
, NULL
, 0,
3630 { &hf_ieee1609dot2_la2Id
,
3631 { "la2Id", "ieee1609dot2.la2Id",
3632 FT_BYTES
, BASE_NONE
, NULL
, 0,
3634 { &hf_ieee1609dot2_contents_01
,
3635 { "contents", "ieee1609dot2.contents",
3636 FT_UINT32
, BASE_DEC
, NULL
, 0,
3637 "SequenceOfIMaxGroup", HFILL
}},
3638 { &hf_ieee1609dot2_SequenceOfIMaxGroup_item
,
3639 { "IMaxGroup", "ieee1609dot2.IMaxGroup_element",
3640 FT_NONE
, BASE_NONE
, NULL
, 0,
3642 { &hf_ieee1609dot2_iMax
,
3643 { "iMax", "ieee1609dot2.iMax",
3644 FT_UINT32
, BASE_DEC
, NULL
, 0,
3646 { &hf_ieee1609dot2_contents_02
,
3647 { "contents", "ieee1609dot2.contents",
3648 FT_UINT32
, BASE_DEC
, NULL
, 0,
3649 "SequenceOfIndividualRevocation", HFILL
}},
3650 { &hf_ieee1609dot2_singleSeed
,
3651 { "singleSeed", "ieee1609dot2.singleSeed",
3652 FT_UINT32
, BASE_DEC
, NULL
, 0,
3653 "SequenceOfLinkageSeed", HFILL
}},
3654 { &hf_ieee1609dot2_SequenceOfIndividualRevocation_item
,
3655 { "IndividualRevocation", "ieee1609dot2.IndividualRevocation_element",
3656 FT_NONE
, BASE_NONE
, NULL
, 0,
3658 { &hf_ieee1609dot2_linkageSeed1
,
3659 { "linkageSeed1", "ieee1609dot2.linkageSeed1",
3660 FT_BYTES
, BASE_NONE
, NULL
, 0,
3661 "LinkageSeed", HFILL
}},
3662 { &hf_ieee1609dot2_linkageSeed2
,
3663 { "linkageSeed2", "ieee1609dot2.linkageSeed2",
3664 FT_BYTES
, BASE_NONE
, NULL
, 0,
3665 "LinkageSeed", HFILL
}},
3666 { &hf_ieee1609dot2_SequenceOfGroupCrlEntry_item
,
3667 { "GroupCrlEntry", "ieee1609dot2.GroupCrlEntry_element",
3668 FT_NONE
, BASE_NONE
, NULL
, 0,
3670 { &hf_ieee1609dot2_seedEvolution
,
3671 { "seedEvolution", "ieee1609dot2.seedEvolution_element",
3672 FT_NONE
, BASE_NONE
, NULL
, 0,
3673 "SeedEvolutionFunctionIdentifier", HFILL
}},
3674 { &hf_ieee1609dot2_lvGeneration
,
3675 { "lvGeneration", "ieee1609dot2.lvGeneration_element",
3676 FT_NONE
, BASE_NONE
, NULL
, 0,
3677 "LvGenerationFunctionIdentifier", HFILL
}},
3678 { &hf_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry_item
,
3679 { "GroupSingleSeedCrlEntry", "ieee1609dot2.GroupSingleSeedCrlEntry_element",
3680 FT_NONE
, BASE_NONE
, NULL
, 0,
3682 { &hf_ieee1609dot2_laId
,
3683 { "laId", "ieee1609dot2.laId",
3684 FT_BYTES
, BASE_NONE
, NULL
, 0,
3686 { &hf_ieee1609dot2_linkageSeed
,
3687 { "linkageSeed", "ieee1609dot2.linkageSeed",
3688 FT_BYTES
, BASE_NONE
, NULL
, 0,
3690 { &hf_ieee1609dot2_content
,
3691 { "content", "ieee1609dot2.content",
3692 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SecuredCrlContent_vals
), 0,
3693 "SecuredCrlContent", HFILL
}},
3694 { &hf_ieee1609dot2_signedData
,
3695 { "signedData", "ieee1609dot2.signedData_element",
3696 FT_NONE
, BASE_NONE
, NULL
, 0,
3697 "CrlSignedData", HFILL
}},
3698 { &hf_ieee1609dot2_tbsData
,
3699 { "tbsData", "ieee1609dot2.tbsData_element",
3700 FT_NONE
, BASE_NONE
, NULL
, 0,
3701 "CrlToBeSignedData", HFILL
}},
3702 { &hf_ieee1609dot2_payload
,
3703 { "payload", "ieee1609dot2.payload_element",
3704 FT_NONE
, BASE_NONE
, NULL
, 0,
3705 "CrlSignedDataPayload", HFILL
}},
3706 { &hf_ieee1609dot2_headerInfo
,
3707 { "headerInfo", "ieee1609dot2.headerInfo_element",
3708 FT_NONE
, BASE_NONE
, NULL
, 0,
3710 { &hf_ieee1609dot2_data
,
3711 { "data", "ieee1609dot2.data_element",
3712 FT_NONE
, BASE_NONE
, NULL
, 0,
3713 "Ieee1609Dot2CrlData", HFILL
}},
3714 { &hf_ieee1609dot2_content_01
,
3715 { "content", "ieee1609dot2.content",
3716 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_Ieee1609Dot2CrlContent_vals
), 0,
3717 "Ieee1609Dot2CrlContent", HFILL
}},
3718 { &hf_ieee1609dot2_unsecuredData
,
3719 { "unsecuredData", "ieee1609dot2.unsecuredData_element",
3720 FT_NONE
, BASE_NONE
, NULL
, 0,
3721 "CrlContents", HFILL
}},
3722 { &hf_ieee1609dot2_protocolVersion
,
3723 { "protocolVersion", "ieee1609dot2.protocolVersion",
3724 FT_UINT32
, BASE_DEC
, NULL
, 0,
3725 "Uint8_3", HFILL
}},
3726 { &hf_ieee1609dot2_content_02
,
3727 { "content", "ieee1609dot2.content",
3728 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_Ieee1609Dot2Content_vals
), 0,
3729 "Ieee1609Dot2Content", HFILL
}},
3730 { &hf_ieee1609dot2_unsecuredData_01
,
3731 { "unsecuredData", "ieee1609dot2.unsecuredData",
3732 FT_BYTES
, BASE_NONE
, NULL
, 0,
3734 { &hf_ieee1609dot2_signedData_01
,
3735 { "signedData", "ieee1609dot2.signedData_element",
3736 FT_NONE
, BASE_NONE
, NULL
, 0,
3738 { &hf_ieee1609dot2_encryptedData
,
3739 { "encryptedData", "ieee1609dot2.encryptedData_element",
3740 FT_NONE
, BASE_NONE
, NULL
, 0,
3742 { &hf_ieee1609dot2_signedCertificateRequest
,
3743 { "signedCertificateRequest", "ieee1609dot2.signedCertificateRequest",
3744 FT_BYTES
, BASE_NONE
, NULL
, 0,
3746 { &hf_ieee1609dot2_signedX509CertificateRequest
,
3747 { "signedX509CertificateRequest", "ieee1609dot2.signedX509CertificateRequest",
3748 FT_BYTES
, BASE_NONE
, NULL
, 0,
3750 { &hf_ieee1609dot2_hashId
,
3751 { "hashId", "ieee1609dot2.hashId",
3752 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_HashAlgorithm_vals
), 0,
3753 "HashAlgorithm", HFILL
}},
3754 { &hf_ieee1609dot2_tbsData_01
,
3755 { "tbsData", "ieee1609dot2.tbsData_element",
3756 FT_NONE
, BASE_NONE
, NULL
, 0,
3757 "ToBeSignedData", HFILL
}},
3758 { &hf_ieee1609dot2_signer
,
3759 { "signer", "ieee1609dot2.signer",
3760 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SignerIdentifier_vals
), 0,
3761 "SignerIdentifier", HFILL
}},
3762 { &hf_ieee1609dot2_signature
,
3763 { "signature", "ieee1609dot2.signature",
3764 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_Signature_vals
), 0,
3766 { &hf_ieee1609dot2_payload_01
,
3767 { "payload", "ieee1609dot2.payload_element",
3768 FT_NONE
, BASE_NONE
, NULL
, 0,
3769 "SignedDataPayload", HFILL
}},
3770 { &hf_ieee1609dot2_data_01
,
3771 { "data", "ieee1609dot2.data_element",
3772 FT_NONE
, BASE_NONE
, NULL
, 0,
3773 "Ieee1609Dot2Data", HFILL
}},
3774 { &hf_ieee1609dot2_extDataHash
,
3775 { "extDataHash", "ieee1609dot2.extDataHash",
3776 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_HashedData_vals
), 0,
3777 "HashedData", HFILL
}},
3778 { &hf_ieee1609dot2_omitted
,
3779 { "omitted", "ieee1609dot2.omitted_element",
3780 FT_NONE
, BASE_NONE
, NULL
, 0,
3782 { &hf_ieee1609dot2_sha256HashedData
,
3783 { "sha256HashedData", "ieee1609dot2.sha256HashedData",
3784 FT_BYTES
, BASE_NONE
, NULL
, 0,
3785 "HashedId32", HFILL
}},
3786 { &hf_ieee1609dot2_sha384HashedData
,
3787 { "sha384HashedData", "ieee1609dot2.sha384HashedData",
3788 FT_BYTES
, BASE_NONE
, NULL
, 0,
3789 "HashedId48", HFILL
}},
3790 { &hf_ieee1609dot2_sm3HashedData
,
3791 { "sm3HashedData", "ieee1609dot2.sm3HashedData",
3792 FT_BYTES
, BASE_NONE
, NULL
, 0,
3793 "HashedId32", HFILL
}},
3794 { &hf_ieee1609dot2_hiPsid
,
3795 { "psid", "ieee1609dot2.hiPsid",
3796 FT_UINT64
, BASE_DEC
|BASE_VAL64_STRING
, VALS64(ieee1609dot2_Psid_vals
), 0,
3797 "T_hiPsid", HFILL
}},
3798 { &hf_ieee1609dot2_generationTime
,
3799 { "generationTime", "ieee1609dot2.generationTime",
3800 FT_UINT64
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_Time64_fmt
), 0,
3802 { &hf_ieee1609dot2_expiryTime
,
3803 { "expiryTime", "ieee1609dot2.expiryTime",
3804 FT_UINT64
, BASE_CUSTOM
, CF_FUNC(ieee1609dot2_Time64_fmt
), 0,
3806 { &hf_ieee1609dot2_generationLocation
,
3807 { "generationLocation", "ieee1609dot2.generationLocation_element",
3808 FT_NONE
, BASE_NONE
, NULL
, 0,
3809 "ThreeDLocation", HFILL
}},
3810 { &hf_ieee1609dot2_p2pcdLearningRequest
,
3811 { "p2pcdLearningRequest", "ieee1609dot2.p2pcdLearningRequest",
3812 FT_BYTES
, BASE_NONE
, NULL
, 0,
3813 "HashedId3", HFILL
}},
3814 { &hf_ieee1609dot2_missingCrlIdentifier
,
3815 { "missingCrlIdentifier", "ieee1609dot2.missingCrlIdentifier_element",
3816 FT_NONE
, BASE_NONE
, NULL
, 0,
3818 { &hf_ieee1609dot2_encryptionKey
,
3819 { "encryptionKey", "ieee1609dot2.encryptionKey",
3820 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EncryptionKey_vals
), 0,
3822 { &hf_ieee1609dot2_inlineP2pcdRequest
,
3823 { "inlineP2pcdRequest", "ieee1609dot2.inlineP2pcdRequest",
3824 FT_UINT32
, BASE_DEC
, NULL
, 0,
3825 "SequenceOfHashedId3", HFILL
}},
3826 { &hf_ieee1609dot2_requestedCertificate
,
3827 { "requestedCertificate", "ieee1609dot2.requestedCertificate_element",
3828 FT_NONE
, BASE_NONE
, NULL
, 0,
3829 "Certificate", HFILL
}},
3830 { &hf_ieee1609dot2_pduFunctionalType
,
3831 { "pduFunctionalType", "ieee1609dot2.pduFunctionalType",
3832 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_PduFunctionalType_vals
), 0,
3834 { &hf_ieee1609dot2_contributedExtensions
,
3835 { "contributedExtensions", "ieee1609dot2.contributedExtensions",
3836 FT_UINT32
, BASE_DEC
, NULL
, 0,
3837 "ContributedExtensionBlocks", HFILL
}},
3838 { &hf_ieee1609dot2_cracaId
,
3839 { "cracaId", "ieee1609dot2.cracaId",
3840 FT_BYTES
, BASE_NONE
, NULL
, 0,
3841 "HashedId3", HFILL
}},
3842 { &hf_ieee1609dot2_ContributedExtensionBlocks_item
,
3843 { "ContributedExtensionBlock", "ieee1609dot2.ContributedExtensionBlock_element",
3844 FT_NONE
, BASE_NONE
, NULL
, 0,
3846 { &hf_ieee1609dot2_contributorId
,
3847 { "contributorId", "ieee1609dot2.contributorId",
3848 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_HeaderInfoContributorId_vals
), 0,
3849 "HeaderInfoContributorId", HFILL
}},
3850 { &hf_ieee1609dot2_extns
,
3851 { "extns", "ieee1609dot2.extns",
3852 FT_UINT32
, BASE_DEC
, NULL
, 0,
3854 { &hf_ieee1609dot2_extns_item
,
3855 { "extns item", "ieee1609dot2.extns_item_element",
3856 FT_NONE
, BASE_NONE
, NULL
, 0,
3858 { &hf_ieee1609dot2_digest
,
3859 { "digest", "ieee1609dot2.digest",
3860 FT_BYTES
, BASE_NONE
, NULL
, 0,
3861 "HashedId8", HFILL
}},
3862 { &hf_ieee1609dot2_certificate
,
3863 { "certificate", "ieee1609dot2.certificate",
3864 FT_UINT32
, BASE_DEC
, NULL
, 0,
3865 "SequenceOfCertificate", HFILL
}},
3866 { &hf_ieee1609dot2_siSelf
,
3867 { "self", "ieee1609dot2.siSelf_element",
3868 FT_NONE
, BASE_NONE
, NULL
, 0,
3870 { &hf_ieee1609dot2_recipients
,
3871 { "recipients", "ieee1609dot2.recipients",
3872 FT_UINT32
, BASE_DEC
, NULL
, 0,
3873 "SequenceOfRecipientInfo", HFILL
}},
3874 { &hf_ieee1609dot2_ciphertext
,
3875 { "ciphertext", "ieee1609dot2.ciphertext",
3876 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SymmetricCiphertext_vals
), 0,
3877 "SymmetricCiphertext", HFILL
}},
3878 { &hf_ieee1609dot2_pskRecipInfo
,
3879 { "pskRecipInfo", "ieee1609dot2.pskRecipInfo",
3880 FT_BYTES
, BASE_NONE
, NULL
, 0,
3881 "PreSharedKeyRecipientInfo", HFILL
}},
3882 { &hf_ieee1609dot2_symmRecipInfo
,
3883 { "symmRecipInfo", "ieee1609dot2.symmRecipInfo_element",
3884 FT_NONE
, BASE_NONE
, NULL
, 0,
3885 "SymmRecipientInfo", HFILL
}},
3886 { &hf_ieee1609dot2_certRecipInfo
,
3887 { "certRecipInfo", "ieee1609dot2.certRecipInfo_element",
3888 FT_NONE
, BASE_NONE
, NULL
, 0,
3889 "PKRecipientInfo", HFILL
}},
3890 { &hf_ieee1609dot2_signedDataRecipInfo
,
3891 { "signedDataRecipInfo", "ieee1609dot2.signedDataRecipInfo_element",
3892 FT_NONE
, BASE_NONE
, NULL
, 0,
3893 "PKRecipientInfo", HFILL
}},
3894 { &hf_ieee1609dot2_rekRecipInfo
,
3895 { "rekRecipInfo", "ieee1609dot2.rekRecipInfo_element",
3896 FT_NONE
, BASE_NONE
, NULL
, 0,
3897 "PKRecipientInfo", HFILL
}},
3898 { &hf_ieee1609dot2_SequenceOfRecipientInfo_item
,
3899 { "RecipientInfo", "ieee1609dot2.RecipientInfo",
3900 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_RecipientInfo_vals
), 0,
3902 { &hf_ieee1609dot2_recipientId
,
3903 { "recipientId", "ieee1609dot2.recipientId",
3904 FT_BYTES
, BASE_NONE
, NULL
, 0,
3905 "HashedId8", HFILL
}},
3906 { &hf_ieee1609dot2_sriEncKey
,
3907 { "encKey", "ieee1609dot2.sriEncKey",
3908 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SymmetricCiphertext_vals
), 0,
3909 "SymmetricCiphertext", HFILL
}},
3910 { &hf_ieee1609dot2_encKey
,
3911 { "encKey", "ieee1609dot2.encKey",
3912 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EncryptedDataEncryptionKey_vals
), 0,
3913 "EncryptedDataEncryptionKey", HFILL
}},
3914 { &hf_ieee1609dot2_edeEciesNistP256
,
3915 { "eciesNistP256", "ieee1609dot2.edeEciesNistP256_element",
3916 FT_NONE
, BASE_NONE
, NULL
, 0,
3917 "EciesP256EncryptedKey", HFILL
}},
3918 { &hf_ieee1609dot2_edekEciesBrainpoolP256r1
,
3919 { "eciesBrainpoolP256r1", "ieee1609dot2.edekEciesBrainpoolP256r1_element",
3920 FT_NONE
, BASE_NONE
, NULL
, 0,
3921 "EciesP256EncryptedKey", HFILL
}},
3922 { &hf_ieee1609dot2_ecencSm2256
,
3923 { "ecencSm2256", "ieee1609dot2.ecencSm2256_element",
3924 FT_NONE
, BASE_NONE
, NULL
, 0,
3925 "EcencP256EncryptedKey", HFILL
}},
3926 { &hf_ieee1609dot2_aes128ccm
,
3927 { "aes128ccm", "ieee1609dot2.aes128ccm_element",
3928 FT_NONE
, BASE_NONE
, NULL
, 0,
3929 "One28BitCcmCiphertext", HFILL
}},
3930 { &hf_ieee1609dot2_sm4Ccm_01
,
3931 { "sm4Ccm", "ieee1609dot2.sm4Ccm_element",
3932 FT_NONE
, BASE_NONE
, NULL
, 0,
3933 "One28BitCcmCiphertext", HFILL
}},
3934 { &hf_ieee1609dot2_nonce
,
3935 { "nonce", "ieee1609dot2.nonce",
3936 FT_BYTES
, BASE_NONE
, NULL
, 0,
3937 "OCTET_STRING_SIZE_12", HFILL
}},
3938 { &hf_ieee1609dot2_ccmCiphertext
,
3939 { "ccmCiphertext", "ieee1609dot2.ccmCiphertext",
3940 FT_BYTES
, BASE_NONE
, NULL
, 0,
3942 { &hf_ieee1609dot2_SequenceOfCertificate_item
,
3943 { "Certificate", "ieee1609dot2.Certificate_element",
3944 FT_NONE
, BASE_NONE
, NULL
, 0,
3946 { &hf_ieee1609dot2_version_01
,
3947 { "version", "ieee1609dot2.version",
3948 FT_UINT32
, BASE_DEC
, NULL
, 0,
3949 "Uint8_3", HFILL
}},
3950 { &hf_ieee1609dot2_type
,
3951 { "type", "ieee1609dot2.type",
3952 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_CertificateType_vals
), 0,
3953 "CertificateType", HFILL
}},
3954 { &hf_ieee1609dot2_issuer
,
3955 { "issuer", "ieee1609dot2.issuer",
3956 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_IssuerIdentifier_vals
), 0,
3957 "IssuerIdentifier", HFILL
}},
3958 { &hf_ieee1609dot2_toBeSigned
,
3959 { "toBeSigned", "ieee1609dot2.toBeSigned_element",
3960 FT_NONE
, BASE_NONE
, NULL
, 0,
3961 "ToBeSignedCertificate", HFILL
}},
3962 { &hf_ieee1609dot2_sha256AndDigest
,
3963 { "sha256AndDigest", "ieee1609dot2.sha256AndDigest",
3964 FT_BYTES
, BASE_NONE
, NULL
, 0,
3965 "HashedId8", HFILL
}},
3966 { &hf_ieee1609dot2_iiSelf
,
3967 { "self", "ieee1609dot2.iiSelf",
3968 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_HashAlgorithm_vals
), 0,
3969 "HashAlgorithm", HFILL
}},
3970 { &hf_ieee1609dot2_sha384AndDigest
,
3971 { "sha384AndDigest", "ieee1609dot2.sha384AndDigest",
3972 FT_BYTES
, BASE_NONE
, NULL
, 0,
3973 "HashedId8", HFILL
}},
3974 { &hf_ieee1609dot2_sm3AndDigest
,
3975 { "sm3AndDigest", "ieee1609dot2.sm3AndDigest",
3976 FT_BYTES
, BASE_NONE
, NULL
, 0,
3977 "HashedId8", HFILL
}},
3978 { &hf_ieee1609dot2_certificateId
,
3979 { "id", "ieee1609dot2.certificateId",
3980 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_CertificateId_vals
), 0,
3981 "CertificateId", HFILL
}},
3982 { &hf_ieee1609dot2_validityPeriod
,
3983 { "validityPeriod", "ieee1609dot2.validityPeriod_element",
3984 FT_NONE
, BASE_NONE
, NULL
, 0,
3986 { &hf_ieee1609dot2_region
,
3987 { "region", "ieee1609dot2.region",
3988 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_GeographicRegion_vals
), 0,
3989 "GeographicRegion", HFILL
}},
3990 { &hf_ieee1609dot2_assuranceLevel
,
3991 { "assuranceLevel", "ieee1609dot2.assuranceLevel",
3992 FT_BYTES
, BASE_NONE
, NULL
, 0,
3993 "SubjectAssurance", HFILL
}},
3994 { &hf_ieee1609dot2_appPermissions
,
3995 { "appPermissions", "ieee1609dot2.appPermissions",
3996 FT_UINT32
, BASE_DEC
, NULL
, 0,
3997 "SequenceOfPsidSsp", HFILL
}},
3998 { &hf_ieee1609dot2_certIssuePermissions
,
3999 { "certIssuePermissions", "ieee1609dot2.certIssuePermissions",
4000 FT_UINT32
, BASE_DEC
, NULL
, 0,
4001 "SequenceOfPsidGroupPermissions", HFILL
}},
4002 { &hf_ieee1609dot2_certRequestPermissions
,
4003 { "certRequestPermissions", "ieee1609dot2.certRequestPermissions",
4004 FT_UINT32
, BASE_DEC
, NULL
, 0,
4005 "SequenceOfPsidGroupPermissions", HFILL
}},
4006 { &hf_ieee1609dot2_canRequestRollover
,
4007 { "canRequestRollover", "ieee1609dot2.canRequestRollover_element",
4008 FT_NONE
, BASE_NONE
, NULL
, 0,
4010 { &hf_ieee1609dot2_tbscEncryptionKey
,
4011 { "encryptionKey", "ieee1609dot2.tbscEncryptionKey_element",
4012 FT_NONE
, BASE_NONE
, NULL
, 0,
4013 "PublicEncryptionKey", HFILL
}},
4014 { &hf_ieee1609dot2_verifyKeyIndicator
,
4015 { "verifyKeyIndicator", "ieee1609dot2.verifyKeyIndicator",
4016 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_VerificationKeyIndicator_vals
), 0,
4017 "VerificationKeyIndicator", HFILL
}},
4018 { &hf_ieee1609dot2_flags
,
4019 { "flags", "ieee1609dot2.flags",
4020 FT_BYTES
, BASE_NONE
, NULL
, 0,
4022 { &hf_ieee1609dot2_appExtensions
,
4023 { "appExtensions", "ieee1609dot2.appExtensions",
4024 FT_UINT32
, BASE_DEC
, NULL
, 0,
4025 "SequenceOfAppExtensions", HFILL
}},
4026 { &hf_ieee1609dot2_certIssueExtensions
,
4027 { "certIssueExtensions", "ieee1609dot2.certIssueExtensions",
4028 FT_UINT32
, BASE_DEC
, NULL
, 0,
4029 "SequenceOfCertIssueExtensions", HFILL
}},
4030 { &hf_ieee1609dot2_certRequestExtension
,
4031 { "certRequestExtension", "ieee1609dot2.certRequestExtension",
4032 FT_UINT32
, BASE_DEC
, NULL
, 0,
4033 "SequenceOfCertRequestExtensions", HFILL
}},
4034 { &hf_ieee1609dot2_linkageData
,
4035 { "linkageData", "ieee1609dot2.linkageData_element",
4036 FT_NONE
, BASE_NONE
, NULL
, 0,
4038 { &hf_ieee1609dot2_name
,
4039 { "name", "ieee1609dot2.name",
4040 FT_STRING
, BASE_NONE
, NULL
, 0,
4041 "Hostname", HFILL
}},
4042 { &hf_ieee1609dot2_binaryId
,
4043 { "binaryId", "ieee1609dot2.binaryId",
4044 FT_BYTES
, BASE_NONE
, NULL
, 0,
4045 "OCTET_STRING_SIZE_1_64", HFILL
}},
4046 { &hf_ieee1609dot2_none
,
4047 { "none", "ieee1609dot2.none_element",
4048 FT_NONE
, BASE_NONE
, NULL
, 0,
4050 { &hf_ieee1609dot2_iCert
,
4051 { "iCert", "ieee1609dot2.iCert",
4052 FT_UINT32
, BASE_DEC
, NULL
, 0,
4054 { &hf_ieee1609dot2_linkage_value
,
4055 { "linkage-value", "ieee1609dot2.linkage_value",
4056 FT_BYTES
, BASE_NONE
, NULL
, 0,
4057 "LinkageValue", HFILL
}},
4058 { &hf_ieee1609dot2_group_linkage_value
,
4059 { "group-linkage-value", "ieee1609dot2.group_linkage_value_element",
4060 FT_NONE
, BASE_NONE
, NULL
, 0,
4061 "GroupLinkageValue", HFILL
}},
4062 { &hf_ieee1609dot2_subjectPermissions
,
4063 { "subjectPermissions", "ieee1609dot2.subjectPermissions",
4064 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_SubjectPermissions_vals
), 0,
4066 { &hf_ieee1609dot2_minChainLength
,
4067 { "minChainLength", "ieee1609dot2.minChainLength",
4068 FT_INT32
, BASE_DEC
, NULL
, 0,
4069 "INTEGER", HFILL
}},
4070 { &hf_ieee1609dot2_chainLengthRange
,
4071 { "chainLengthRange", "ieee1609dot2.chainLengthRange",
4072 FT_INT32
, BASE_DEC
, NULL
, 0,
4073 "INTEGER", HFILL
}},
4074 { &hf_ieee1609dot2_eeType
,
4075 { "eeType", "ieee1609dot2.eeType",
4076 FT_BYTES
, BASE_NONE
, NULL
, 0,
4077 "EndEntityType", HFILL
}},
4078 { &hf_ieee1609dot2_SequenceOfPsidGroupPermissions_item
,
4079 { "PsidGroupPermissions", "ieee1609dot2.PsidGroupPermissions_element",
4080 FT_NONE
, BASE_NONE
, NULL
, 0,
4082 { &hf_ieee1609dot2_explicit
,
4083 { "explicit", "ieee1609dot2.explicit",
4084 FT_UINT32
, BASE_DEC
, NULL
, 0,
4085 "SequenceOfPsidSspRange", HFILL
}},
4086 { &hf_ieee1609dot2_verificationKey
,
4087 { "verificationKey", "ieee1609dot2.verificationKey",
4088 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_PublicVerificationKey_vals
), 0,
4089 "PublicVerificationKey", HFILL
}},
4090 { &hf_ieee1609dot2_reconstructionValue
,
4091 { "reconstructionValue", "ieee1609dot2.reconstructionValue",
4092 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_EccP256CurvePoint_vals
), 0,
4093 "EccP256CurvePoint", HFILL
}},
4094 { &hf_ieee1609dot2_SequenceOfAppExtensions_item
,
4095 { "AppExtension", "ieee1609dot2.AppExtension_element",
4096 FT_NONE
, BASE_NONE
, NULL
, 0,
4098 { &hf_ieee1609dot2_id
,
4099 { "id", "ieee1609dot2.id",
4100 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_ExtId_vals
), 0,
4102 { &hf_ieee1609dot2_content_03
,
4103 { "content", "ieee1609dot2.content_element",
4104 FT_NONE
, BASE_NONE
, NULL
, 0,
4106 { &hf_ieee1609dot2_SequenceOfCertIssueExtensions_item
,
4107 { "CertIssueExtension", "ieee1609dot2.CertIssueExtension_element",
4108 FT_NONE
, BASE_NONE
, NULL
, 0,
4110 { &hf_ieee1609dot2_permissions
,
4111 { "permissions", "ieee1609dot2.permissions",
4112 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_T_permissions_vals
), 0,
4114 { &hf_ieee1609dot2_specific
,
4115 { "specific", "ieee1609dot2.specific_element",
4116 FT_NONE
, BASE_NONE
, NULL
, 0,
4118 { &hf_ieee1609dot2_SequenceOfCertRequestExtensions_item
,
4119 { "CertRequestExtension", "ieee1609dot2.CertRequestExtension_element",
4120 FT_NONE
, BASE_NONE
, NULL
, 0,
4122 { &hf_ieee1609dot2_permissions_01
,
4123 { "permissions", "ieee1609dot2.permissions",
4124 FT_UINT32
, BASE_DEC
, VALS(ieee1609dot2_T_permissions_01_vals
), 0,
4125 "T_permissions_01", HFILL
}},
4126 { &hf_ieee1609dot2_content_04
,
4127 { "content", "ieee1609dot2.content_element",
4128 FT_NONE
, BASE_NONE
, NULL
, 0,
4129 "T_content_01", HFILL
}},
4130 { &hf_ieee1609dot2_T_flags_usesCubk
,
4131 { "usesCubk", "ieee1609dot2.T.flags.usesCubk",
4132 FT_BOOLEAN
, 8, NULL
, 0x80,
4134 { &hf_ieee1609dot2_EndEntityType_app
,
4135 { "app", "ieee1609dot2.EndEntityType.app",
4136 FT_BOOLEAN
, 8, NULL
, 0x80,
4138 { &hf_ieee1609dot2_EndEntityType_enrol
,
4139 { "enrol", "ieee1609dot2.EndEntityType.enrol",
4140 FT_BOOLEAN
, 8, NULL
, 0x40,
4144 /* List of subtrees */
4145 static int *ett
[] = {
4146 &ett_ieee1609dot2_SequenceOfUint8
,
4147 &ett_ieee1609dot2_SequenceOfUint16
,
4148 &ett_ieee1609dot2_SequenceOfHashedId3
,
4149 &ett_ieee1609dot2_ValidityPeriod
,
4150 &ett_ieee1609dot2_Duration
,
4151 &ett_ieee1609dot2_GeographicRegion
,
4152 &ett_ieee1609dot2_CircularRegion
,
4153 &ett_ieee1609dot2_RectangularRegion
,
4154 &ett_ieee1609dot2_SequenceOfRectangularRegion
,
4155 &ett_ieee1609dot2_PolygonalRegion
,
4156 &ett_ieee1609dot2_TwoDLocation
,
4157 &ett_ieee1609dot2_IdentifiedRegion
,
4158 &ett_ieee1609dot2_SequenceOfIdentifiedRegion
,
4159 &ett_ieee1609dot2_CountryAndRegions
,
4160 &ett_ieee1609dot2_CountryAndSubregions
,
4161 &ett_ieee1609dot2_RegionAndSubregions
,
4162 &ett_ieee1609dot2_SequenceOfRegionAndSubregions
,
4163 &ett_ieee1609dot2_ThreeDLocation
,
4164 &ett_ieee1609dot2_Signature
,
4165 &ett_ieee1609dot2_EcdsaP256Signature
,
4166 &ett_ieee1609dot2_EcdsaP384Signature
,
4167 &ett_ieee1609dot2_EcsigP256Signature
,
4168 &ett_ieee1609dot2_EccP256CurvePoint
,
4169 &ett_ieee1609dot2_T_uncompressedP256
,
4170 &ett_ieee1609dot2_EccP384CurvePoint
,
4171 &ett_ieee1609dot2_T_uncompressedP384
,
4172 &ett_ieee1609dot2_EciesP256EncryptedKey
,
4173 &ett_ieee1609dot2_EcencP256EncryptedKey
,
4174 &ett_ieee1609dot2_EncryptionKey
,
4175 &ett_ieee1609dot2_PublicEncryptionKey
,
4176 &ett_ieee1609dot2_BasePublicEncryptionKey
,
4177 &ett_ieee1609dot2_PublicVerificationKey
,
4178 &ett_ieee1609dot2_SymmetricEncryptionKey
,
4179 &ett_ieee1609dot2_PsidSsp
,
4180 &ett_ieee1609dot2_SequenceOfPsidSsp
,
4181 &ett_ieee1609dot2_ServiceSpecificPermissions
,
4182 &ett_ieee1609dot2_PsidSspRange
,
4183 &ett_ieee1609dot2_SequenceOfPsidSspRange
,
4184 &ett_ieee1609dot2_SspRange
,
4185 &ett_ieee1609dot2_BitmapSspRange
,
4186 &ett_ieee1609dot2_SequenceOfOctetString
,
4187 &ett_ieee1609dot2_GroupLinkageValue
,
4188 &ett_ieee1609dot2_SequenceOfLinkageSeed
,
4189 &ett_ieee1609dot2_CrlContents
,
4190 &ett_ieee1609dot2_CrlPriorityInfo
,
4191 &ett_ieee1609dot2_TypeSpecificCrlContents
,
4192 &ett_ieee1609dot2_ToBeSignedHashIdCrl
,
4193 &ett_ieee1609dot2_SequenceOfHashBasedRevocationInfo
,
4194 &ett_ieee1609dot2_HashBasedRevocationInfo
,
4195 &ett_ieee1609dot2_ToBeSignedLinkageValueCrl
,
4196 &ett_ieee1609dot2_SequenceOfJMaxGroup
,
4197 &ett_ieee1609dot2_JMaxGroup
,
4198 &ett_ieee1609dot2_SequenceOfLAGroup
,
4199 &ett_ieee1609dot2_LAGroup
,
4200 &ett_ieee1609dot2_SequenceOfIMaxGroup
,
4201 &ett_ieee1609dot2_IMaxGroup
,
4202 &ett_ieee1609dot2_SequenceOfIndividualRevocation
,
4203 &ett_ieee1609dot2_IndividualRevocation
,
4204 &ett_ieee1609dot2_SequenceOfGroupCrlEntry
,
4205 &ett_ieee1609dot2_GroupCrlEntry
,
4206 &ett_ieee1609dot2_ToBeSignedLinkageValueCrlWithAlgIdentifier
,
4207 &ett_ieee1609dot2_SequenceOfGroupSingleSeedCrlEntry
,
4208 &ett_ieee1609dot2_GroupSingleSeedCrlEntry
,
4209 &ett_ieee1609dot2_SecuredCrl
,
4210 &ett_ieee1609dot2_SecuredCrlContent
,
4211 &ett_ieee1609dot2_CrlSignedData
,
4212 &ett_ieee1609dot2_CrlToBeSignedData
,
4213 &ett_ieee1609dot2_CrlSignedDataPayload
,
4214 &ett_ieee1609dot2_Ieee1609Dot2CrlData
,
4215 &ett_ieee1609dot2_Ieee1609Dot2CrlContent
,
4216 &ett_ieee1609dot2_Ieee1609Dot2Data
,
4217 &ett_ieee1609dot2_Ieee1609Dot2Content
,
4218 &ett_ieee1609dot2_SignedData
,
4219 &ett_ieee1609dot2_ToBeSignedData
,
4220 &ett_ieee1609dot2_SignedDataPayload
,
4221 &ett_ieee1609dot2_HashedData
,
4222 &ett_ieee1609dot2_HeaderInfo
,
4223 &ett_ieee1609dot2_MissingCrlIdentifier
,
4224 &ett_ieee1609dot2_ContributedExtensionBlocks
,
4225 &ett_ieee1609dot2_ContributedExtensionBlock
,
4226 &ett_ieee1609dot2_T_extns
,
4227 &ett_ieee1609dot2_SignerIdentifier
,
4228 &ett_ieee1609dot2_EncryptedData
,
4229 &ett_ieee1609dot2_RecipientInfo
,
4230 &ett_ieee1609dot2_SequenceOfRecipientInfo
,
4231 &ett_ieee1609dot2_SymmRecipientInfo
,
4232 &ett_ieee1609dot2_PKRecipientInfo
,
4233 &ett_ieee1609dot2_EncryptedDataEncryptionKey
,
4234 &ett_ieee1609dot2_SymmetricCiphertext
,
4235 &ett_ieee1609dot2_One28BitCcmCiphertext
,
4236 &ett_ieee1609dot2_SequenceOfCertificate
,
4237 &ett_ieee1609dot2_CertificateBase
,
4238 &ett_ieee1609dot2_IssuerIdentifier
,
4239 &ett_ieee1609dot2_ToBeSignedCertificate
,
4240 &ett_ieee1609dot2_T_flags
,
4241 &ett_ieee1609dot2_CertificateId
,
4242 &ett_ieee1609dot2_LinkageData
,
4243 &ett_ieee1609dot2_EndEntityType
,
4244 &ett_ieee1609dot2_PsidGroupPermissions
,
4245 &ett_ieee1609dot2_SequenceOfPsidGroupPermissions
,
4246 &ett_ieee1609dot2_SubjectPermissions
,
4247 &ett_ieee1609dot2_VerificationKeyIndicator
,
4248 &ett_ieee1609dot2_SequenceOfAppExtensions
,
4249 &ett_ieee1609dot2_AppExtension
,
4250 &ett_ieee1609dot2_SequenceOfCertIssueExtensions
,
4251 &ett_ieee1609dot2_CertIssueExtension
,
4252 &ett_ieee1609dot2_T_permissions
,
4253 &ett_ieee1609dot2_SequenceOfCertRequestExtensions
,
4254 &ett_ieee1609dot2_CertRequestExtension
,
4255 &ett_ieee1609dot2_T_permissions_01
,
4256 &ett_ieee1609dot2_ssp
,
4259 /* Register protocol */
4260 proto_ieee1609dot2
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
4262 /* Register fields and subtrees */
4263 proto_register_field_array(proto_ieee1609dot2
, hf
, array_length(hf
));
4264 proto_register_subtree_array(ett
, array_length(ett
));
4266 proto_ieee1609dot2_handle
= register_dissector("ieee1609dot2.data", dissect_Ieee1609Dot2Data_PDU
, proto_ieee1609dot2
);
4268 // See TS17419_ITS-AID_AssignedNumbers
4269 unsecured_data_subdissector_table
= register_dissector_table("ieee1609dot2.psid",
4270 "ATS-AID/PSID based dissector for unsecured/signed data", proto_ieee1609dot2
, FT_UINT32
, BASE_HEX
);
4271 ssp_subdissector_table
= register_dissector_table("ieee1609dot2.ssp",
4272 "ATS-AID/PSID based dissector for Service Specific Permissions (SSP)", proto_ieee1609dot2
, FT_UINT32
, BASE_HEX
);
4276 void proto_reg_handoff_ieee1609dot2(void) {
4277 dissector_add_string("media_type", "application/x-its", proto_ieee1609dot2_handle
);
4278 dissector_add_string("media_type", "application/x-its-request", proto_ieee1609dot2_handle
);
4279 dissector_add_string("media_type", "application/x-its-response", proto_ieee1609dot2_handle
);
4281 dissector_add_uint("ieee1609dot2.psid", psid_certificate_revocation_list_application
, create_dissector_handle(dissect_SecuredCrl_PDU
, proto_ieee1609dot2
));
4282 //dissector_add_uint_range_with_preference("udp.port", "56000,56001", proto_ieee1609dot2_handle);