aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2019-04-17 16:04:15 +0200
committerAnders Broman <a.broman58@gmail.com>2019-04-17 14:45:29 +0000
commit3b0aabc204ddb2f78f072af44387530aa5ce8bdc (patch)
tree374189f9e9671c48f8b671128c9a8045cc8beed4 /epan/dissectors
parent36ff99315139c19d586495d09fd9136c8b9bbb84 (diff)
IEEE1609dot2: Update to the latest ASN1 files.
Bug: 15703 Bug: 15704 Change-Id: I0574abc5c72835d9e7ca835790c10e55d9e86593 Reviewed-on: https://code.wireshark.org/review/32879 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2BaseTypes.asn520
-rw-r--r--epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2DataTypes.asn592
-rw-r--r--epan/dissectors/asn1/ieee1609dot2/ieee1609dot2.cnf28
-rw-r--r--epan/dissectors/packet-ieee1609dot2.c485
4 files changed, 968 insertions, 657 deletions
diff --git a/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2BaseTypes.asn b/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2BaseTypes.asn
index 4fd0768d80..b26da18045 100644
--- a/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2BaseTypes.asn
+++ b/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2BaseTypes.asn
@@ -1,285 +1,333 @@
-IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
-standards-association-numbered-series-standards(2) wave-stds(1609)
-dot2(2) base(1) base-types(2)}
---
---********************************************************************
--- * IEEE P1609.2 Base Data Types
---
+IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
+standards-association-numbered-series-standards(2) wave-stds(1609)
+dot2(2) base(1) base-types(2) major-version-2(2)}
+
+--
--********************************************************************
- DEFINITIONS AUTOMATIC TAGS ::= BEGIN
- EXPORTS ALL;
+-- IEEE P1609.2 Base Data Types
+--
+--********************************************************************
+
+DEFINITIONS AUTOMATIC TAGS ::= BEGIN
+
+EXPORTS ALL;
+
+
-- ------------------------------------------------------------------
---
+--
-- Integers
--
-- ------------------------------------------------------------------
- Uint3 ::= INTEGER (0..7) -- (hex) 07
- Uint8 ::= INTEGER (0..255) -- (hex) ff
- Uint16 ::= INTEGER (0..65535) -- (hex) ff ff
- Uint32 ::= INTEGER (0..4294967295)--<LONGLONG>-- -- (hex) ff ff ff ff
- Uint64 ::= INTEGER (0..18446744073709551615) -- (hex) ff ff ff ff ff ff ff ff
- SequenceOfUint3 ::= SEQUENCE OF Uint3
- SequenceOfUint8 ::= SEQUENCE OF Uint8
- SequenceOfUint16 ::= SEQUENCE OF Uint16
+
+
+Uint3 ::= INTEGER (0..7) -- (hex) 07
+Uint8 ::= INTEGER (0..255) -- (hex) ff
+Uint16 ::= INTEGER (0..65535) -- (hex) ff ff
+Uint32 ::= INTEGER (0..4294967295)--<LONGLONG>-- -- (hex) ff ff ff ff
+Uint64 ::= INTEGER (0..18446744073709551615) -- (hex) ff ff ff ff ff ff ff ff
+
+SequenceOfUint8 ::= SEQUENCE OF Uint8
+SequenceOfUint16 ::= SEQUENCE OF Uint16
+
-- ------------------------------------------------------------------
---
+--
-- OCTET STRING types
--
-- ------------------------------------------------------------------
- Opaque ::= OCTET STRING
- HashedId32 ::= OCTET STRING (SIZE(32))
- HashedId10 ::= OCTET STRING (SIZE(10))
- HashedId8 ::= OCTET STRING (SIZE(8))
- HashedId4 ::= OCTET STRING (SIZE(4))
- HashedId3 ::= OCTET STRING (SIZE(3))
+
+
+Opaque ::= OCTET STRING
+
+
+HashedId10 ::= OCTET STRING (SIZE(10))
+HashedId8 ::= OCTET STRING (SIZE(8))
+HashedId3 ::= OCTET STRING (SIZE(3))
+SequenceOfHashedId3 ::= SEQUENCE OF HashedId3
+
+
-- ------------------------------------------------------------------
---
+--
-- Time
--
-- ------------------------------------------------------------------
- Time32 ::= Uint32
- Time64 ::= Uint64
-
- ValidityPeriod ::= SEQUENCE {
- start Time32,
- duration Duration
- }
- Duration ::= CHOICE {
- microseconds Uint16,
- milliseconds Uint16,
- seconds Uint16,
- minutes Uint16,
- hours Uint16,
- sixtyHours Uint16,
- years Uint16
- }
+
+Time32 ::= Uint32
+Time64 ::= Uint64
+
+ValidityPeriod ::= SEQUENCE {
+ start Time32,
+ duration Duration
+}
+
+Duration ::= CHOICE {
+ microseconds Uint16,
+ milliseconds Uint16,
+ seconds Uint16,
+ minutes Uint16,
+ hours Uint16,
+ sixtyHours Uint16,
+ years Uint16
+}
+
-- ------------------------------------------------------------------
---
+--
-- Location
--
-- ------------------------------------------------------------------
- GeographicRegion ::= CHOICE {
- circularRegion CircularRegion,
- rectangularRegion SequenceOfRectangularRegion,
- polygonalRegion PolygonalRegion,
- identifiedRegion SequenceOfIdentifiedRegion,
- ...
- }
-
- CircularRegion ::= SEQUENCE {
- center TwoDLocation,
- radius Uint16
- }
-
- RectangularRegion ::= SEQUENCE {
- northWest TwoDLocation,
- southEast TwoDLocation
- }
-
- SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion
-
- PolygonalRegion ::= SEQUENCE SIZE(3..MAX) OF TwoDLocation
-
- TwoDLocation ::= SEQUENCE {
- latitude Latitude,
- longitude Longitude
- }
-
- IdentifiedRegion ::= CHOICE {
- countryOnly CountryOnly,
- countryAndRegions CountryAndRegions,
- countryAndSubregions CountryAndSubregions,
- ...
- }
- SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion
-
- CountryOnly ::= Uint16
-
- CountryAndRegions ::= SEQUENCE {
- countryOnly CountryOnly,
- regions SequenceOfUint8
- }
-
- CountryAndSubregions ::= SEQUENCE {
- country CountryOnly,
- regionAndSubregions SequenceOfRegionAndSubregions
- }
-
- RegionAndSubregions ::= SEQUENCE {
- region Uint8,
- subregions SequenceOfUint16
- }
-
- SequenceOfRegionAndSubregions ::= SEQUENCE OF RegionAndSubregions
-
- ThreeDLocation ::= SEQUENCE {
- latitude Latitude,
- longitude Longitude,
- elevation Elevation
- }
-
- Latitude ::= NinetyDegreeInt
-
- Longitude ::= OneEightyDegreeInt
-
- Elevation ::= ElevInt
-
- NinetyDegreeInt ::= INTEGER {
- min (-900000000),
- max (900000000),
- unknown (900000001)
- } (-900000000..900000001)
-
- KnownLatitude ::= NinetyDegreeInt (min..max)
- -- Minus 90deg to +90deg in microdegree intervals
-
- UnknownLatitude ::= NinetyDegreeInt (unknown)
-
- OneEightyDegreeInt ::= INTEGER {
- min (-1799999999),
- max (1800000000),
- unknown (1800000001)
- } (-1799999999..1800000001)
-
- KnownLongitude ::= OneEightyDegreeInt (min..max)
-
- UnknownLongitude ::= OneEightyDegreeInt (unknown)
-
- ElevInt ::= Uint16 -- Range is from -4096 to 61439 in units of one-tenth of a meter
+
+
+GeographicRegion ::= CHOICE {
+ circularRegion CircularRegion,
+ rectangularRegion SequenceOfRectangularRegion,
+ polygonalRegion PolygonalRegion,
+ identifiedRegion SequenceOfIdentifiedRegion,
+ ...
+}
+
+CircularRegion ::= SEQUENCE {
+ center TwoDLocation,
+ radius Uint16
+}
+
+RectangularRegion ::= SEQUENCE {
+ northWest TwoDLocation,
+ southEast TwoDLocation
+}
+
+SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion
+
+PolygonalRegion ::= SEQUENCE SIZE(3..MAX) OF TwoDLocation
+
+TwoDLocation ::= SEQUENCE {
+ latitude SecLatitude,
+ longitude SecLongitude
+}
+
+IdentifiedRegion ::= CHOICE {
+ countryOnly CountryOnly,
+ countryAndRegions CountryAndRegions,
+ countryAndSubregions CountryAndSubregions,
+ ...
+}
+
+SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion
+
+CountryOnly ::= Uint16
+
+CountryAndRegions ::= SEQUENCE {
+ countryOnly CountryOnly,
+ regions SequenceOfUint8
+}
+
+CountryAndSubregions ::= SEQUENCE {
+ country CountryOnly,
+ regionAndSubregions SequenceOfRegionAndSubregions
+}
+
+RegionAndSubregions ::= SEQUENCE {
+ region Uint8,
+ subregions SequenceOfUint16
+}
+
+SequenceOfRegionAndSubregions ::= SEQUENCE OF RegionAndSubregions
+
+ThreeDLocation ::= SEQUENCE {
+ latitude SecLatitude,
+ longitude SecLongitude,
+ elevation SecElevation
+}
+
+SecLatitude ::= NinetyDegreeInt
+SecLongitude ::= OneEightyDegreeInt
+SecElevation ::= ElevInt
+
+NinetyDegreeInt ::= INTEGER {
+ min (-900000000),
+ max (900000000),
+ unknown (900000001)
+} (-900000000..900000001)
+
+KnownLatitude ::= NinetyDegreeInt (min..max) -- Minus 90deg to +90deg in microdegree intervals
+UnknownLatitude ::= NinetyDegreeInt (unknown)
+
+OneEightyDegreeInt ::= INTEGER {
+ min (-1799999999),
+ max (1800000000),
+ unknown (1800000001)
+} (-1799999999..1800000001)
+
+KnownLongitude ::= OneEightyDegreeInt (min..max)
+UnknownLongitude ::= OneEightyDegreeInt (unknown)
+
+ElevInt ::= Uint16 -- Range is from -4096 to 61439 in units of one-tenth of a meter
+
-- ------------------------------------------------------------------
---
+--
-- Crypto
--
-- ------------------------------------------------------------------
- Signature ::= CHOICE {
- ecdsaNistP256Signature EcdsaP256Signature,
- ecdsaBrainpoolP256r1Signature EcdsaP256Signature,
- ...
- }
-
- EcdsaP256Signature ::= SEQUENCE {
- r EccP256CurvePoint,
- s OCTET STRING (SIZE (32))
- }
-
- EccP256CurvePoint ::= CHOICE {
- x-only OCTET STRING (SIZE (32)),
- fill NULL, -- consistency with 1363 / X9.62
- compressed-y-0 OCTET STRING (SIZE (32)),
- compressed-y-1 OCTET STRING (SIZE (32)),
- uncompressed SEQUENCE {
- x OCTET STRING (SIZE (32)),
- y OCTET STRING (SIZE (32))
- }
- }
-
- SymmAlgorithm ::= ENUMERATED {
- aes128Ccm,
- ...
- }
-
- HashAlgorithm ::= ENUMERATED {
- sha256,
- ...
- }
-
- EciesP256EncryptedKey ::= SEQUENCE {
- v EccP256CurvePoint,
- c OCTET STRING (SIZE (16)),
- t OCTET STRING (SIZE (16))
- }
-
- EncryptionKey ::= CHOICE {
- public PublicEncryptionKey,
- symmetric SymmetricEncryptionKey
- }
-
- PublicEncryptionKey ::= SEQUENCE {
- supportedSymmAlg SymmAlgorithm,
- publicKey BasePublicEncryptionKey
- }
-
- BasePublicEncryptionKey ::= CHOICE {
- eciesNistP256 EccP256CurvePoint,
- eciesBrainpoolP256r1 EccP256CurvePoint,
- ...
- }
-
- PublicVerificationKey ::= CHOICE {
- ecdsaNistP256 EccP256CurvePoint,
- ecdsaBrainpoolP256r1 EccP256CurvePoint,
- ...
- }
-
- SymmetricEncryptionKey ::= CHOICE {
- aes128Ccm OCTET STRING(SIZE(16)),
- ...
- }
+
+Signature ::= CHOICE {
+ ecdsaNistP256Signature EcdsaP256Signature,
+ ecdsaBrainpoolP256r1Signature EcdsaP256Signature,
+ ...,
+ ecdsaBrainpoolP384r1Signature EcdsaP384Signature
+}
+
+EcdsaP256Signature ::= SEQUENCE {
+ rSig EccP256CurvePoint,
+ sSig OCTET STRING (SIZE (32))
+}
+
+EcdsaP384Signature ::= SEQUENCE {
+ rSig EccP384CurvePoint,
+ sSig OCTET STRING (SIZE (48))
+}
+
+EccP256CurvePoint ::= CHOICE {
+ x-only OCTET STRING (SIZE (32)),
+ fill NULL, -- consistency with 1363 / X9.62
+ compressed-y-0 OCTET STRING (SIZE (32)),
+ compressed-y-1 OCTET STRING (SIZE (32)),
+ uncompressedP256 SEQUENCE {
+ x OCTET STRING (SIZE (32)),
+ y OCTET STRING (SIZE (32))
+ }
+}
+
+EccP384CurvePoint::= CHOICE {
+ x-only OCTET STRING (SIZE (48)),
+ fill NULL, -- consistency w 1363 / X9.62
+ compressed-y-0 OCTET STRING (SIZE (48)),
+ compressed-y-1 OCTET STRING (SIZE (48)),
+ uncompressedP384 SEQUENCE {
+ x OCTET STRING (SIZE (48)),
+ y OCTET STRING (SIZE (48))
+ }
+}
+
+
+SymmAlgorithm ::= ENUMERATED {
+ aes128Ccm,
+ ...
+}
+
+HashAlgorithm ::= ENUMERATED {
+ sha256,
+ ...,
+ sha384
+}
+
+EciesP256EncryptedKey ::= SEQUENCE {
+ v EccP256CurvePoint,
+ c OCTET STRING (SIZE (16)),
+ t OCTET STRING (SIZE (16))
+}
+
+EncryptionKey ::= CHOICE {
+ public PublicEncryptionKey,
+ symmetric SymmetricEncryptionKey
+}
+
+PublicEncryptionKey ::= SEQUENCE {
+ supportedSymmAlg SymmAlgorithm,
+ publicKey BasePublicEncryptionKey
+}
+
+BasePublicEncryptionKey ::= CHOICE {
+ eciesNistP256 EccP256CurvePoint,
+ eciesBrainpoolP256r1 EccP256CurvePoint,
+ ...
+}
+
+PublicVerificationKey ::= CHOICE {
+ ecdsaNistP256 EccP256CurvePoint,
+ ecdsaBrainpoolP256r1 EccP256CurvePoint,
+ ...,
+ ecdsaBrainpoolP384r1 EccP384CurvePoint
+}
+
+SymmetricEncryptionKey ::= CHOICE {
+ aes128Ccm OCTET STRING(SIZE(16)),
+ ...
+}
-- ------------------------------------------------------------------
---
+--
-- PSID / ITS-AID
--
-- ------------------------------------------------------------------
- PsidSsp ::= SEQUENCE {
- psid Psid,
- ssp ServiceSpecificPermissions OPTIONAL
- }
- SequenceOfPsidSsp ::= SEQUENCE OF PsidSsp
- Psid ::= INTEGER (0..MAX)
+PsidSsp ::= SEQUENCE {
+ psid Psid,
+ ssp ServiceSpecificPermissions OPTIONAL
+}
+
+SequenceOfPsidSsp ::= SEQUENCE OF PsidSsp
- SequenceOfPsid ::= SEQUENCE OF Psid
+Psid ::= INTEGER (0..MAX)
- ServiceSpecificPermissions ::= CHOICE {
- opaque OCTET STRING (SIZE(0..MAX)),
- ... -- will define Structured SSP here
- }
+SequenceOfPsid ::= SEQUENCE OF Psid
- PsidSspRange ::= SEQUENCE {
- psid Psid,
- sspRange SspRange OPTIONAL
- }
+ServiceSpecificPermissions ::= CHOICE {
+ opaque OCTET STRING (SIZE(0..MAX)),
+ ...,
+ bitmapSsp BitmapSsp
+}
- SequenceOfPsidSspRange ::= SEQUENCE OF PsidSspRange
+BitmapSsp ::= OCTET STRING (SIZE(0..31))
- SspRange ::= CHOICE {
- opaque SequenceOfOctetString,
- all NULL,
- ... -- will define Structured SSP Range here
- }
+PsidSspRange ::= SEQUENCE {
+ psid Psid,
+ sspRange SspRange OPTIONAL
+}
+
+SequenceOfPsidSspRange ::= SEQUENCE OF PsidSspRange
+
+SspRange ::= CHOICE {
+ opaque SequenceOfOctetString,
+ all NULL,
+ ... ,
+ bitmapSspRange BitmapSspRange
+}
+
+BitmapSspRange ::= SEQUENCE {
+ sspValue OCTET STRING (SIZE(1..32)),
+ sspBitmask OCTET STRING (SIZE(1..32))
+}
+
+SequenceOfOctetString ::= SEQUENCE (SIZE (0..MAX)) OF
+ OCTET STRING (SIZE(0..MAX))
- SequenceOfOctetString ::= SEQUENCE (SIZE (0..MAX)) OF OCTET STRING (SIZE(0..MAX))
-- ------------------------------------------------------------------
---
+--
-- Goes in certs
--
-- ------------------------------------------------------------------
- SubjectAssurance ::= OCTET STRING (SIZE(1))
+SubjectAssurance ::= OCTET STRING (SIZE(1))
- CrlSeries ::= Uint16
+CrlSeries ::= Uint16
+
-- ------------------------------------------------------------------
---
+--
-- Pseudonym Linkage
--
-- ------------------------------------------------------------------
- IValue ::= Uint16
- Hostname ::= UTF8String (SIZE(0..255))
-
- LinkageValue ::= OCTET STRING (SIZE(9))
-
- GroupLinkageValue ::= SEQUENCE {
- jValue OCTET STRING (SIZE(4)),
- value OCTET STRING (SIZE(9))
- }
-
- LaId ::= OCTET STRING (SIZE(2))
-
- LinkageSeed ::= OCTET STRING (SIZE(16))
+IValue ::= Uint16
+Hostname ::= UTF8String (SIZE(0..255))
+LinkageValue ::= OCTET STRING (SIZE(9))
+GroupLinkageValue ::= SEQUENCE {
+ jValue OCTET STRING (SIZE(4)),
+ value OCTET STRING (SIZE(9))
+}
+
+LaId ::= OCTET STRING (SIZE(2))
+LinkageSeed ::= OCTET STRING (SIZE(16))
END
+
diff --git a/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2DataTypes.asn b/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2DataTypes.asn
index 5dbef9be7d..18293c86ad 100644
--- a/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2DataTypes.asn
+++ b/epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2DataTypes.asn
@@ -1,298 +1,310 @@
-IEEE1609dot2 {iso(1) identified-organization(3) ieee(111)
-standards-association-numbered-series-standards(2) wave-stds(1609)
-dot2(2) base (1) schema (1)}
---
+IEEE1609dot2 {iso(1) identified-organization(3) ieee(111)
+standards-association-numbered-series-standards(2) wave-stds(1609)
+dot2(2) base (1) schema (1) major-version-2(2)}
+
--******************************************************************************
---
--- IEEE P1609.2 Data Types
---
---
+--
+-- IEEE P1609.2 Data Types
+--
--******************************************************************************
- DEFINITIONS AUTOMATIC TAGS ::= BEGIN
-
- EXPORTS ALL;
-
- IMPORTS
-
- CrlSeries,
- EccP256CurvePoint,
- EciesP256EncryptedKey,
- EncryptionKey,
- GeographicRegion,
- GroupLinkageValue,
- HashAlgorithm,
- HashedId3,
- HashedId8,
- HashedId32,
- Hostname,
- IValue,
- LinkageValue,
- Opaque,
- Psid,
- PsidSsp,
- PsidSspRange,
- PublicEncryptionKey,
- PublicVerificationKey,
- SequenceOfPsidSsp,
- SequenceOfPsidSspRange,
- ServiceSpecificPermissions,
- Signature,
- SubjectAssurance,
- SymmetricEncryptionKey,
- ThreeDLocation,
- Time64,
- Uint3,
- Uint8,
- Uint16,
- Uint32,
- ValidityPeriod
- FROM IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
- standards-association-numbered-series-standards(2) wave-stds(1609)
- dot2(2) base(1) base-types(2)}
- ;
---
---*********************************************************************
---
--- Structures for describing secured data
---
---*********************************************************************
+
+DEFINITIONS AUTOMATIC TAGS ::= BEGIN
+
+EXPORTS ALL;
+
+IMPORTS
+ CrlSeries,
+ EccP256CurvePoint,
+ EciesP256EncryptedKey,
+ EncryptionKey,
+ GeographicRegion,
+ GroupLinkageValue,
+ HashAlgorithm,
+ HashedId3,
+ HashedId8,
+ Hostname,
+ IValue,
+ LinkageValue,
+ Opaque,
+ Psid,
+ PsidSsp,
+ PsidSspRange,
+ PublicEncryptionKey,
+ PublicVerificationKey,
+ SequenceOfHashedId3,
+ SequenceOfPsidSsp,
+ SequenceOfPsidSspRange,
+ ServiceSpecificPermissions,
+ Signature,
+ SubjectAssurance,
+ SymmetricEncryptionKey,
+ ThreeDLocation,
+ Time64,
+ Uint3,
+ Uint8,
+ Uint16,
+ Uint32,
+ ValidityPeriod
+FROM IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
+ standards-association-numbered-series-standards(2) wave-stds(1609)
+ dot2(2) base(1) base-types(2) major-version-2 (2)}
+
+;
+
+--
+--*********************************************************************
+--
+-- Structures for describing secured data
+--
+--*********************************************************************
+
+-- Necessary to get certain tools to generate sample PDUs
+-- TestIeee1609Dot2Data ::= Ieee1609Dot2Data
+-- TestCertificate ::= Certificate
+
-- this structure belongs later in the file but putting it here avoids
-- compiler errors with certain tools
-
- SignedDataPayload ::= SEQUENCE {
- data Ieee1609Dot2Data OPTIONAL,
- extDataHash HashedData OPTIONAL,
- ...
- }
- (WITH COMPONENTS {..., data PRESENT} |
- WITH COMPONENTS {..., extDataHash PRESENT})
-
- Ieee1609Dot2Data ::= SEQUENCE {
- protocolVersion Uint8(3),
- content Ieee1609Dot2Content
- }
-
- Ieee1609Dot2Content ::= CHOICE {
- unsecuredData Opaque,
- signedData SignedData,
- encryptedData EncryptedData,
- signedCertificateRequest Opaque,
- ...
- }
-
- SignedData ::= SEQUENCE {
- hashId HashAlgorithm,
- tbsData ToBeSignedData,
- signer SignerIdentifier,
- signature Signature
- }
-
- SignerIdentifier ::= CHOICE {
- digest HashedId8,
- certificate SequenceOfCertificate,
- self NULL,
- ...
- }
-
- ToBeSignedData ::= SEQUENCE {
- payload SignedDataPayload,
- headerInfo HeaderInfo
- }
-
- HashedData::= CHOICE {
- sha256HashedData OCTET STRING (SIZE(32)),
- ...
- }
-
- HeaderInfo ::= SEQUENCE {
- psid Psid,
- generationTime Time64 OPTIONAL,
- expiryTime Time64 OPTIONAL,
- generationLocation ThreeDLocation OPTIONAL,
- p2pcdLearningRequest HashedId3 OPTIONAL,
- missingCrlIdentifier MissingCrlIdentifier OPTIONAL,
- encryptionKey EncryptionKey OPTIONAL,
- ...
- }
-
- MissingCrlIdentifier ::=
- SEQUENCE { cracaId HashedId3,
- crlSeries CrlSeries,
- ...
- }
-
- Countersignature ::= Ieee1609Dot2Data (WITH COMPONENTS {...,
- content (WITH COMPONENTS {...,
- signedData (WITH COMPONENTS {...,
- tbsData (WITH COMPONENTS {...,
- payload (WITH COMPONENTS {...,
- data ABSENT,
- extDataHash PRESENT
- }),
- headerInfo(WITH COMPONENTS {...,
- generationTime PRESENT,
- expiryTime ABSENT,
- generationLocation ABSENT,
- p2pcdLearningRequest ABSENT,
- missingCrlIdentifier ABSENT,
- encryptionKey ABSENT
- })
- })
- })
- })
- })
-
---**********************************************************************
---
--- Structures for describing encrypted data
---
---**********************************************************************
- EncryptedData ::= SEQUENCE {
- recipients SequenceOfRecipientInfo,
- ciphertext SymmetricCiphertext
- }
-
- RecipientInfo ::= CHOICE {
- pskRecipInfo PreSharedKeyRecipientInfo,
- symmRecipInfo SymmRecipientInfo,
- certRecipInfo PKRecipientInfo,
- signedDataRecipInfo PKRecipientInfo,
- rekRecipInfo PKRecipientInfo
- }
-
- SequenceOfRecipientInfo ::= SEQUENCE OF RecipientInfo
-
- PreSharedKeyRecipientInfo ::= HashedId8
-
- SymmRecipientInfo ::= SEQUENCE {
- recipientId HashedId8,
- encKey SymmetricCiphertext
- }
-
- PKRecipientInfo ::= SEQUENCE {
- recipientId HashedId8,
- encKey EncryptedDataEncryptionKey
- }
-
- EncryptedDataEncryptionKey ::= CHOICE {
- eciesNistP256 EciesP256EncryptedKey,
- eciesBrainpoolP256r1 EciesP256EncryptedKey,
- ...
- }
-
- SymmetricCiphertext ::=
- CHOICE { aes128ccm AesCcmCiphertext,
- ...
- }
-
- AesCcmCiphertext ::= SEQUENCE {
- nonce OCTET STRING (SIZE (12)),
- ccmCiphertext Opaque -- 16 bytes longer than plaintext
- }
-
---**********************************************************************
---
--- Certificates and other security management data structures
---
---**********************************************************************
--- Certificates are implicit (type = implicit, toBeSigned includes
+SignedDataPayload ::= SEQUENCE {
+ data Ieee1609Dot2Data OPTIONAL,
+ extDataHash HashedData OPTIONAL,
+ ...
+}
+ (WITH COMPONENTS {..., data PRESENT} |
+ WITH COMPONENTS {..., extDataHash PRESENT})
+
+Ieee1609Dot2Data ::= SEQUENCE {
+ protocolVersion Uint8(3),
+ content Ieee1609Dot2Content
+}
+
+Ieee1609Dot2Content ::= CHOICE {
+ unsecuredData Opaque,
+ signedData SignedData,
+ encryptedData EncryptedData,
+ signedCertificateRequest Opaque,
+ ...
+}
+
+SignedData ::= SEQUENCE {
+ hashId HashAlgorithm,
+ tbsData ToBeSignedData,
+ signer SignerIdentifier,
+ signature Signature
+}
+
+SignerIdentifier ::= CHOICE {
+ digest HashedId8,
+ certificate SequenceOfCertificate,
+ self NULL,
+ ...
+}
+
+ToBeSignedData ::= SEQUENCE {
+ payload SignedDataPayload,
+ headerInfo HeaderInfo
+}
+
+HashedData::= CHOICE {
+ sha256HashedData OCTET STRING (SIZE(32)),
+ ...
+}
+
+HeaderInfo ::= SEQUENCE {
+ psid Psid,
+ generationTime Time64 OPTIONAL,
+ expiryTime Time64 OPTIONAL,
+ generationLocation ThreeDLocation OPTIONAL,
+ p2pcdLearningRequest HashedId3 OPTIONAL,
+ missingCrlIdentifier MissingCrlIdentifier OPTIONAL,
+ encryptionKey EncryptionKey OPTIONAL,
+ ...,
+ inlineP2pcdRequest SequenceOfHashedId3 OPTIONAL,
+ requestedCertificate Certificate OPTIONAL
+}
+
+MissingCrlIdentifier ::= SEQUENCE {
+ cracaId HashedId3,
+ crlSeries CrlSeries,
+ ...
+}
+
+Countersignature ::= Ieee1609Dot2Data (WITH COMPONENTS {...,
+ content (WITH COMPONENTS {...,
+ signedData (WITH COMPONENTS {...,
+ tbsData (WITH COMPONENTS {...,
+ payload (WITH COMPONENTS {...,
+ data ABSENT,
+ extDataHash PRESENT
+ }),
+ headerInfo(WITH COMPONENTS {...,
+ generationTime PRESENT,
+ expiryTime ABSENT,
+ generationLocation ABSENT,
+ p2pcdLearningRequest ABSENT,
+ missingCrlIdentifier ABSENT,
+ encryptionKey ABSENT
+ })
+ })
+ })
+ })
+})
+
+--**********************************************************************
+--
+-- Structures for describing encrypted data
+--
+--**********************************************************************
+
+
+EncryptedData ::= SEQUENCE {
+ recipients SequenceOfRecipientInfo,
+ ciphertext SymmetricCiphertext
+}
+RecipientInfo ::= CHOICE {
+ pskRecipInfo PreSharedKeyRecipientInfo,
+ symmRecipInfo SymmRecipientInfo,
+ certRecipInfo PKRecipientInfo,
+ signedDataRecipInfo PKRecipientInfo,
+ rekRecipInfo PKRecipientInfo
+}
+
+SequenceOfRecipientInfo ::= SEQUENCE OF RecipientInfo
+
+PreSharedKeyRecipientInfo ::= HashedId8
+SymmRecipientInfo ::= SEQUENCE {
+ recipientId HashedId8,
+ encKey SymmetricCiphertext
+}
+
+PKRecipientInfo ::= SEQUENCE {
+ recipientId HashedId8,
+ encKey EncryptedDataEncryptionKey
+}
+
+EncryptedDataEncryptionKey ::= CHOICE {
+ eciesNistP256 EciesP256EncryptedKey,
+ eciesBrainpoolP256r1 EciesP256EncryptedKey,
+ ...
+}
+
+SymmetricCiphertext ::= CHOICE {
+ aes128ccm AesCcmCiphertext,
+ ...
+}
+
+AesCcmCiphertext ::= SEQUENCE {
+ nonce OCTET STRING (SIZE (12)),
+ ccmCiphertext Opaque -- 16 bytes longer than plaintext
+}
+
+
+--**********************************************************************
+--
+-- Certificates and other security management data structures
+--
+--**********************************************************************
+
+-- Certificates are implicit (type = implicit, toBeSigned includes
-- reconstruction value, signature absent) or explicit (type = explicit,
-- toBeSigned includes verification key, signature present).
- Certificate ::= CertificateBase (ImplicitCertificate | ExplicitCertificate)
-
- SequenceOfCertificate ::= SEQUENCE OF Certificate
-
- CertificateBase ::= SEQUENCE {
- version Uint8(3),
- type CertificateType,
- issuer IssuerIdentifier,
- toBeSigned ToBeSignedCertificate,
- signature Signature OPTIONAL
- }
-
- CertificateType ::= ENUMERATED {
- explicit,
- implicit,
- ...
- }
-
- ImplicitCertificate ::= CertificateBase (WITH COMPONENTS {...,
- type(implicit),
- toBeSigned(WITH COMPONENTS {...,
- verifyKeyIndicator(WITH COMPONENTS {reconstructionValue})
- }),
- signature ABSENT
- })
-
- ExplicitCertificate ::= CertificateBase (WITH COMPONENTS {...,
- type(explicit),
- toBeSigned(WITH COMPONENTS {...,
- verifyKeyIndicator(WITH COMPONENTS {verificationKey})
- }),
- signature PRESENT
- })
-
- IssuerIdentifier ::= CHOICE {
- sha256AndDigest HashedId8,
- self HashAlgorithm,
- ...
- }
-
- ToBeSignedCertificate ::= SEQUENCE {
- id CertificateId,
- cracaId HashedId3,
- crlSeries CrlSeries,
- validityPeriod ValidityPeriod,
- region GeographicRegion OPTIONAL,
- assuranceLevel SubjectAssurance OPTIONAL,
- appPermissions SequenceOfPsidSsp OPTIONAL,
- certIssuePermissions SequenceOfPsidGroupPermissions OPTIONAL,
- certRequestPermissions SequenceOfPsidGroupPermissions OPTIONAL,
- canRequestRollover NULL OPTIONAL,
- encryptionKey PublicEncryptionKey OPTIONAL,
- verifyKeyIndicator VerificationKeyIndicator,
- ...
- }
- (WITH COMPONENTS { ..., appPermissions PRESENT} |
- WITH COMPONENTS { ..., certIssuePermissions PRESENT} |
- WITH COMPONENTS { ..., certRequestPermissions PRESENT})
-
- CertificateId ::= CHOICE {
- linkageData LinkageData,
- name Hostname,
- binaryId OCTET STRING(SIZE(1..64)),
- none NULL,
- ...
- }
-
- LinkageData ::= SEQUENCE {
- iCert IValue,
- linkage-value LinkageValue,
- group-linkage-value GroupLinkageValue OPTIONAL
- }
-
- EndEntityType ::= BIT STRING {app (0), enrol (1) } (SIZE (8))
-
- PsidGroupPermissions ::= SEQUENCE {
- appPermissions SubjectPermissions,
- minChainDepth INTEGER DEFAULT 1, -- 0 for enrolment certs
- chainDepthRange INTEGER DEFAULT 0, -- max depth = min + range
- eeType EndEntityType DEFAULT {app}
- }
-
- SequenceOfPsidGroupPermissions ::= SEQUENCE OF PsidGroupPermissions
-
- SubjectPermissions ::= CHOICE {
- explicit SequenceOfPsidSspRange,
- all NULL,
- ...
- }
-
- VerificationKeyIndicator ::= CHOICE {
- verificationKey PublicVerificationKey,
- reconstructionValue EccP256CurvePoint,
- ...
- }
-
+Certificate ::= CertificateBase (ImplicitCertificate | ExplicitCertificate)
+
+SequenceOfCertificate ::= SEQUENCE OF Certificate
+
+CertificateBase ::= SEQUENCE {
+ version Uint8(3),
+ type CertificateType,
+ issuer IssuerIdentifier,
+ toBeSigned ToBeSignedCertificate,
+ signature Signature OPTIONAL
+}
+
+CertificateType ::= ENUMERATED {
+ explicit,
+ implicit,
+ ...
+}
+
+ImplicitCertificate ::= CertificateBase (WITH COMPONENTS {...,
+ type(implicit),
+ toBeSigned(WITH COMPONENTS {...,
+ verifyKeyIndicator(WITH COMPONENTS {reconstructionValue})
+ }),
+ signature ABSENT
+ })
+
+ExplicitCertificate ::= CertificateBase (WITH COMPONENTS {...,
+ type(explicit),
+ toBeSigned(WITH COMPONENTS {...,
+ verifyKeyIndicator(WITH COMPONENTS {verificationKey})
+ }),
+ signature PRESENT
+ })
+
+IssuerIdentifier ::= CHOICE {
+ sha256AndDigest HashedId8,
+ self HashAlgorithm,
+ ...,
+ sha384AndDigest HashedId8
+}
+
+ToBeSignedCertificate ::= SEQUENCE {
+ id CertificateId,
+ cracaId HashedId3,
+ crlSeries CrlSeries,
+ validityPeriod ValidityPeriod,
+ region GeographicRegion OPTIONAL,
+ assuranceLevel SubjectAssurance OPTIONAL,
+ appPermissions SequenceOfPsidSsp OPTIONAL,
+ certIssuePermissions SequenceOfPsidGroupPermissions OPTIONAL,
+ certRequestPermissions SequenceOfPsidGroupPermissions OPTIONAL,
+ canRequestRollover NULL OPTIONAL,
+ encryptionKey PublicEncryptionKey OPTIONAL,
+ verifyKeyIndicator VerificationKeyIndicator,
+ ...
+}
+(WITH COMPONENTS { ..., appPermissions PRESENT} |
+ WITH COMPONENTS { ..., certIssuePermissions PRESENT} |
+ WITH COMPONENTS { ..., certRequestPermissions PRESENT})
+
+CertificateId ::= CHOICE {
+ linkageData LinkageData,
+ name Hostname,
+ binaryId OCTET STRING(SIZE(1..64)),
+ none NULL,
+ ...
+}
+
+LinkageData ::= SEQUENCE {
+ iCert IValue,
+ linkage-value LinkageValue,
+ group-linkage-value GroupLinkageValue OPTIONAL
+}
+
+--EndEntityType ::= BIT STRING {app (0), enrol (1) } (SIZE (8)) (ALL EXCEPT {})
+EndEntityType ::= BIT STRING {app (0), enrol (1) } (SIZE (8))
+
+PsidGroupPermissions ::= SEQUENCE {
+ subjectPermissions SubjectPermissions,
+ minChainLength INTEGER DEFAULT 1,
+ chainLengthRange INTEGER DEFAULT 0,
+ eeType EndEntityType DEFAULT '80'H
+}
+
+SequenceOfPsidGroupPermissions ::= SEQUENCE OF PsidGroupPermissions
+
+SubjectPermissions ::= CHOICE {
+ explicit SequenceOfPsidSspRange,
+ all NULL,
+ ...
+}
+
+VerificationKeyIndicator ::= CHOICE {
+ verificationKey PublicVerificationKey,
+ reconstructionValue EccP256CurvePoint,
+ ...
+}
+
END
+
diff --git a/epan/dissectors/asn1/ieee1609dot2/ieee1609dot2.cnf b/epan/dissectors/asn1/ieee1609dot2/ieee1609dot2.cnf
index 20672b0627..3362570487 100644
--- a/epan/dissectors/asn1/ieee1609dot2/ieee1609dot2.cnf
+++ b/epan/dissectors/asn1/ieee1609dot2/ieee1609dot2.cnf
@@ -25,16 +25,13 @@ Ieee1609Dot2Data
# Get rid of unused code warnings
Countersignature
ExplicitCertificate
-HashedId4
HashedId10
-HashedId32
ImplicitCertificate
KnownLatitude
KnownLongitude
LaId
LinkageSeed
SequenceOfPsid
-SequenceOfUint3
Uint3
UnknownLatitude
UnknownLongitude
@@ -42,6 +39,31 @@ UnknownLongitude
#.TYPE_RENAME
#.FIELD_RENAME
+EccP384CurvePoint/uncompressedP384/x eccp384cpX
+EccP384CurvePoint/uncompressedP384/y eccp384cpY
+EccP384CurvePoint/x-only eccp384cpXOnly
+EccP384CurvePoint/compressed-y-0 eccp384cpCompressed-y-0
+EccP384CurvePoint/compressed-y-1 eccp384cpCompressed-y-1
+
+EcdsaP384Signature/rSig ecdsap384RSig
+EcdsaP384Signature/sSig ecdsap384SSig
+
+PsidSsp/psid psPsid
+HeaderInfo/psid hiPsid
+
+IssuerIdentifier/self iiSelf
+SignerIdentifier/self siSelf
+
+SspRange/opaque srRange
+RegionAndSubregions/region rasRegion
+
+ToBeSignedCertificate/encryptionKey tbscEncryptionKey
+
+SymmRecipientInfo/encKey sriEncKey
+
+EncryptedDataEncryptionKey/eciesNistP256 edeEciesNistP256
+
+EncryptedDataEncryptionKey/eciesBrainpoolP256r1 edekEciesBrainpoolP256r1
#.FN_HDR Ieee1609Dot2Data
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), ieee1609_private_data_t);
diff --git a/epan/dissectors/packet-ieee1609dot2.c b/epan/dissectors/packet-ieee1609dot2.c
index eddee7b233..bc5ab41887 100644
--- a/epan/dissectors/packet-ieee1609dot2.c
+++ b/epan/dissectors/packet-ieee1609dot2.c
@@ -46,6 +46,7 @@ int proto_ieee1609dot2 = -1;
static int hf_ieee1609dot2_Ieee1609Dot2Data_PDU = -1; /* Ieee1609Dot2Data */
static int hf_ieee1609dot2_SequenceOfUint8_item = -1; /* Uint8 */
static int hf_ieee1609dot2_SequenceOfUint16_item = -1; /* Uint16 */
+static int hf_ieee1609dot2_SequenceOfHashedId3_item = -1; /* HashedId3 */
static int hf_ieee1609dot2_start = -1; /* Time32 */
static int hf_ieee1609dot2_duration = -1; /* Duration */
static int hf_ieee1609dot2_microseconds = -1; /* Uint16 */
@@ -65,8 +66,8 @@ static int hf_ieee1609dot2_northWest = -1; /* TwoDLocation */
static int hf_ieee1609dot2_southEast = -1; /* TwoDLocation */
static int hf_ieee1609dot2_SequenceOfRectangularRegion_item = -1; /* RectangularRegion */
static int hf_ieee1609dot2_PolygonalRegion_item = -1; /* TwoDLocation */
-static int hf_ieee1609dot2_latitude = -1; /* Latitude */
-static int hf_ieee1609dot2_longitude = -1; /* Longitude */
+static int hf_ieee1609dot2_latitude = -1; /* SecLatitude */
+static int hf_ieee1609dot2_longitude = -1; /* SecLongitude */
static int hf_ieee1609dot2_countryOnly = -1; /* CountryOnly */
static int hf_ieee1609dot2_countryAndRegions = -1; /* CountryAndRegions */
static int hf_ieee1609dot2_countryAndSubregions = -1; /* CountryAndSubregions */
@@ -74,21 +75,30 @@ static int hf_ieee1609dot2_SequenceOfIdentifiedRegion_item = -1; /* IdentifiedR
static int hf_ieee1609dot2_regions = -1; /* SequenceOfUint8 */
static int hf_ieee1609dot2_country = -1; /* CountryOnly */
static int hf_ieee1609dot2_regionAndSubregions = -1; /* SequenceOfRegionAndSubregions */
-static int hf_ieee1609dot2_region = -1; /* Uint8 */
+static int hf_ieee1609dot2_rasRegion = -1; /* Uint8 */
static int hf_ieee1609dot2_subregions = -1; /* SequenceOfUint16 */
static int hf_ieee1609dot2_SequenceOfRegionAndSubregions_item = -1; /* RegionAndSubregions */
-static int hf_ieee1609dot2_elevation = -1; /* Elevation */
+static int hf_ieee1609dot2_elevation = -1; /* SecElevation */
static int hf_ieee1609dot2_ecdsaNistP256Signature = -1; /* EcdsaP256Signature */
static int hf_ieee1609dot2_ecdsaBrainpoolP256r1Signature = -1; /* EcdsaP256Signature */
-static int hf_ieee1609dot2_r = -1; /* EccP256CurvePoint */
-static int hf_ieee1609dot2_s = -1; /* OCTET_STRING_SIZE_32 */
+static int hf_ieee1609dot2_ecdsaBrainpoolP384r1Signature = -1; /* EcdsaP384Signature */
+static int hf_ieee1609dot2_rSig = -1; /* EccP256CurvePoint */
+static int hf_ieee1609dot2_sSig = -1; /* OCTET_STRING_SIZE_32 */
+static int hf_ieee1609dot2_ecdsap384RSig = -1; /* EccP384CurvePoint */
+static int hf_ieee1609dot2_ecdsap384SSig = -1; /* OCTET_STRING_SIZE_48 */
static int hf_ieee1609dot2_x_only = -1; /* OCTET_STRING_SIZE_32 */
static int hf_ieee1609dot2_fill = -1; /* NULL */
static int hf_ieee1609dot2_compressed_y_0 = -1; /* OCTET_STRING_SIZE_32 */
static int hf_ieee1609dot2_compressed_y_1 = -1; /* OCTET_STRING_SIZE_32 */
-static int hf_ieee1609dot2_uncompressed = -1; /* T_uncompressed */
+static int hf_ieee1609dot2_uncompressedP256 = -1; /* T_uncompressedP256 */
static int hf_ieee1609dot2_x = -1; /* OCTET_STRING_SIZE_32 */
static int hf_ieee1609dot2_y = -1; /* OCTET_STRING_SIZE_32 */
+static int hf_ieee1609dot2_eccp384cpXOnly = -1; /* OCTET_STRING_SIZE_48 */
+static int hf_ieee1609dot2_eccp384cpCompressed_y_0 = -1; /* OCTET_STRING_SIZE_48 */
+static int hf_ieee1609dot2_eccp384cpCompressed_y_1 = -1; /* OCTET_STRING_SIZE_48 */
+static int hf_ieee1609dot2_uncompressedP384 = -1; /* T_uncompressedP384 */
+static int hf_ieee1609dot2_eccp384cpX = -1; /* OCTET_STRING_SIZE_48 */
+static int hf_ieee1609dot2_eccp384cpY = -1; /* OCTET_STRING_SIZE_48 */
static int hf_ieee1609dot2_v = -1; /* EccP256CurvePoint */
static int hf_ieee1609dot2_c = -1; /* OCTET_STRING_SIZE_16 */
static int hf_ieee1609dot2_t = -1; /* OCTET_STRING_SIZE_16 */
@@ -100,16 +110,21 @@ static int hf_ieee1609dot2_eciesNistP256 = -1; /* EccP256CurvePoint */
static int hf_ieee1609dot2_eciesBrainpoolP256r1 = -1; /* EccP256CurvePoint */
static int hf_ieee1609dot2_ecdsaNistP256 = -1; /* EccP256CurvePoint */
static int hf_ieee1609dot2_ecdsaBrainpoolP256r1 = -1; /* EccP256CurvePoint */
+static int hf_ieee1609dot2_ecdsaBrainpoolP384r1 = -1; /* EccP384CurvePoint */
static int hf_ieee1609dot2_aes128Ccm = -1; /* OCTET_STRING_SIZE_16 */
-static int hf_ieee1609dot2_psid = -1; /* T_psid */
+static int hf_ieee1609dot2_psPsid = -1; /* T_psPsid */
static int hf_ieee1609dot2_ssp = -1; /* ServiceSpecificPermissions */
static int hf_ieee1609dot2_SequenceOfPsidSsp_item = -1; /* PsidSsp */
static int hf_ieee1609dot2_opaque = -1; /* T_opaque */
-static int hf_ieee1609dot2_psid_01 = -1; /* Psid */
+static int hf_ieee1609dot2_bitmapSsp = -1; /* BitmapSsp */
+static int hf_ieee1609dot2_psid = -1; /* Psid */
static int hf_ieee1609dot2_sspRange = -1; /* SspRange */
static int hf_ieee1609dot2_SequenceOfPsidSspRange_item = -1; /* PsidSspRange */
-static int hf_ieee1609dot2_opaque_01 = -1; /* SequenceOfOctetString */
+static int hf_ieee1609dot2_srRange = -1; /* SequenceOfOctetString */
static int hf_ieee1609dot2_all = -1; /* NULL */
+static int hf_ieee1609dot2_bitmapSspRange = -1; /* BitmapSspRange */
+static int hf_ieee1609dot2_sspValue = -1; /* OCTET_STRING_SIZE_1_32 */
+static int hf_ieee1609dot2_sspBitmask = -1; /* OCTET_STRING_SIZE_1_32 */
static int hf_ieee1609dot2_SequenceOfOctetString_item = -1; /* OCTET_STRING_SIZE_0_MAX */
static int hf_ieee1609dot2_jValue = -1; /* OCTET_STRING_SIZE_4 */
static int hf_ieee1609dot2_value = -1; /* OCTET_STRING_SIZE_9 */
@@ -127,17 +142,19 @@ static int hf_ieee1609dot2_signer = -1; /* SignerIdentifier */
static int hf_ieee1609dot2_signature = -1; /* Signature */
static int hf_ieee1609dot2_digest = -1; /* HashedId8 */
static int hf_ieee1609dot2_certificate = -1; /* SequenceOfCertificate */
-static int hf_ieee1609dot2_self = -1; /* NULL */
+static int hf_ieee1609dot2_siSelf = -1; /* NULL */
static int hf_ieee1609dot2_payload = -1; /* SignedDataPayload */
static int hf_ieee1609dot2_headerInfo = -1; /* HeaderInfo */
static int hf_ieee1609dot2_sha256HashedData = -1; /* OCTET_STRING_SIZE_32 */
-static int hf_ieee1609dot2_psid_02 = -1; /* T_psid_01 */
+static int hf_ieee1609dot2_hiPsid = -1; /* T_hiPsid */
static int hf_ieee1609dot2_generationTime = -1; /* Time64 */
static int hf_ieee1609dot2_expiryTime = -1; /* Time64 */
static int hf_ieee1609dot2_generationLocation = -1; /* ThreeDLocation */
static int hf_ieee1609dot2_p2pcdLearningRequest = -1; /* HashedId3 */
static int hf_ieee1609dot2_missingCrlIdentifier = -1; /* MissingCrlIdentifier */
static int hf_ieee1609dot2_encryptionKey = -1; /* EncryptionKey */
+static int hf_ieee1609dot2_inlineP2pcdRequest = -1; /* SequenceOfHashedId3 */
+static int hf_ieee1609dot2_requestedCertificate = -1; /* Certificate */
static int hf_ieee1609dot2_cracaId = -1; /* HashedId3 */
static int hf_ieee1609dot2_crlSeries = -1; /* CrlSeries */
static int hf_ieee1609dot2_recipients = -1; /* SequenceOfRecipientInfo */
@@ -149,10 +166,10 @@ static int hf_ieee1609dot2_signedDataRecipInfo = -1; /* PKRecipientInfo */
static int hf_ieee1609dot2_rekRecipInfo = -1; /* PKRecipientInfo */
static int hf_ieee1609dot2_SequenceOfRecipientInfo_item = -1; /* RecipientInfo */
static int hf_ieee1609dot2_recipientId = -1; /* HashedId8 */
-static int hf_ieee1609dot2_encKey = -1; /* SymmetricCiphertext */
-static int hf_ieee1609dot2_encKey_01 = -1; /* EncryptedDataEncryptionKey */
-static int hf_ieee1609dot2_eciesNistP256_01 = -1; /* EciesP256EncryptedKey */
-static int hf_ieee1609dot2_eciesBrainpoolP256r1_01 = -1; /* EciesP256EncryptedKey */
+static int hf_ieee1609dot2_sriEncKey = -1; /* SymmetricCiphertext */
+static int hf_ieee1609dot2_encKey = -1; /* EncryptedDataEncryptionKey */
+static int hf_ieee1609dot2_edeEciesNistP256 = -1; /* EciesP256EncryptedKey */
+static int hf_ieee1609dot2_edekEciesBrainpoolP256r1 = -1; /* EciesP256EncryptedKey */
static int hf_ieee1609dot2_aes128ccm = -1; /* AesCcmCiphertext */
static int hf_ieee1609dot2_nonce = -1; /* OCTET_STRING_SIZE_12 */
static int hf_ieee1609dot2_ccmCiphertext = -1; /* Opaque */
@@ -162,16 +179,17 @@ static int hf_ieee1609dot2_type = -1; /* CertificateType */
static int hf_ieee1609dot2_issuer = -1; /* IssuerIdentifier */
static int hf_ieee1609dot2_toBeSigned = -1; /* ToBeSignedCertificate */
static int hf_ieee1609dot2_sha256AndDigest = -1; /* HashedId8 */
-static int hf_ieee1609dot2_self_01 = -1; /* HashAlgorithm */
+static int hf_ieee1609dot2_iiSelf = -1; /* HashAlgorithm */
+static int hf_ieee1609dot2_sha384AndDigest = -1; /* HashedId8 */
static int hf_ieee1609dot2_id = -1; /* CertificateId */
static int hf_ieee1609dot2_validityPeriod = -1; /* ValidityPeriod */
-static int hf_ieee1609dot2_region_01 = -1; /* GeographicRegion */
+static int hf_ieee1609dot2_region = -1; /* GeographicRegion */
static int hf_ieee1609dot2_assuranceLevel = -1; /* SubjectAssurance */
static int hf_ieee1609dot2_appPermissions = -1; /* SequenceOfPsidSsp */
static int hf_ieee1609dot2_certIssuePermissions = -1; /* SequenceOfPsidGroupPermissions */
static int hf_ieee1609dot2_certRequestPermissions = -1; /* SequenceOfPsidGroupPermissions */
static int hf_ieee1609dot2_canRequestRollover = -1; /* NULL */
-static int hf_ieee1609dot2_encryptionKey_01 = -1; /* PublicEncryptionKey */
+static int hf_ieee1609dot2_tbscEncryptionKey = -1; /* PublicEncryptionKey */
static int hf_ieee1609dot2_verifyKeyIndicator = -1; /* VerificationKeyIndicator */
static int hf_ieee1609dot2_linkageData = -1; /* LinkageData */
static int hf_ieee1609dot2_name = -1; /* Hostname */
@@ -180,9 +198,9 @@ static int hf_ieee1609dot2_none = -1; /* NULL */
static int hf_ieee1609dot2_iCert = -1; /* IValue */
static int hf_ieee1609dot2_linkage_value = -1; /* LinkageValue */
static int hf_ieee1609dot2_group_linkage_value = -1; /* GroupLinkageValue */
-static int hf_ieee1609dot2_appPermissions_01 = -1; /* SubjectPermissions */
-static int hf_ieee1609dot2_minChainDepth = -1; /* INTEGER */
-static int hf_ieee1609dot2_chainDepthRange = -1; /* INTEGER */
+static int hf_ieee1609dot2_subjectPermissions = -1; /* SubjectPermissions */
+static int hf_ieee1609dot2_minChainLength = -1; /* INTEGER */
+static int hf_ieee1609dot2_chainLengthRange = -1; /* INTEGER */
static int hf_ieee1609dot2_eeType = -1; /* EndEntityType */
static int hf_ieee1609dot2_SequenceOfPsidGroupPermissions_item = -1; /* PsidGroupPermissions */
static int hf_ieee1609dot2_explicit = -1; /* SequenceOfPsidSspRange */
@@ -202,6 +220,7 @@ static int ett_ieee1609dot2_ssp = -1;
#line 1 "./asn1/ieee1609dot2/packet-ieee1609dot2-ett.c"
static gint ett_ieee1609dot2_SequenceOfUint8 = -1;
static gint ett_ieee1609dot2_SequenceOfUint16 = -1;
+static gint ett_ieee1609dot2_SequenceOfHashedId3 = -1;
static gint ett_ieee1609dot2_ValidityPeriod = -1;
static gint ett_ieee1609dot2_Duration = -1;
static gint ett_ieee1609dot2_GeographicRegion = -1;
@@ -219,8 +238,11 @@ static gint ett_ieee1609dot2_SequenceOfRegionAndSubregions = -1;
static gint ett_ieee1609dot2_ThreeDLocation = -1;
static gint ett_ieee1609dot2_Signature = -1;
static gint ett_ieee1609dot2_EcdsaP256Signature = -1;
+static gint ett_ieee1609dot2_EcdsaP384Signature = -1;
static gint ett_ieee1609dot2_EccP256CurvePoint = -1;
-static gint ett_ieee1609dot2_T_uncompressed = -1;
+static gint ett_ieee1609dot2_T_uncompressedP256 = -1;
+static gint ett_ieee1609dot2_EccP384CurvePoint = -1;
+static gint ett_ieee1609dot2_T_uncompressedP384 = -1;
static gint ett_ieee1609dot2_EciesP256EncryptedKey = -1;
static gint ett_ieee1609dot2_EncryptionKey = -1;
static gint ett_ieee1609dot2_PublicEncryptionKey = -1;
@@ -233,6 +255,7 @@ static gint ett_ieee1609dot2_ServiceSpecificPermissions = -1;
static gint ett_ieee1609dot2_PsidSspRange = -1;
static gint ett_ieee1609dot2_SequenceOfPsidSspRange = -1;
static gint ett_ieee1609dot2_SspRange = -1;
+static gint ett_ieee1609dot2_BitmapSspRange = -1;
static gint ett_ieee1609dot2_SequenceOfOctetString = -1;
static gint ett_ieee1609dot2_GroupLinkageValue = -1;
static gint ett_ieee1609dot2_SignedDataPayload = -1;
@@ -387,6 +410,19 @@ dissect_ieee1609dot2_HashedId3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
}
+static const oer_sequence_t SequenceOfHashedId3_sequence_of[1] = {
+ { &hf_ieee1609dot2_SequenceOfHashedId3_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_HashedId3 },
+};
+
+static int
+dissect_ieee1609dot2_SequenceOfHashedId3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_ieee1609dot2_SequenceOfHashedId3, SequenceOfHashedId3_sequence_of);
+
+ return offset;
+}
+
+
static int
dissect_ieee1609dot2_Time32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -471,7 +507,7 @@ dissect_ieee1609dot2_NinetyDegreeInt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
-dissect_ieee1609dot2_Latitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_ieee1609dot2_SecLatitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ieee1609dot2_NinetyDegreeInt(tvb, offset, actx, tree, hf_index);
return offset;
@@ -497,7 +533,7 @@ dissect_ieee1609dot2_OneEightyDegreeInt(tvbuff_t *tvb _U_, int offset _U_, asn1_
static int
-dissect_ieee1609dot2_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_ieee1609dot2_SecLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ieee1609dot2_OneEightyDegreeInt(tvb, offset, actx, tree, hf_index);
return offset;
@@ -505,8 +541,8 @@ dissect_ieee1609dot2_Longitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static const oer_sequence_t TwoDLocation_sequence[] = {
- { &hf_ieee1609dot2_latitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Latitude },
- { &hf_ieee1609dot2_longitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Longitude },
+ { &hf_ieee1609dot2_latitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SecLatitude },
+ { &hf_ieee1609dot2_longitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SecLongitude },
{ NULL, 0, 0, NULL }
};
@@ -601,7 +637,7 @@ dissect_ieee1609dot2_CountryAndRegions(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const oer_sequence_t RegionAndSubregions_sequence[] = {
- { &hf_ieee1609dot2_region , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Uint8 },
+ { &hf_ieee1609dot2_rasRegion, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Uint8 },
{ &hf_ieee1609dot2_subregions, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SequenceOfUint16 },
{ NULL, 0, 0, NULL }
};
@@ -717,7 +753,7 @@ dissect_ieee1609dot2_ElevInt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
-dissect_ieee1609dot2_Elevation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_ieee1609dot2_SecElevation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ieee1609dot2_ElevInt(tvb, offset, actx, tree, hf_index);
return offset;
@@ -725,9 +761,9 @@ dissect_ieee1609dot2_Elevation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac
static const oer_sequence_t ThreeDLocation_sequence[] = {
- { &hf_ieee1609dot2_latitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Latitude },
- { &hf_ieee1609dot2_longitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Longitude },
- { &hf_ieee1609dot2_elevation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Elevation },
+ { &hf_ieee1609dot2_latitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SecLatitude },
+ { &hf_ieee1609dot2_longitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SecLongitude },
+ { &hf_ieee1609dot2_elevation, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SecElevation },
{ NULL, 0, 0, NULL }
};
@@ -759,16 +795,16 @@ dissect_ieee1609dot2_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
}
-static const oer_sequence_t T_uncompressed_sequence[] = {
+static const oer_sequence_t T_uncompressedP256_sequence[] = {
{ &hf_ieee1609dot2_x , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_32 },
{ &hf_ieee1609dot2_y , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_32 },
{ NULL, 0, 0, NULL }
};
static int
-dissect_ieee1609dot2_T_uncompressed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+dissect_ieee1609dot2_T_uncompressedP256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
- ett_ieee1609dot2_T_uncompressed, T_uncompressed_sequence);
+ ett_ieee1609dot2_T_uncompressedP256, T_uncompressedP256_sequence);
return offset;
}
@@ -779,7 +815,7 @@ static const value_string ieee1609dot2_EccP256CurvePoint_vals[] = {
{ 1, "fill" },
{ 2, "compressed-y-0" },
{ 3, "compressed-y-1" },
- { 4, "uncompressed" },
+ { 4, "uncompressedP256" },
{ 0, NULL }
};
@@ -788,7 +824,7 @@ static const oer_choice_t EccP256CurvePoint_choice[] = {
{ 1, &hf_ieee1609dot2_fill , ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_NULL },
{ 2, &hf_ieee1609dot2_compressed_y_0, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_OCTET_STRING_SIZE_32 },
{ 3, &hf_ieee1609dot2_compressed_y_1, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_OCTET_STRING_SIZE_32 },
- { 4, &hf_ieee1609dot2_uncompressed, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_T_uncompressed },
+ { 4, &hf_ieee1609dot2_uncompressedP256, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_T_uncompressedP256 },
{ 0, NULL, 0, NULL }
};
@@ -803,8 +839,8 @@ dissect_ieee1609dot2_EccP256CurvePoint(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static const oer_sequence_t EcdsaP256Signature_sequence[] = {
- { &hf_ieee1609dot2_r , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_EccP256CurvePoint },
- { &hf_ieee1609dot2_s , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_32 },
+ { &hf_ieee1609dot2_rSig , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_EccP256CurvePoint },
+ { &hf_ieee1609dot2_sSig , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_32 },
{ NULL, 0, 0, NULL }
};
@@ -817,15 +853,85 @@ dissect_ieee1609dot2_EcdsaP256Signature(tvbuff_t *tvb _U_, int offset _U_, asn1_
}
+
+static int
+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_) {
+ offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
+ 48, 48, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const oer_sequence_t T_uncompressedP384_sequence[] = {
+ { &hf_ieee1609dot2_eccp384cpX, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_48 },
+ { &hf_ieee1609dot2_eccp384cpY, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_48 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_ieee1609dot2_T_uncompressedP384(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
+ ett_ieee1609dot2_T_uncompressedP384, T_uncompressedP384_sequence);
+
+ return offset;
+}
+
+
+static const value_string ieee1609dot2_EccP384CurvePoint_vals[] = {
+ { 0, "x-only" },
+ { 1, "fill" },
+ { 2, "compressed-y-0" },
+ { 3, "compressed-y-1" },
+ { 4, "uncompressedP384" },
+ { 0, NULL }
+};
+
+static const oer_choice_t EccP384CurvePoint_choice[] = {
+ { 0, &hf_ieee1609dot2_eccp384cpXOnly, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_OCTET_STRING_SIZE_48 },
+ { 1, &hf_ieee1609dot2_fill , ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_NULL },
+ { 2, &hf_ieee1609dot2_eccp384cpCompressed_y_0, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_OCTET_STRING_SIZE_48 },
+ { 3, &hf_ieee1609dot2_eccp384cpCompressed_y_1, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_OCTET_STRING_SIZE_48 },
+ { 4, &hf_ieee1609dot2_uncompressedP384, ASN1_NO_EXTENSIONS , dissect_ieee1609dot2_T_uncompressedP384 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_ieee1609dot2_EccP384CurvePoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_choice(tvb, offset, actx, tree, hf_index,
+ ett_ieee1609dot2_EccP384CurvePoint, EccP384CurvePoint_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const oer_sequence_t EcdsaP384Signature_sequence[] = {
+ { &hf_ieee1609dot2_ecdsap384RSig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_EccP384CurvePoint },
+ { &hf_ieee1609dot2_ecdsap384SSig, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_48 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_ieee1609dot2_EcdsaP384Signature(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
+ ett_ieee1609dot2_EcdsaP384Signature, EcdsaP384Signature_sequence);
+
+ return offset;
+}
+
+
static const value_string ieee1609dot2_Signature_vals[] = {
{ 0, "ecdsaNistP256Signature" },
{ 1, "ecdsaBrainpoolP256r1Signature" },
+ { 2, "ecdsaBrainpoolP384r1Signature" },
{ 0, NULL }
};
static const oer_choice_t Signature_choice[] = {
{ 0, &hf_ieee1609dot2_ecdsaNistP256Signature, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EcdsaP256Signature },
{ 1, &hf_ieee1609dot2_ecdsaBrainpoolP256r1Signature, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EcdsaP256Signature },
+ { 2, &hf_ieee1609dot2_ecdsaBrainpoolP384r1Signature, ASN1_NOT_EXTENSION_ROOT, dissect_ieee1609dot2_EcdsaP384Signature },
{ 0, NULL, 0, NULL }
};
@@ -856,6 +962,7 @@ dissect_ieee1609dot2_SymmAlgorithm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const value_string ieee1609dot2_HashAlgorithm_vals[] = {
{ 0, "sha256" },
+ { 1, "sha384" },
{ 0, NULL }
};
@@ -863,7 +970,7 @@ static const value_string ieee1609dot2_HashAlgorithm_vals[] = {
static int
dissect_ieee1609dot2_HashAlgorithm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_oer_enumerated(tvb, offset, actx, tree, hf_index,
- 1, NULL, TRUE, 0, NULL);
+ 1, NULL, TRUE, 1, NULL);
return offset;
}
@@ -977,12 +1084,14 @@ dissect_ieee1609dot2_EncryptionKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const value_string ieee1609dot2_PublicVerificationKey_vals[] = {
{ 0, "ecdsaNistP256" },
{ 1, "ecdsaBrainpoolP256r1" },
+ { 2, "ecdsaBrainpoolP384r1" },
{ 0, NULL }
};
static const oer_choice_t PublicVerificationKey_choice[] = {
{ 0, &hf_ieee1609dot2_ecdsaNistP256, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EccP256CurvePoint },
{ 1, &hf_ieee1609dot2_ecdsaBrainpoolP256r1, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EccP256CurvePoint },
+ { 2, &hf_ieee1609dot2_ecdsaBrainpoolP384r1, ASN1_NOT_EXTENSION_ROOT, dissect_ieee1609dot2_EccP384CurvePoint },
{ 0, NULL, 0, NULL }
};
@@ -1078,8 +1187,8 @@ dissect_ieee1609dot2_Psid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U
static int
-dissect_ieee1609dot2_T_psid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 84 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
+dissect_ieee1609dot2_T_psPsid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 106 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
offset = dissect_oer_constrained_integer_64b_no_ub(tvb, offset, actx, tree, hf_index,
0U, NO_BOUND, &((ieee1609_private_data_t*)actx->private_data)->psidssp, FALSE);
@@ -1092,7 +1201,7 @@ dissect_ieee1609dot2_T_psid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx
static int
dissect_ieee1609dot2_T_opaque(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 88 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
+#line 110 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
tvbuff_t *ssp;
ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;
@@ -1110,13 +1219,25 @@ dissect_ieee1609dot2_T_opaque(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
}
+
+static int
+dissect_ieee1609dot2_BitmapSsp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
+ 0, 31, FALSE, NULL);
+
+ return offset;
+}
+
+
static const value_string ieee1609dot2_ServiceSpecificPermissions_vals[] = {
{ 0, "opaque" },
+ { 1, "bitmapSsp" },
{ 0, NULL }
};
static const oer_choice_t ServiceSpecificPermissions_choice[] = {
{ 0, &hf_ieee1609dot2_opaque , ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_T_opaque },
+ { 1, &hf_ieee1609dot2_bitmapSsp, ASN1_NOT_EXTENSION_ROOT, dissect_ieee1609dot2_BitmapSsp },
{ 0, NULL, 0, NULL }
};
@@ -1131,7 +1252,7 @@ dissect_ieee1609dot2_ServiceSpecificPermissions(tvbuff_t *tvb _U_, int offset _U
static const oer_sequence_t PsidSsp_sequence[] = {
- { &hf_ieee1609dot2_psid , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_T_psid },
+ { &hf_ieee1609dot2_psPsid , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_T_psPsid },
{ &hf_ieee1609dot2_ssp , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ieee1609dot2_ServiceSpecificPermissions },
{ NULL, 0, 0, NULL }
};
@@ -1182,15 +1303,42 @@ dissect_ieee1609dot2_SequenceOfOctetString(tvbuff_t *tvb _U_, int offset _U_, as
}
+
+static int
+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_) {
+ offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 32, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const oer_sequence_t BitmapSspRange_sequence[] = {
+ { &hf_ieee1609dot2_sspValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_1_32 },
+ { &hf_ieee1609dot2_sspBitmask, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_OCTET_STRING_SIZE_1_32 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_ieee1609dot2_BitmapSspRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
+ ett_ieee1609dot2_BitmapSspRange, BitmapSspRange_sequence);
+
+ return offset;
+}
+
+
static const value_string ieee1609dot2_SspRange_vals[] = {
{ 0, "opaque" },
{ 1, "all" },
+ { 2, "bitmapSspRange" },
{ 0, NULL }
};
static const oer_choice_t SspRange_choice[] = {
- { 0, &hf_ieee1609dot2_opaque_01, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_SequenceOfOctetString },
+ { 0, &hf_ieee1609dot2_srRange, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_SequenceOfOctetString },
{ 1, &hf_ieee1609dot2_all , ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_NULL },
+ { 2, &hf_ieee1609dot2_bitmapSspRange, ASN1_NOT_EXTENSION_ROOT, dissect_ieee1609dot2_BitmapSspRange },
{ 0, NULL, 0, NULL }
};
@@ -1205,7 +1353,7 @@ dissect_ieee1609dot2_SspRange(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act
static const oer_sequence_t PsidSspRange_sequence[] = {
- { &hf_ieee1609dot2_psid_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Psid },
+ { &hf_ieee1609dot2_psid , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Psid },
{ &hf_ieee1609dot2_sspRange, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ieee1609dot2_SspRange },
{ NULL, 0, 0, NULL }
};
@@ -1318,7 +1466,7 @@ dissect_ieee1609dot2_GroupLinkageValue(tvbuff_t *tvb _U_, int offset _U_, asn1_c
static int
dissect_ieee1609dot2_T_unsecuredData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 51 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
+#line 73 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;
offset = dissect_oer_octet_string(tvb, offset, actx, tree, hf_index,
@@ -1343,8 +1491,8 @@ dissect_ieee1609dot2_T_unsecuredData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static int
-dissect_ieee1609dot2_T_psid_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 70 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
+dissect_ieee1609dot2_T_hiPsid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+#line 92 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
guint64 psid;
ieee1609_private_data_t *my_private_data = (ieee1609_private_data_t*)actx->private_data;
@@ -1377,41 +1525,6 @@ dissect_ieee1609dot2_MissingCrlIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn
}
-static const oer_sequence_t HeaderInfo_sequence[] = {
- { &hf_ieee1609dot2_psid_02, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_T_psid_01 },
- { &hf_ieee1609dot2_generationTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_Time64 },
- { &hf_ieee1609dot2_expiryTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_Time64 },
- { &hf_ieee1609dot2_generationLocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_ThreeDLocation },
- { &hf_ieee1609dot2_p2pcdLearningRequest, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_HashedId3 },
- { &hf_ieee1609dot2_missingCrlIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_MissingCrlIdentifier },
- { &hf_ieee1609dot2_encryptionKey, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_EncryptionKey },
- { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_ieee1609dot2_HeaderInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
- ett_ieee1609dot2_HeaderInfo, HeaderInfo_sequence);
-
- return offset;
-}
-
-
-static const oer_sequence_t ToBeSignedData_sequence[] = {
- { &hf_ieee1609dot2_payload, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SignedDataPayload },
- { &hf_ieee1609dot2_headerInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_HeaderInfo },
- { NULL, 0, 0, NULL }
-};
-
-static int
-dissect_ieee1609dot2_ToBeSignedData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
- ett_ieee1609dot2_ToBeSignedData, ToBeSignedData_sequence);
-
- return offset;
-}
-
-
static const value_string ieee1609dot2_CertificateType_vals[] = {
{ 0, "explicit" },
{ 1, "implicit" },
@@ -1431,12 +1544,14 @@ dissect_ieee1609dot2_CertificateType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx
static const value_string ieee1609dot2_IssuerIdentifier_vals[] = {
{ 0, "sha256AndDigest" },
{ 1, "self" },
+ { 2, "sha384AndDigest" },
{ 0, NULL }
};
static const oer_choice_t IssuerIdentifier_choice[] = {
{ 0, &hf_ieee1609dot2_sha256AndDigest, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_HashedId8 },
- { 1, &hf_ieee1609dot2_self_01, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_HashAlgorithm },
+ { 1, &hf_ieee1609dot2_iiSelf , ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_HashAlgorithm },
+ { 2, &hf_ieee1609dot2_sha384AndDigest, ASN1_NOT_EXTENSION_ROOT, dissect_ieee1609dot2_HashedId8 },
{ 0, NULL, 0, NULL }
};
@@ -1549,9 +1664,9 @@ dissect_ieee1609dot2_EndEntityType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t
static const oer_sequence_t PsidGroupPermissions_sequence[] = {
- { &hf_ieee1609dot2_appPermissions_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SubjectPermissions },
- { &hf_ieee1609dot2_minChainDepth, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ieee1609dot2_INTEGER },
- { &hf_ieee1609dot2_chainDepthRange, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ieee1609dot2_INTEGER },
+ { &hf_ieee1609dot2_subjectPermissions, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SubjectPermissions },
+ { &hf_ieee1609dot2_minChainLength, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ieee1609dot2_INTEGER },
+ { &hf_ieee1609dot2_chainLengthRange, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ieee1609dot2_INTEGER },
{ &hf_ieee1609dot2_eeType , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ieee1609dot2_EndEntityType },
{ NULL, 0, 0, NULL }
};
@@ -1605,13 +1720,13 @@ static const oer_sequence_t ToBeSignedCertificate_sequence[] = {
{ &hf_ieee1609dot2_cracaId, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_HashedId3 },
{ &hf_ieee1609dot2_crlSeries, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_CrlSeries },
{ &hf_ieee1609dot2_validityPeriod, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_ValidityPeriod },
- { &hf_ieee1609dot2_region_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_GeographicRegion },
+ { &hf_ieee1609dot2_region , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_GeographicRegion },
{ &hf_ieee1609dot2_assuranceLevel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_SubjectAssurance },
{ &hf_ieee1609dot2_appPermissions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_SequenceOfPsidSsp },
{ &hf_ieee1609dot2_certIssuePermissions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_SequenceOfPsidGroupPermissions },
{ &hf_ieee1609dot2_certRequestPermissions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_SequenceOfPsidGroupPermissions },
{ &hf_ieee1609dot2_canRequestRollover, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_NULL },
- { &hf_ieee1609dot2_encryptionKey_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_PublicEncryptionKey },
+ { &hf_ieee1609dot2_tbscEncryptionKey, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_PublicEncryptionKey },
{ &hf_ieee1609dot2_verifyKeyIndicator, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_VerificationKeyIndicator },
{ NULL, 0, 0, NULL }
};
@@ -1652,6 +1767,43 @@ dissect_ieee1609dot2_Certificate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *
}
+static const oer_sequence_t HeaderInfo_sequence[] = {
+ { &hf_ieee1609dot2_hiPsid , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_T_hiPsid },
+ { &hf_ieee1609dot2_generationTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_Time64 },
+ { &hf_ieee1609dot2_expiryTime, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_Time64 },
+ { &hf_ieee1609dot2_generationLocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_ThreeDLocation },
+ { &hf_ieee1609dot2_p2pcdLearningRequest, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_HashedId3 },
+ { &hf_ieee1609dot2_missingCrlIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_MissingCrlIdentifier },
+ { &hf_ieee1609dot2_encryptionKey, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ieee1609dot2_EncryptionKey },
+ { &hf_ieee1609dot2_inlineP2pcdRequest, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ieee1609dot2_SequenceOfHashedId3 },
+ { &hf_ieee1609dot2_requestedCertificate, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ieee1609dot2_Certificate },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_ieee1609dot2_HeaderInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
+ ett_ieee1609dot2_HeaderInfo, HeaderInfo_sequence);
+
+ return offset;
+}
+
+
+static const oer_sequence_t ToBeSignedData_sequence[] = {
+ { &hf_ieee1609dot2_payload, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SignedDataPayload },
+ { &hf_ieee1609dot2_headerInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_HeaderInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_ieee1609dot2_ToBeSignedData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
+ ett_ieee1609dot2_ToBeSignedData, ToBeSignedData_sequence);
+
+ return offset;
+}
+
+
static const oer_sequence_t SequenceOfCertificate_sequence_of[1] = {
{ &hf_ieee1609dot2_SequenceOfCertificate_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_Certificate },
};
@@ -1675,7 +1827,7 @@ static const value_string ieee1609dot2_SignerIdentifier_vals[] = {
static const oer_choice_t SignerIdentifier_choice[] = {
{ 0, &hf_ieee1609dot2_digest , ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_HashedId8 },
{ 1, &hf_ieee1609dot2_certificate, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_SequenceOfCertificate },
- { 2, &hf_ieee1609dot2_self , ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_NULL },
+ { 2, &hf_ieee1609dot2_siSelf , ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_NULL },
{ 0, NULL, 0, NULL }
};
@@ -1762,7 +1914,7 @@ dissect_ieee1609dot2_SymmetricCiphertext(tvbuff_t *tvb _U_, int offset _U_, asn1
static const oer_sequence_t SymmRecipientInfo_sequence[] = {
{ &hf_ieee1609dot2_recipientId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_HashedId8 },
- { &hf_ieee1609dot2_encKey , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SymmetricCiphertext },
+ { &hf_ieee1609dot2_sriEncKey, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_SymmetricCiphertext },
{ NULL, 0, 0, NULL }
};
@@ -1782,8 +1934,8 @@ static const value_string ieee1609dot2_EncryptedDataEncryptionKey_vals[] = {
};
static const oer_choice_t EncryptedDataEncryptionKey_choice[] = {
- { 0, &hf_ieee1609dot2_eciesNistP256_01, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EciesP256EncryptedKey },
- { 1, &hf_ieee1609dot2_eciesBrainpoolP256r1_01, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EciesP256EncryptedKey },
+ { 0, &hf_ieee1609dot2_edeEciesNistP256, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EciesP256EncryptedKey },
+ { 1, &hf_ieee1609dot2_edekEciesBrainpoolP256r1, ASN1_EXTENSION_ROOT , dissect_ieee1609dot2_EciesP256EncryptedKey },
{ 0, NULL, 0, NULL }
};
@@ -1799,7 +1951,7 @@ dissect_ieee1609dot2_EncryptedDataEncryptionKey(tvbuff_t *tvb _U_, int offset _U
static const oer_sequence_t PKRecipientInfo_sequence[] = {
{ &hf_ieee1609dot2_recipientId, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_HashedId8 },
- { &hf_ieee1609dot2_encKey_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_EncryptedDataEncryptionKey },
+ { &hf_ieee1609dot2_encKey , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ieee1609dot2_EncryptedDataEncryptionKey },
{ NULL, 0, 0, NULL }
};
@@ -1902,7 +2054,7 @@ static const oer_sequence_t Ieee1609Dot2Data_sequence[] = {
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_) {
-#line 47 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
+#line 69 "./asn1/ieee1609dot2/ieee1609dot2.cnf"
actx->private_data = (void*)wmem_new0(wmem_packet_scope(), ieee1609_private_data_t);
offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index,
@@ -1981,6 +2133,10 @@ void proto_register_ieee1609dot2(void) {
{ "Uint16", "ieee1609dot2.Uint16",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
+ { &hf_ieee1609dot2_SequenceOfHashedId3_item,
+ { "HashedId3", "ieee1609dot2.HashedId3",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_ieee1609dot2_start,
{ "start", "ieee1609dot2.start",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -2060,11 +2216,11 @@ void proto_register_ieee1609dot2(void) {
{ &hf_ieee1609dot2_latitude,
{ "latitude", "ieee1609dot2.latitude",
FT_INT32, BASE_DEC, VALS(ieee1609dot2_NinetyDegreeInt_vals), 0,
- NULL, HFILL }},
+ "SecLatitude", HFILL }},
{ &hf_ieee1609dot2_longitude,
{ "longitude", "ieee1609dot2.longitude",
FT_INT32, BASE_DEC, VALS(ieee1609dot2_OneEightyDegreeInt_vals), 0,
- NULL, HFILL }},
+ "SecLongitude", HFILL }},
{ &hf_ieee1609dot2_countryOnly,
{ "countryOnly", "ieee1609dot2.countryOnly",
FT_UINT32, BASE_DEC, NULL, 0,
@@ -2093,7 +2249,7 @@ void proto_register_ieee1609dot2(void) {
{ "regionAndSubregions", "ieee1609dot2.regionAndSubregions",
FT_UINT32, BASE_DEC, NULL, 0,
"SequenceOfRegionAndSubregions", HFILL }},
- { &hf_ieee1609dot2_region,
+ { &hf_ieee1609dot2_rasRegion,
{ "region", "ieee1609dot2.region",
FT_UINT32, BASE_DEC, NULL, 0,
"Uint8", HFILL }},
@@ -2108,7 +2264,7 @@ void proto_register_ieee1609dot2(void) {
{ &hf_ieee1609dot2_elevation,
{ "elevation", "ieee1609dot2.elevation",
FT_UINT32, BASE_DEC, NULL, 0,
- NULL, HFILL }},
+ "SecElevation", HFILL }},
{ &hf_ieee1609dot2_ecdsaNistP256Signature,
{ "ecdsaNistP256Signature", "ieee1609dot2.ecdsaNistP256Signature_element",
FT_NONE, BASE_NONE, NULL, 0,
@@ -2117,14 +2273,26 @@ void proto_register_ieee1609dot2(void) {
{ "ecdsaBrainpoolP256r1Signature", "ieee1609dot2.ecdsaBrainpoolP256r1Signature_element",
FT_NONE, BASE_NONE, NULL, 0,
"EcdsaP256Signature", HFILL }},
- { &hf_ieee1609dot2_r,
- { "r", "ieee1609dot2.r",
+ { &hf_ieee1609dot2_ecdsaBrainpoolP384r1Signature,
+ { "ecdsaBrainpoolP384r1Signature", "ieee1609dot2.ecdsaBrainpoolP384r1Signature_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EcdsaP384Signature", HFILL }},
+ { &hf_ieee1609dot2_rSig,
+ { "rSig", "ieee1609dot2.rSig",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_EccP256CurvePoint_vals), 0,
"EccP256CurvePoint", HFILL }},
- { &hf_ieee1609dot2_s,
- { "s", "ieee1609dot2.s",
+ { &hf_ieee1609dot2_sSig,
+ { "sSig", "ieee1609dot2.sSig",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_32", HFILL }},
+ { &hf_ieee1609dot2_ecdsap384RSig,
+ { "rSig", "ieee1609dot2.rSig",
+ FT_UINT32, BASE_DEC, VALS(ieee1609dot2_EccP384CurvePoint_vals), 0,
+ "EccP384CurvePoint", HFILL }},
+ { &hf_ieee1609dot2_ecdsap384SSig,
+ { "sSig", "ieee1609dot2.sSig",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_48", HFILL }},
{ &hf_ieee1609dot2_x_only,
{ "x-only", "ieee1609dot2.x_only",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -2141,8 +2309,8 @@ void proto_register_ieee1609dot2(void) {
{ "compressed-y-1", "ieee1609dot2.compressed_y_1",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_32", HFILL }},
- { &hf_ieee1609dot2_uncompressed,
- { "uncompressed", "ieee1609dot2.uncompressed_element",
+ { &hf_ieee1609dot2_uncompressedP256,
+ { "uncompressedP256", "ieee1609dot2.uncompressedP256_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_ieee1609dot2_x,
@@ -2153,6 +2321,30 @@ void proto_register_ieee1609dot2(void) {
{ "y", "ieee1609dot2.y",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_32", HFILL }},
+ { &hf_ieee1609dot2_eccp384cpXOnly,
+ { "x-only", "ieee1609dot2.x_only",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_48", HFILL }},
+ { &hf_ieee1609dot2_eccp384cpCompressed_y_0,
+ { "compressed-y-0", "ieee1609dot2.compressed_y_0",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_48", HFILL }},
+ { &hf_ieee1609dot2_eccp384cpCompressed_y_1,
+ { "compressed-y-1", "ieee1609dot2.compressed_y_1",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_48", HFILL }},
+ { &hf_ieee1609dot2_uncompressedP384,
+ { "uncompressedP384", "ieee1609dot2.uncompressedP384_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_ieee1609dot2_eccp384cpX,
+ { "x", "ieee1609dot2.x",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_48", HFILL }},
+ { &hf_ieee1609dot2_eccp384cpY,
+ { "y", "ieee1609dot2.y",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_48", HFILL }},
{ &hf_ieee1609dot2_v,
{ "v", "ieee1609dot2.v",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_EccP256CurvePoint_vals), 0,
@@ -2197,14 +2389,18 @@ void proto_register_ieee1609dot2(void) {
{ "ecdsaBrainpoolP256r1", "ieee1609dot2.ecdsaBrainpoolP256r1",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_EccP256CurvePoint_vals), 0,
"EccP256CurvePoint", HFILL }},
+ { &hf_ieee1609dot2_ecdsaBrainpoolP384r1,
+ { "ecdsaBrainpoolP384r1", "ieee1609dot2.ecdsaBrainpoolP384r1",
+ FT_UINT32, BASE_DEC, VALS(ieee1609dot2_EccP384CurvePoint_vals), 0,
+ "EccP384CurvePoint", HFILL }},
{ &hf_ieee1609dot2_aes128Ccm,
{ "aes128Ccm", "ieee1609dot2.aes128Ccm",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_16", HFILL }},
- { &hf_ieee1609dot2_psid,
+ { &hf_ieee1609dot2_psPsid,
{ "psid", "ieee1609dot2.psid",
FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(ieee1609dot2_Psid_vals), 0,
- NULL, HFILL }},
+ "T_psPsid", HFILL }},
{ &hf_ieee1609dot2_ssp,
{ "ssp", "ieee1609dot2.ssp",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_ServiceSpecificPermissions_vals), 0,
@@ -2217,7 +2413,11 @@ void proto_register_ieee1609dot2(void) {
{ "opaque", "ieee1609dot2.opaque",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_ieee1609dot2_psid_01,
+ { &hf_ieee1609dot2_bitmapSsp,
+ { "bitmapSsp", "ieee1609dot2.bitmapSsp",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_ieee1609dot2_psid,
{ "psid", "ieee1609dot2.psid",
FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(ieee1609dot2_Psid_vals), 0,
NULL, HFILL }},
@@ -2229,7 +2429,7 @@ void proto_register_ieee1609dot2(void) {
{ "PsidSspRange", "ieee1609dot2.PsidSspRange_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_ieee1609dot2_opaque_01,
+ { &hf_ieee1609dot2_srRange,
{ "opaque", "ieee1609dot2.opaque",
FT_UINT32, BASE_DEC, NULL, 0,
"SequenceOfOctetString", HFILL }},
@@ -2237,6 +2437,18 @@ void proto_register_ieee1609dot2(void) {
{ "all", "ieee1609dot2.all_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_ieee1609dot2_bitmapSspRange,
+ { "bitmapSspRange", "ieee1609dot2.bitmapSspRange_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_ieee1609dot2_sspValue,
+ { "sspValue", "ieee1609dot2.sspValue",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1_32", HFILL }},
+ { &hf_ieee1609dot2_sspBitmask,
+ { "sspBitmask", "ieee1609dot2.sspBitmask",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1_32", HFILL }},
{ &hf_ieee1609dot2_SequenceOfOctetString_item,
{ "SequenceOfOctetString item", "ieee1609dot2.SequenceOfOctetString_item",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -2305,7 +2517,7 @@ void proto_register_ieee1609dot2(void) {
{ "certificate", "ieee1609dot2.certificate",
FT_UINT32, BASE_DEC, NULL, 0,
"SequenceOfCertificate", HFILL }},
- { &hf_ieee1609dot2_self,
+ { &hf_ieee1609dot2_siSelf,
{ "self", "ieee1609dot2.self_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
@@ -2321,10 +2533,10 @@ void proto_register_ieee1609dot2(void) {
{ "sha256HashedData", "ieee1609dot2.sha256HashedData",
FT_BYTES, BASE_NONE, NULL, 0,
"OCTET_STRING_SIZE_32", HFILL }},
- { &hf_ieee1609dot2_psid_02,
+ { &hf_ieee1609dot2_hiPsid,
{ "psid", "ieee1609dot2.psid",
FT_UINT64, BASE_DEC|BASE_VAL64_STRING, VALS64(ieee1609dot2_Psid_vals), 0,
- "T_psid_01", HFILL }},
+ "T_hiPsid", HFILL }},
{ &hf_ieee1609dot2_generationTime,
{ "generationTime", "ieee1609dot2.generationTime",
FT_UINT64, BASE_DEC, NULL, 0,
@@ -2349,6 +2561,14 @@ void proto_register_ieee1609dot2(void) {
{ "encryptionKey", "ieee1609dot2.encryptionKey",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_EncryptionKey_vals), 0,
NULL, HFILL }},
+ { &hf_ieee1609dot2_inlineP2pcdRequest,
+ { "inlineP2pcdRequest", "ieee1609dot2.inlineP2pcdRequest",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SequenceOfHashedId3", HFILL }},
+ { &hf_ieee1609dot2_requestedCertificate,
+ { "requestedCertificate", "ieee1609dot2.requestedCertificate_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Certificate", HFILL }},
{ &hf_ieee1609dot2_cracaId,
{ "cracaId", "ieee1609dot2.cracaId",
FT_BYTES, BASE_NONE, NULL, 0,
@@ -2393,19 +2613,19 @@ void proto_register_ieee1609dot2(void) {
{ "recipientId", "ieee1609dot2.recipientId",
FT_BYTES, BASE_NONE, NULL, 0,
"HashedId8", HFILL }},
- { &hf_ieee1609dot2_encKey,
+ { &hf_ieee1609dot2_sriEncKey,
{ "encKey", "ieee1609dot2.encKey",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_SymmetricCiphertext_vals), 0,
"SymmetricCiphertext", HFILL }},
- { &hf_ieee1609dot2_encKey_01,
+ { &hf_ieee1609dot2_encKey,
{ "encKey", "ieee1609dot2.encKey",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_EncryptedDataEncryptionKey_vals), 0,
"EncryptedDataEncryptionKey", HFILL }},
- { &hf_ieee1609dot2_eciesNistP256_01,
+ { &hf_ieee1609dot2_edeEciesNistP256,
{ "eciesNistP256", "ieee1609dot2.eciesNistP256_element",
FT_NONE, BASE_NONE, NULL, 0,
"EciesP256EncryptedKey", HFILL }},
- { &hf_ieee1609dot2_eciesBrainpoolP256r1_01,
+ { &hf_ieee1609dot2_edekEciesBrainpoolP256r1,
{ "eciesBrainpoolP256r1", "ieee1609dot2.eciesBrainpoolP256r1_element",
FT_NONE, BASE_NONE, NULL, 0,
"EciesP256EncryptedKey", HFILL }},
@@ -2445,10 +2665,14 @@ void proto_register_ieee1609dot2(void) {
{ "sha256AndDigest", "ieee1609dot2.sha256AndDigest",
FT_BYTES, BASE_NONE, NULL, 0,
"HashedId8", HFILL }},
- { &hf_ieee1609dot2_self_01,
+ { &hf_ieee1609dot2_iiSelf,
{ "self", "ieee1609dot2.self",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_HashAlgorithm_vals), 0,
"HashAlgorithm", HFILL }},
+ { &hf_ieee1609dot2_sha384AndDigest,
+ { "sha384AndDigest", "ieee1609dot2.sha384AndDigest",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "HashedId8", HFILL }},
{ &hf_ieee1609dot2_id,
{ "id", "ieee1609dot2.id",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_CertificateId_vals), 0,
@@ -2457,7 +2681,7 @@ void proto_register_ieee1609dot2(void) {
{ "validityPeriod", "ieee1609dot2.validityPeriod_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_ieee1609dot2_region_01,
+ { &hf_ieee1609dot2_region,
{ "region", "ieee1609dot2.region",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_GeographicRegion_vals), 0,
"GeographicRegion", HFILL }},
@@ -2481,7 +2705,7 @@ void proto_register_ieee1609dot2(void) {
{ "canRequestRollover", "ieee1609dot2.canRequestRollover_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
- { &hf_ieee1609dot2_encryptionKey_01,
+ { &hf_ieee1609dot2_tbscEncryptionKey,
{ "encryptionKey", "ieee1609dot2.encryptionKey_element",
FT_NONE, BASE_NONE, NULL, 0,
"PublicEncryptionKey", HFILL }},
@@ -2517,16 +2741,16 @@ void proto_register_ieee1609dot2(void) {
{ "group-linkage-value", "ieee1609dot2.group_linkage_value_element",
FT_NONE, BASE_NONE, NULL, 0,
"GroupLinkageValue", HFILL }},
- { &hf_ieee1609dot2_appPermissions_01,
- { "appPermissions", "ieee1609dot2.appPermissions",
+ { &hf_ieee1609dot2_subjectPermissions,
+ { "subjectPermissions", "ieee1609dot2.subjectPermissions",
FT_UINT32, BASE_DEC, VALS(ieee1609dot2_SubjectPermissions_vals), 0,
- "SubjectPermissions", HFILL }},
- { &hf_ieee1609dot2_minChainDepth,
- { "minChainDepth", "ieee1609dot2.minChainDepth",
+ NULL, HFILL }},
+ { &hf_ieee1609dot2_minChainLength,
+ { "minChainLength", "ieee1609dot2.minChainLength",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER", HFILL }},
- { &hf_ieee1609dot2_chainDepthRange,
- { "chainDepthRange", "ieee1609dot2.chainDepthRange",
+ { &hf_ieee1609dot2_chainLengthRange,
+ { "chainLengthRange", "ieee1609dot2.chainLengthRange",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER", HFILL }},
{ &hf_ieee1609dot2_eeType,
@@ -2569,6 +2793,7 @@ void proto_register_ieee1609dot2(void) {
#line 1 "./asn1/ieee1609dot2/packet-ieee1609dot2-ettarr.c"
&ett_ieee1609dot2_SequenceOfUint8,
&ett_ieee1609dot2_SequenceOfUint16,
+ &ett_ieee1609dot2_SequenceOfHashedId3,
&ett_ieee1609dot2_ValidityPeriod,
&ett_ieee1609dot2_Duration,
&ett_ieee1609dot2_GeographicRegion,
@@ -2586,8 +2811,11 @@ void proto_register_ieee1609dot2(void) {
&ett_ieee1609dot2_ThreeDLocation,
&ett_ieee1609dot2_Signature,
&ett_ieee1609dot2_EcdsaP256Signature,
+ &ett_ieee1609dot2_EcdsaP384Signature,
&ett_ieee1609dot2_EccP256CurvePoint,
- &ett_ieee1609dot2_T_uncompressed,
+ &ett_ieee1609dot2_T_uncompressedP256,
+ &ett_ieee1609dot2_EccP384CurvePoint,
+ &ett_ieee1609dot2_T_uncompressedP384,
&ett_ieee1609dot2_EciesP256EncryptedKey,
&ett_ieee1609dot2_EncryptionKey,
&ett_ieee1609dot2_PublicEncryptionKey,
@@ -2600,6 +2828,7 @@ void proto_register_ieee1609dot2(void) {
&ett_ieee1609dot2_PsidSspRange,
&ett_ieee1609dot2_SequenceOfPsidSspRange,
&ett_ieee1609dot2_SspRange,
+ &ett_ieee1609dot2_BitmapSspRange,
&ett_ieee1609dot2_SequenceOfOctetString,
&ett_ieee1609dot2_GroupLinkageValue,
&ett_ieee1609dot2_SignedDataPayload,