diff options
author | Anders Broman <anders.broman@ericsson.com> | 2019-04-17 16:04:15 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2019-04-17 14:45:29 +0000 |
commit | 3b0aabc204ddb2f78f072af44387530aa5ce8bdc (patch) | |
tree | 374189f9e9671c48f8b671128c9a8045cc8beed4 /epan/dissectors | |
parent | 36ff99315139c19d586495d09fd9136c8b9bbb84 (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.asn | 520 | ||||
-rw-r--r-- | epan/dissectors/asn1/ieee1609dot2/IEEE1609dot2DataTypes.asn | 592 | ||||
-rw-r--r-- | epan/dissectors/asn1/ieee1609dot2/ieee1609dot2.cnf | 28 | ||||
-rw-r--r-- | epan/dissectors/packet-ieee1609dot2.c | 485 |
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, |