IEEE 1609.2: Update asn1 descriptions and add CAMP
This commit is contained in:
parent
4258c3a02f
commit
1d9ba7de54
@ -17,7 +17,9 @@ set( EXT_ASN_FILE_LIST
|
|||||||
|
|
||||||
set( ASN_FILE_LIST
|
set( ASN_FILE_LIST
|
||||||
IEEE1609dot2BaseTypes.asn
|
IEEE1609dot2BaseTypes.asn
|
||||||
IEEE1609dot2DataTypes.asn
|
Ieee1609Dot2CrlBaseTypes.asn
|
||||||
|
Ieee1609Dot2Crl.asn
|
||||||
|
Ieee1609Dot2.asn
|
||||||
IEEE1609dot12.asn
|
IEEE1609dot12.asn
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
|
-- https://standards.ieee.org/products-programs/regauth/psid/public/
|
||||||
IEEE1609dot12
|
IEEE1609dot12
|
||||||
|
|
||||||
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
||||||
IMPORTS
|
IMPORTS
|
||||||
Psid
|
Psid
|
||||||
FROM IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
|
FROM Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
|
||||||
standards-association-numbered-series-standards(2) wave-stds(1609)
|
standards-association-numbered-series-standards(2) wave-stds(1609)
|
||||||
dot2(2) base(1) base-types(2)}
|
dot2(2) base(1) base-types(2)}
|
||||||
;
|
;
|
||||||
@ -63,13 +64,12 @@ psid-road-and-lane-topology-service Psid ::= 138
|
|||||||
psid-infrastructure-to-vehicle-information-service Psid ::= 139 -- ISO-19321-ETSI-TS-103-301
|
psid-infrastructure-to-vehicle-information-service Psid ::= 139 -- ISO-19321-ETSI-TS-103-301
|
||||||
psid-traffic-light-control-requests-service Psid ::= 140 -- ISO-19091-ETSI-TS-103-301
|
psid-traffic-light-control-requests-service Psid ::= 140 -- ISO-19091-ETSI-TS-103-301
|
||||||
psid-geonetworking-management-communications Psid ::= 141 -- ETSI-EN-302-636-4-1
|
psid-geonetworking-management-communications Psid ::= 141 -- ETSI-EN-302-636-4-1
|
||||||
|
psid-certificate-revocation-list-application Psid ::= 256 -- IEEEE Std 1609.2 CAMP
|
||||||
psid-traffic-light-control-status-service Psid ::= 637 -- ISO-19091-ETSI-TS-103-301
|
psid-traffic-light-control-status-service Psid ::= 637 -- ISO-19091-ETSI-TS-103-301
|
||||||
psid-collective-perception-service Psid ::= 639 -- ETSI-TS-103-324
|
psid-collective-perception-service Psid ::= 639 -- ETSI-TS-103-324
|
||||||
|
|
||||||
-- 0x8e to 0xFF 0p80-09 to 0p80-7F Not allocated
|
-- 0x8e to 0xFF 0p80-09 to 0p80-7F Not allocated
|
||||||
|
|
||||||
psid-certificate-revocation-list-application Psid ::= 256 -- CAMP
|
|
||||||
|
|
||||||
-- 0x01-01 to 0x3E-7F 0p80-81 to 0pBD-FF Not allocated
|
-- 0x01-01 to 0x3E-7F 0p80-81 to 0pBD-FF Not allocated
|
||||||
-- 0x3E-80 to 0x40-1F 0pBE-00 to 0pBF-9F Reserved IEEE P1609 WG 416
|
-- 0x3E-80 to 0x40-1F 0pBE-00 to 0pBF-9F Reserved IEEE P1609 WG 416
|
||||||
-- 0x40-20 to 0x40-5F 0pBF-A0 to 0pBF-DF Private used IEEE P1609 WG 64
|
-- 0x40-20 to 0x40-5F 0pBF-A0 to 0pBF-DF Private used IEEE P1609 WG 64
|
||||||
|
@ -1,59 +1,57 @@
|
|||||||
IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
|
--***************************************************************************--
|
||||||
standards-association-numbered-series-standards(2) wave-stds(1609)
|
-- IEEE Std 1609.2: Base Data Types --
|
||||||
dot2(2) base(1) base-types(2) major-version-2(2)}
|
--***************************************************************************--
|
||||||
|
|
||||||
-- Minor version: 1
|
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) minor-version-4(4)}
|
||||||
--********************************************************************
|
|
||||||
-- IEEE P1609.2 Base Data Types
|
|
||||||
--
|
|
||||||
--********************************************************************
|
|
||||||
|
|
||||||
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
||||||
|
|
||||||
EXPORTS ALL;
|
--***************************************************************************--
|
||||||
|
-- Integer Types --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
|
Uint3 ::= INTEGER (0..7)
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
Uint8 ::= INTEGER (0..255)
|
||||||
--
|
|
||||||
-- Integers
|
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
Uint16 ::= INTEGER (0..65535)
|
||||||
|
|
||||||
Uint3 ::= INTEGER (0..7) -- (hex) 07
|
Uint32 ::= INTEGER (0..4294967295)
|
||||||
Uint8 ::= INTEGER (0..255) -- (hex) ff
|
|
||||||
Uint16 ::= INTEGER (0..65535) -- (hex) ff ff
|
Uint64 ::= INTEGER (0..18446744073709551615)
|
||||||
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
|
SequenceOfUint8 ::= SEQUENCE OF Uint8
|
||||||
|
|
||||||
SequenceOfUint16 ::= SEQUENCE OF Uint16
|
SequenceOfUint16 ::= SEQUENCE OF Uint16
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
--
|
|
||||||
-- OCTET STRING types
|
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
--***************************************************************************--
|
||||||
|
-- OCTET STRING Types --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
Opaque ::= OCTET STRING
|
Opaque ::= OCTET STRING
|
||||||
|
|
||||||
|
|
||||||
HashedId10 ::= OCTET STRING (SIZE(10))
|
|
||||||
HashedId8 ::= OCTET STRING (SIZE(8))
|
|
||||||
HashedId3 ::= OCTET STRING (SIZE(3))
|
HashedId3 ::= OCTET STRING (SIZE(3))
|
||||||
|
|
||||||
SequenceOfHashedId3 ::= SEQUENCE OF HashedId3
|
SequenceOfHashedId3 ::= SEQUENCE OF HashedId3
|
||||||
|
|
||||||
|
HashedId8 ::= OCTET STRING (SIZE(8))
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
HashedId10 ::= OCTET STRING (SIZE(10))
|
||||||
--
|
|
||||||
-- Time
|
HashedId32 ::= OCTET STRING (SIZE(32))
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
HashedId48 ::= OCTET STRING(SIZE(48))
|
||||||
|
|
||||||
|
|
||||||
|
--***************************************************************************--
|
||||||
|
-- Time Structures --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
Time32 ::= Uint32
|
Time32 ::= Uint32
|
||||||
|
|
||||||
Time64 ::= Uint64
|
Time64 ::= Uint64
|
||||||
|
|
||||||
ValidityPeriod ::= SEQUENCE {
|
ValidityPeriod ::= SEQUENCE {
|
||||||
@ -71,12 +69,10 @@ Duration ::= CHOICE {
|
|||||||
years Uint16
|
years Uint16
|
||||||
}
|
}
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
--
|
|
||||||
-- Location
|
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
--***************************************************************************--
|
||||||
|
-- Location Structures --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
GeographicRegion ::= CHOICE {
|
GeographicRegion ::= CHOICE {
|
||||||
circularRegion CircularRegion,
|
circularRegion CircularRegion,
|
||||||
@ -98,7 +94,7 @@ RectangularRegion ::= SEQUENCE {
|
|||||||
|
|
||||||
SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion
|
SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion
|
||||||
|
|
||||||
PolygonalRegion ::= SEQUENCE SIZE(3..MAX) OF TwoDLocation
|
PolygonalRegion ::= SEQUENCE SIZE (3..MAX) OF TwoDLocation
|
||||||
|
|
||||||
TwoDLocation ::= SEQUENCE {
|
TwoDLocation ::= SEQUENCE {
|
||||||
latitude Latitude,
|
latitude Latitude,
|
||||||
@ -106,23 +102,26 @@ TwoDLocation ::= SEQUENCE {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IdentifiedRegion ::= CHOICE {
|
IdentifiedRegion ::= CHOICE {
|
||||||
countryOnly CountryOnly,
|
countryOnly UnCountryId,
|
||||||
countryAndRegions CountryAndRegions,
|
countryAndRegions CountryAndRegions,
|
||||||
countryAndSubregions CountryAndSubregions,
|
countryAndSubregions CountryAndSubregions,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion
|
SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion
|
||||||
|
|
||||||
CountryOnly ::= Uint16
|
UnCountryId ::= Uint16
|
||||||
|
|
||||||
|
CountryOnly ::= UnCountryId
|
||||||
|
|
||||||
CountryAndRegions ::= SEQUENCE {
|
CountryAndRegions ::= SEQUENCE {
|
||||||
countryOnly CountryOnly,
|
countryOnly UnCountryId,
|
||||||
regions SequenceOfUint8
|
regions SequenceOfUint8
|
||||||
}
|
}
|
||||||
|
|
||||||
CountryAndSubregions ::= SEQUENCE {
|
CountryAndSubregions ::= SEQUENCE {
|
||||||
country CountryOnly,
|
countryOnly UnCountryId,
|
||||||
regionAndSubregions SequenceOfRegionAndSubregions
|
regionAndSubregions SequenceOfRegionAndSubregions
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,8 +139,10 @@ ThreeDLocation ::= SEQUENCE {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Latitude ::= NinetyDegreeInt
|
Latitude ::= NinetyDegreeInt
|
||||||
|
|
||||||
Longitude ::= OneEightyDegreeInt
|
Longitude ::= OneEightyDegreeInt
|
||||||
Elevation ::= ElevInt
|
|
||||||
|
Elevation ::= Uint16
|
||||||
|
|
||||||
NinetyDegreeInt ::= INTEGER {
|
NinetyDegreeInt ::= INTEGER {
|
||||||
min (-900000000),
|
min (-900000000),
|
||||||
@ -149,7 +150,8 @@ NinetyDegreeInt ::= INTEGER {
|
|||||||
unknown (900000001)
|
unknown (900000001)
|
||||||
} (-900000000..900000001)
|
} (-900000000..900000001)
|
||||||
|
|
||||||
KnownLatitude ::= NinetyDegreeInt (min..max) -- Minus 90deg to +90deg in microdegree intervals
|
KnownLatitude ::= NinetyDegreeInt (min..max)
|
||||||
|
|
||||||
UnknownLatitude ::= NinetyDegreeInt (unknown)
|
UnknownLatitude ::= NinetyDegreeInt (unknown)
|
||||||
|
|
||||||
OneEightyDegreeInt ::= INTEGER {
|
OneEightyDegreeInt ::= INTEGER {
|
||||||
@ -159,21 +161,21 @@ OneEightyDegreeInt ::= INTEGER {
|
|||||||
} (-1799999999..1800000001)
|
} (-1799999999..1800000001)
|
||||||
|
|
||||||
KnownLongitude ::= OneEightyDegreeInt (min..max)
|
KnownLongitude ::= OneEightyDegreeInt (min..max)
|
||||||
|
|
||||||
UnknownLongitude ::= OneEightyDegreeInt (unknown)
|
UnknownLongitude ::= OneEightyDegreeInt (unknown)
|
||||||
|
|
||||||
ElevInt ::= Uint16 -- Range is from -4096 to 61439 in units of one-tenth of a meter
|
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
--***************************************************************************--
|
||||||
--
|
-- Crypto Structures --
|
||||||
-- Crypto
|
--***************************************************************************--
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
|
|
||||||
Signature ::= CHOICE {
|
Signature ::= CHOICE {
|
||||||
ecdsaNistP256Signature EcdsaP256Signature,
|
ecdsaNistP256Signature EcdsaP256Signature,
|
||||||
ecdsaBrainpoolP256r1Signature EcdsaP256Signature,
|
ecdsaBrainpoolP256r1Signature EcdsaP256Signature,
|
||||||
...,
|
...,
|
||||||
ecdsaBrainpoolP384r1Signature EcdsaP384Signature
|
ecdsaBrainpoolP384r1Signature EcdsaP384Signature,
|
||||||
|
ecdsaNistP384Signature EcdsaP384Signature,
|
||||||
|
sm2Signature EcsigP256Signature
|
||||||
}
|
}
|
||||||
|
|
||||||
EcdsaP256Signature ::= SEQUENCE {
|
EcdsaP256Signature ::= SEQUENCE {
|
||||||
@ -186,9 +188,14 @@ EcdsaP384Signature ::= SEQUENCE {
|
|||||||
sSig OCTET STRING (SIZE (48))
|
sSig OCTET STRING (SIZE (48))
|
||||||
}
|
}
|
||||||
|
|
||||||
EccP256CurvePoint ::= CHOICE {
|
EcsigP256Signature ::= SEQUENCE {
|
||||||
|
rSig OCTET STRING (SIZE (32)),
|
||||||
|
sSig OCTET STRING (SIZE (32))
|
||||||
|
}
|
||||||
|
|
||||||
|
EccP256CurvePoint::= CHOICE {
|
||||||
x-only OCTET STRING (SIZE (32)),
|
x-only OCTET STRING (SIZE (32)),
|
||||||
fill NULL, -- consistency with 1363 / X9.62
|
fill NULL,
|
||||||
compressed-y-0 OCTET STRING (SIZE (32)),
|
compressed-y-0 OCTET STRING (SIZE (32)),
|
||||||
compressed-y-1 OCTET STRING (SIZE (32)),
|
compressed-y-1 OCTET STRING (SIZE (32)),
|
||||||
uncompressedP256 SEQUENCE {
|
uncompressedP256 SEQUENCE {
|
||||||
@ -199,7 +206,7 @@ EccP256CurvePoint ::= CHOICE {
|
|||||||
|
|
||||||
EccP384CurvePoint::= CHOICE {
|
EccP384CurvePoint::= CHOICE {
|
||||||
x-only OCTET STRING (SIZE (48)),
|
x-only OCTET STRING (SIZE (48)),
|
||||||
fill NULL, -- consistency w 1363 / X9.62
|
fill NULL,
|
||||||
compressed-y-0 OCTET STRING (SIZE (48)),
|
compressed-y-0 OCTET STRING (SIZE (48)),
|
||||||
compressed-y-1 OCTET STRING (SIZE (48)),
|
compressed-y-1 OCTET STRING (SIZE (48)),
|
||||||
uncompressedP384 SEQUENCE {
|
uncompressedP384 SEQUENCE {
|
||||||
@ -208,16 +215,17 @@ EccP384CurvePoint::= CHOICE {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SymmAlgorithm ::= ENUMERATED {
|
SymmAlgorithm ::= ENUMERATED {
|
||||||
aes128Ccm,
|
aes128Ccm,
|
||||||
...
|
...,
|
||||||
|
sm4Ccm
|
||||||
}
|
}
|
||||||
|
|
||||||
HashAlgorithm ::= ENUMERATED {
|
HashAlgorithm ::= ENUMERATED {
|
||||||
sha256,
|
sha256,
|
||||||
...,
|
...,
|
||||||
sha384
|
sha384,
|
||||||
|
sm3
|
||||||
}
|
}
|
||||||
|
|
||||||
EciesP256EncryptedKey ::= SEQUENCE {
|
EciesP256EncryptedKey ::= SEQUENCE {
|
||||||
@ -226,6 +234,13 @@ EciesP256EncryptedKey ::= SEQUENCE {
|
|||||||
t OCTET STRING (SIZE (16))
|
t OCTET STRING (SIZE (16))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EcencP256EncryptedKey ::= SEQUENCE {
|
||||||
|
v EccP256CurvePoint,
|
||||||
|
c OCTET STRING (SIZE (16)),
|
||||||
|
t OCTET STRING (SIZE (32))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EncryptionKey ::= CHOICE {
|
EncryptionKey ::= CHOICE {
|
||||||
public PublicEncryptionKey,
|
public PublicEncryptionKey,
|
||||||
symmetric SymmetricEncryptionKey
|
symmetric SymmetricEncryptionKey
|
||||||
@ -239,27 +254,29 @@ PublicEncryptionKey ::= SEQUENCE {
|
|||||||
BasePublicEncryptionKey ::= CHOICE {
|
BasePublicEncryptionKey ::= CHOICE {
|
||||||
eciesNistP256 EccP256CurvePoint,
|
eciesNistP256 EccP256CurvePoint,
|
||||||
eciesBrainpoolP256r1 EccP256CurvePoint,
|
eciesBrainpoolP256r1 EccP256CurvePoint,
|
||||||
...
|
...,
|
||||||
|
ecencSm2 EccP256CurvePoint
|
||||||
}
|
}
|
||||||
|
|
||||||
PublicVerificationKey ::= CHOICE {
|
PublicVerificationKey ::= CHOICE {
|
||||||
ecdsaNistP256 EccP256CurvePoint,
|
ecdsaNistP256 EccP256CurvePoint,
|
||||||
ecdsaBrainpoolP256r1 EccP256CurvePoint,
|
ecdsaBrainpoolP256r1 EccP256CurvePoint,
|
||||||
...,
|
... ,
|
||||||
ecdsaBrainpoolP384r1 EccP384CurvePoint
|
ecdsaBrainpoolP384r1 EccP384CurvePoint,
|
||||||
|
ecdsaNistP384 EccP384CurvePoint,
|
||||||
|
ecsigSm2 EccP256CurvePoint
|
||||||
}
|
}
|
||||||
|
|
||||||
SymmetricEncryptionKey ::= CHOICE {
|
SymmetricEncryptionKey ::= CHOICE {
|
||||||
aes128Ccm OCTET STRING(SIZE(16)),
|
aes128Ccm OCTET STRING(SIZE(16)),
|
||||||
...
|
...,
|
||||||
|
sm4Ccm OCTET STRING(SIZE(16))
|
||||||
}
|
}
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
--
|
|
||||||
-- PSID / ITS-AID
|
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
--***************************************************************************--
|
||||||
|
-- PSID / ITS-AID --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
PsidSsp ::= SEQUENCE {
|
PsidSsp ::= SEQUENCE {
|
||||||
psid Psid,
|
psid Psid,
|
||||||
@ -290,7 +307,7 @@ SequenceOfPsidSspRange ::= SEQUENCE OF PsidSspRange
|
|||||||
SspRange ::= CHOICE {
|
SspRange ::= CHOICE {
|
||||||
opaque SequenceOfOctetString,
|
opaque SequenceOfOctetString,
|
||||||
all NULL,
|
all NULL,
|
||||||
... ,
|
...,
|
||||||
bitmapSspRange BitmapSspRange
|
bitmapSspRange BitmapSspRange
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -299,37 +316,63 @@ BitmapSspRange ::= SEQUENCE {
|
|||||||
sspBitmask OCTET STRING (SIZE(1..32))
|
sspBitmask OCTET STRING (SIZE(1..32))
|
||||||
}
|
}
|
||||||
|
|
||||||
SequenceOfOctetString ::= SEQUENCE (SIZE (0..MAX)) OF
|
SequenceOfOctetString ::=
|
||||||
OCTET STRING (SIZE(0..MAX))
|
SEQUENCE (SIZE (0..MAX)) OF OCTET STRING (SIZE(0..MAX))
|
||||||
|
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
--***************************************************************************--
|
||||||
--
|
-- Certificate Components --
|
||||||
-- Goes in certs
|
--***************************************************************************--
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
|
|
||||||
SubjectAssurance ::= OCTET STRING (SIZE(1))
|
SubjectAssurance ::= OCTET STRING (SIZE(1))
|
||||||
|
|
||||||
CrlSeries ::= Uint16
|
CrlSeries ::= Uint16
|
||||||
|
|
||||||
|
|
||||||
-- ------------------------------------------------------------------
|
--***************************************************************************--
|
||||||
--
|
-- Pseudonym Linkage --
|
||||||
-- Pseudonym Linkage
|
--***************************************************************************--
|
||||||
--
|
|
||||||
-- ------------------------------------------------------------------
|
|
||||||
|
|
||||||
IValue ::= Uint16
|
IValue ::= Uint16
|
||||||
|
|
||||||
Hostname ::= UTF8String (SIZE(0..255))
|
Hostname ::= UTF8String (SIZE(0..255))
|
||||||
|
|
||||||
LinkageValue ::= OCTET STRING (SIZE(9))
|
LinkageValue ::= OCTET STRING (SIZE(9))
|
||||||
|
|
||||||
GroupLinkageValue ::= SEQUENCE {
|
GroupLinkageValue ::= SEQUENCE {
|
||||||
jValue OCTET STRING (SIZE(4)),
|
jValue OCTET STRING (SIZE(4)),
|
||||||
value OCTET STRING (SIZE(9))
|
value OCTET STRING (SIZE(9))
|
||||||
}
|
}
|
||||||
|
|
||||||
LaId ::= OCTET STRING (SIZE(2))
|
LaId ::= OCTET STRING (SIZE(2))
|
||||||
|
|
||||||
|
SequenceOfLinkageSeed ::= SEQUENCE OF LinkageSeed
|
||||||
|
|
||||||
LinkageSeed ::= OCTET STRING (SIZE(16))
|
LinkageSeed ::= OCTET STRING (SIZE(16))
|
||||||
|
|
||||||
END
|
--***************************************************************************--
|
||||||
|
-- Information Object Classes and Sets --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
|
CERT-EXT-TYPE ::= CLASS {
|
||||||
|
&id ExtId,
|
||||||
|
&App,
|
||||||
|
&Issue,
|
||||||
|
&Req
|
||||||
|
} WITH SYNTAX {ID &id APP &App ISSUE &Issue REQUEST &Req}
|
||||||
|
|
||||||
|
EXT-TYPE ::= CLASS {
|
||||||
|
&extId ExtId,
|
||||||
|
&ExtContent
|
||||||
|
} WITH SYNTAX {&ExtContent IDENTIFIED BY &extId}
|
||||||
|
|
||||||
|
Extension {EXT-TYPE : ExtensionTypes} ::= SEQUENCE {
|
||||||
|
id EXT-TYPE.&extId({ExtensionTypes}),
|
||||||
|
content EXT-TYPE.&ExtContent({ExtensionTypes}{@.id})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ExtId ::= INTEGER(0..255)
|
||||||
|
|
||||||
|
|
||||||
|
END
|
||||||
|
418
epan/dissectors/asn1/ieee1609dot2/Ieee1609Dot2.asn
Normal file
418
epan/dissectors/asn1/ieee1609dot2/Ieee1609Dot2.asn
Normal file
@ -0,0 +1,418 @@
|
|||||||
|
--***************************************************************************--
|
||||||
|
-- IEEE Std 1609.2 --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
|
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) minor-version-6(6)}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
CERT-EXT-TYPE,
|
||||||
|
CrlSeries,
|
||||||
|
EccP256CurvePoint,
|
||||||
|
EcencP256EncryptedKey,
|
||||||
|
EciesP256EncryptedKey,
|
||||||
|
EncryptionKey,
|
||||||
|
EXT-TYPE,
|
||||||
|
Extension,
|
||||||
|
ExtId,
|
||||||
|
GeographicRegion,
|
||||||
|
GroupLinkageValue,
|
||||||
|
HashAlgorithm,
|
||||||
|
HashedId3,
|
||||||
|
HashedId8,
|
||||||
|
HashedId32,
|
||||||
|
HashedId48,
|
||||||
|
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) minor-version-4(4)}
|
||||||
|
--WITH SUCCESSORS
|
||||||
|
|
||||||
|
EtsiOriginatingHeaderInfoExtension
|
||||||
|
FROM EtsiTs103097ExtensionModule {itu-t(0) identified-organization(4) etsi(0)
|
||||||
|
itsDomain(5) wg5(5) secHeaders(103097) extension(2) major-version-1(1)
|
||||||
|
minor-version-0(0)}
|
||||||
|
--WITH SUCCESSORS
|
||||||
|
;
|
||||||
|
|
||||||
|
--***************************************************************************--
|
||||||
|
-- Secured Data --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
|
Ieee1609Dot2Data ::= SEQUENCE {
|
||||||
|
protocolVersion Uint8(3),
|
||||||
|
content Ieee1609Dot2Content
|
||||||
|
}
|
||||||
|
|
||||||
|
Ieee1609Dot2Content ::= CHOICE {
|
||||||
|
unsecuredData Opaque,
|
||||||
|
signedData SignedData,
|
||||||
|
encryptedData EncryptedData,
|
||||||
|
signedCertificateRequest Opaque,
|
||||||
|
...,
|
||||||
|
signedX509CertificateRequest Opaque
|
||||||
|
}
|
||||||
|
|
||||||
|
SignedData ::= SEQUENCE {
|
||||||
|
hashId HashAlgorithm,
|
||||||
|
tbsData ToBeSignedData,
|
||||||
|
signer SignerIdentifier,
|
||||||
|
signature Signature
|
||||||
|
}
|
||||||
|
|
||||||
|
ToBeSignedData ::= SEQUENCE {
|
||||||
|
payload SignedDataPayload,
|
||||||
|
headerInfo HeaderInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
SignedDataPayload ::= SEQUENCE {
|
||||||
|
data Ieee1609Dot2Data OPTIONAL,
|
||||||
|
extDataHash HashedData OPTIONAL,
|
||||||
|
...,
|
||||||
|
omitted NULL OPTIONAL
|
||||||
|
} (WITH COMPONENTS {..., data PRESENT} |
|
||||||
|
WITH COMPONENTS {..., extDataHash PRESENT} |
|
||||||
|
WITH COMPONENTS {..., omitted PRESENT})
|
||||||
|
|
||||||
|
|
||||||
|
HashedData::= CHOICE {
|
||||||
|
sha256HashedData HashedId32,
|
||||||
|
...,
|
||||||
|
sha384HashedData HashedId48,
|
||||||
|
sm3HashedData HashedId32
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
pduFunctionalType PduFunctionalType OPTIONAL,
|
||||||
|
contributedExtensions ContributedExtensionBlocks OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
MissingCrlIdentifier ::= SEQUENCE {
|
||||||
|
cracaId HashedId3,
|
||||||
|
crlSeries CrlSeries,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
PduFunctionalType ::= INTEGER (0..255)
|
||||||
|
|
||||||
|
tlsHandshake PduFunctionalType ::= 1
|
||||||
|
iso21177ExtendedAuth PduFunctionalType ::= 2
|
||||||
|
iso21177SessionExtension PduFunctionalType ::= 3
|
||||||
|
|
||||||
|
|
||||||
|
ContributedExtensionBlocks ::= SEQUENCE (SIZE(1..MAX)) OF
|
||||||
|
ContributedExtensionBlock
|
||||||
|
|
||||||
|
IEEE1609DOT2-HEADERINFO-CONTRIBUTED-EXTENSION ::= CLASS {
|
||||||
|
&id HeaderInfoContributorId UNIQUE,
|
||||||
|
&Extn
|
||||||
|
} WITH SYNTAX {&Extn IDENTIFIED BY &id}
|
||||||
|
|
||||||
|
ContributedExtensionBlock ::= SEQUENCE {
|
||||||
|
contributorId IEEE1609DOT2-HEADERINFO-CONTRIBUTED-EXTENSION.&id({
|
||||||
|
Ieee1609Dot2HeaderInfoContributedExtensions
|
||||||
|
}),
|
||||||
|
extns SEQUENCE (SIZE(1..MAX)) OF
|
||||||
|
IEEE1609DOT2-HEADERINFO-CONTRIBUTED-EXTENSION.&Extn({
|
||||||
|
Ieee1609Dot2HeaderInfoContributedExtensions
|
||||||
|
}{@.contributorId})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Ieee1609Dot2HeaderInfoContributedExtensions
|
||||||
|
IEEE1609DOT2-HEADERINFO-CONTRIBUTED-EXTENSION ::= {
|
||||||
|
{Ieee1609ContributedHeaderInfoExtension IDENTIFIED BY
|
||||||
|
ieee1609HeaderInfoContributorId} |
|
||||||
|
{EtsiOriginatingHeaderInfoExtension IDENTIFIED BY
|
||||||
|
etsiHeaderInfoContributorId},
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
HeaderInfoContributorId ::= INTEGER (0..255)
|
||||||
|
|
||||||
|
ieee1609HeaderInfoContributorId HeaderInfoContributorId ::= 1
|
||||||
|
etsiHeaderInfoContributorId HeaderInfoContributorId ::= 2
|
||||||
|
|
||||||
|
|
||||||
|
SignerIdentifier ::= CHOICE {
|
||||||
|
digest HashedId8,
|
||||||
|
certificate SequenceOfCertificate,
|
||||||
|
self NULL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
--***************************************************************************--
|
||||||
|
-- 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,
|
||||||
|
...,
|
||||||
|
ecencSm2256 EcencP256EncryptedKey
|
||||||
|
}
|
||||||
|
|
||||||
|
SymmetricCiphertext ::= CHOICE {
|
||||||
|
aes128ccm One28BitCcmCiphertext,
|
||||||
|
...,
|
||||||
|
sm4Ccm One28BitCcmCiphertext
|
||||||
|
}
|
||||||
|
|
||||||
|
One28BitCcmCiphertext ::= SEQUENCE {
|
||||||
|
nonce OCTET STRING (SIZE (12)),
|
||||||
|
ccmCiphertext Opaque
|
||||||
|
}
|
||||||
|
|
||||||
|
Aes128CcmCiphertext ::= One28BitCcmCiphertext
|
||||||
|
|
||||||
|
--***************************************************************************--
|
||||||
|
-- Certificates and other Security Management --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
|
Certificate ::=
|
||||||
|
CertificateBase (ImplicitCertificate | ExplicitCertificate)
|
||||||
|
|
||||||
|
TestCertificate ::= Certificate
|
||||||
|
|
||||||
|
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,
|
||||||
|
sm3AndDigest 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,
|
||||||
|
...,
|
||||||
|
flags BIT STRING {usesCubk (0)} (SIZE (8)) OPTIONAL,
|
||||||
|
appExtensions SequenceOfAppExtensions,
|
||||||
|
certIssueExtensions SequenceOfCertIssueExtensions,
|
||||||
|
certRequestExtension SequenceOfCertRequestExtensions
|
||||||
|
}
|
||||||
|
(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 {})
|
||||||
|
|
||||||
|
PsidGroupPermissions ::= SEQUENCE {
|
||||||
|
subjectPermissions SubjectPermissions,
|
||||||
|
minChainLength INTEGER DEFAULT 1,
|
||||||
|
chainLengthRange INTEGER DEFAULT 0,
|
||||||
|
eeType EndEntityType DEFAULT {app}
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfPsidGroupPermissions ::= SEQUENCE OF PsidGroupPermissions
|
||||||
|
|
||||||
|
SubjectPermissions ::= CHOICE {
|
||||||
|
explicit SequenceOfPsidSspRange,
|
||||||
|
all NULL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
VerificationKeyIndicator ::= CHOICE {
|
||||||
|
verificationKey PublicVerificationKey,
|
||||||
|
reconstructionValue EccP256CurvePoint,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
Ieee1609ContributedHeaderInfoExtension ::=
|
||||||
|
Extension{{Ieee1609HeaderInfoExtensions}}
|
||||||
|
|
||||||
|
Ieee1609HeaderInfoExtensionId ::= ExtId
|
||||||
|
|
||||||
|
p2pcd8ByteLearningRequestId Ieee1609HeaderInfoExtensionId ::= 1
|
||||||
|
|
||||||
|
Ieee1609HeaderInfoExtensions EXT-TYPE ::= {
|
||||||
|
{HashedId8 IDENTIFIED BY p2pcd8ByteLearningRequestId},
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfAppExtensions ::= SEQUENCE (SIZE(1..MAX)) OF AppExtension
|
||||||
|
|
||||||
|
SetCertExtensions CERT-EXT-TYPE ::= {
|
||||||
|
instanceOperatingOrganizationCertExtensions,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
AppExtension ::= SEQUENCE {
|
||||||
|
id CERT-EXT-TYPE.&id({SetCertExtensions}),
|
||||||
|
content CERT-EXT-TYPE.&App({SetCertExtensions}{@.id})
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfCertIssueExtensions ::=
|
||||||
|
SEQUENCE (SIZE(1..MAX)) OF CertIssueExtension
|
||||||
|
|
||||||
|
CertIssueExtension ::= SEQUENCE {
|
||||||
|
id CERT-EXT-TYPE.&id({SetCertExtensions}),
|
||||||
|
permissions CHOICE {
|
||||||
|
specific CERT-EXT-TYPE.&Issue({SetCertExtensions}{@.id}),
|
||||||
|
all NULL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfCertRequestExtensions ::= SEQUENCE (SIZE(1..MAX)) OF CertRequestExtension
|
||||||
|
|
||||||
|
CertRequestExtension ::= SEQUENCE {
|
||||||
|
id CERT-EXT-TYPE.&id({SetCertExtensions}),
|
||||||
|
permissions CHOICE {
|
||||||
|
content CERT-EXT-TYPE.&Req({SetCertExtensions}{@.id}),
|
||||||
|
all NULL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OperatingOrganizationId ::= OBJECT IDENTIFIER
|
||||||
|
|
||||||
|
certExtId-OperatingOrganization ExtId ::= 1
|
||||||
|
|
||||||
|
instanceOperatingOrganizationCertExtensions CERT-EXT-TYPE ::= {
|
||||||
|
ID certExtId-OperatingOrganization
|
||||||
|
APP OperatingOrganizationId
|
||||||
|
ISSUE NULL
|
||||||
|
REQUEST NULL
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
90
epan/dissectors/asn1/ieee1609dot2/Ieee1609Dot2Crl.asn
Normal file
90
epan/dissectors/asn1/ieee1609dot2/Ieee1609Dot2Crl.asn
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
--***************************************************************************--
|
||||||
|
-- IEEE Std 1609.2: CRL Data Types --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
|
Ieee1609Dot2Crl {iso(1) identified-organization(3) ieee(111)
|
||||||
|
standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
|
||||||
|
crl(3) major-version-3(3) minor-version-2(2)}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
Ieee1609Dot2Data
|
||||||
|
FROM 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) minor-version-6(6)}
|
||||||
|
--WITH SUCCESSORS
|
||||||
|
|
||||||
|
Opaque,
|
||||||
|
Psid
|
||||||
|
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) minor-version-4(4)}
|
||||||
|
--WITH SUCCESSORS
|
||||||
|
|
||||||
|
CrlContents
|
||||||
|
FROM Ieee1609Dot2CrlBaseTypes {iso(1) identified-organization(3) ieee(111)
|
||||||
|
standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
|
||||||
|
crl(3) base-types(2) major-version-3(3) minor-version-2(2)}
|
||||||
|
--WITH SUCCESSORS
|
||||||
|
;
|
||||||
|
|
||||||
|
CrlPsid ::= Psid(256)
|
||||||
|
|
||||||
|
--SecuredCrl ::= Ieee1609Dot2Data (WITH COMPONENTS {...,
|
||||||
|
-- content (WITH COMPONENTS {
|
||||||
|
-- signedData (WITH COMPONENTS {...,
|
||||||
|
-- tbsData (WITH COMPONENTS {
|
||||||
|
-- payload (WITH COMPONENTS {...,
|
||||||
|
-- data (WITH COMPONENTS {...,
|
||||||
|
-- content (WITH COMPONENTS {
|
||||||
|
-- unsecuredData (CONTAINING CrlContents)
|
||||||
|
-- })
|
||||||
|
-- })
|
||||||
|
-- }),
|
||||||
|
-- headerInfo (WITH COMPONENTS {...,
|
||||||
|
-- psid (CrlPsid),
|
||||||
|
-- generationTime ABSENT,
|
||||||
|
-- expiryTime ABSENT,
|
||||||
|
-- generationLocation ABSENT,
|
||||||
|
-- p2pcdLearningRequest ABSENT,
|
||||||
|
-- missingCrlIdentifier ABSENT,
|
||||||
|
-- encryptionKey ABSENT
|
||||||
|
-- })
|
||||||
|
-- })
|
||||||
|
-- })
|
||||||
|
-- })
|
||||||
|
--})
|
||||||
|
|
||||||
|
|
||||||
|
SecuredCrl ::= SEQUENCE {
|
||||||
|
content SecuredCrlContent
|
||||||
|
}
|
||||||
|
|
||||||
|
-- content
|
||||||
|
SecuredCrlContent ::= CHOICE {
|
||||||
|
signedData CrlSignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
CrlSignedData ::= SEQUENCE {
|
||||||
|
tbsData CrlToBeSignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
CrlToBeSignedData ::= SEQUENCE {
|
||||||
|
payload CrlSignedDataPayload,
|
||||||
|
headerInfo HeaderInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
CrlSignedDataPayload ::= SEQUENCE {
|
||||||
|
data Ieee1609Dot2CrlData OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
Ieee1609Dot2CrlData ::= SEQUENCE {
|
||||||
|
content Ieee1609Dot2CrlContent
|
||||||
|
}
|
||||||
|
|
||||||
|
Ieee1609Dot2CrlContent ::= CHOICE {
|
||||||
|
unsecuredData CrlContents
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
165
epan/dissectors/asn1/ieee1609dot2/Ieee1609Dot2CrlBaseTypes.asn
Normal file
165
epan/dissectors/asn1/ieee1609dot2/Ieee1609Dot2CrlBaseTypes.asn
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
--***************************************************************************--
|
||||||
|
-- IEEE Std 1609.2: CRL Base Data Types --
|
||||||
|
--***************************************************************************--
|
||||||
|
|
||||||
|
Ieee1609Dot2CrlBaseTypes {iso(1) identified-organization(3) ieee(111)
|
||||||
|
standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
|
||||||
|
crl(3) base-types(2) major-version-3(3) minor-version-2(2)}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
CrlSeries,
|
||||||
|
Duration,
|
||||||
|
GeographicRegion,
|
||||||
|
HashedId8,
|
||||||
|
HashedId10,
|
||||||
|
IValue,
|
||||||
|
LaId,
|
||||||
|
LinkageSeed,
|
||||||
|
Opaque,
|
||||||
|
Psid,
|
||||||
|
SequenceOfLinkageSeed,
|
||||||
|
Signature,
|
||||||
|
Time32,
|
||||||
|
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) minor-version-4(4)}
|
||||||
|
--WITH SUCCESSORS
|
||||||
|
;
|
||||||
|
|
||||||
|
CrlContents ::= SEQUENCE {
|
||||||
|
version Uint8 (1),
|
||||||
|
crlSeries CrlSeries,
|
||||||
|
crlCraca HashedId8,
|
||||||
|
issueDate Time32,
|
||||||
|
nextCrl Time32,
|
||||||
|
priorityInfo CrlPriorityInfo,
|
||||||
|
typeSpecific TypeSpecificCrlContents
|
||||||
|
}
|
||||||
|
|
||||||
|
CrlPriorityInfo ::= SEQUENCE {
|
||||||
|
priority Uint8 OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
TypeSpecificCrlContents ::= CHOICE {
|
||||||
|
fullHashCrl ToBeSignedHashIdCrl,
|
||||||
|
deltaHashCrl ToBeSignedHashIdCrl,
|
||||||
|
fullLinkedCrl ToBeSignedLinkageValueCrl,
|
||||||
|
deltaLinkedCrl ToBeSignedLinkageValueCrl,
|
||||||
|
...,
|
||||||
|
fullLinkedCrlWithAlg ToBeSignedLinkageValueCrlWithAlgIdentifier,
|
||||||
|
deltaLinkedCrlWithAlg ToBeSignedLinkageValueCrlWithAlgIdentifier
|
||||||
|
}
|
||||||
|
|
||||||
|
ToBeSignedHashIdCrl ::= SEQUENCE {
|
||||||
|
crlSerial Uint32,
|
||||||
|
entries SequenceOfHashBasedRevocationInfo,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfHashBasedRevocationInfo ::=
|
||||||
|
SEQUENCE OF HashBasedRevocationInfo
|
||||||
|
|
||||||
|
HashBasedRevocationInfo ::= SEQUENCE {
|
||||||
|
id HashedId10,
|
||||||
|
expiry Time32,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
ToBeSignedLinkageValueCrl ::= SEQUENCE {
|
||||||
|
iRev IValue,
|
||||||
|
indexWithinI Uint8,
|
||||||
|
individual SequenceOfJMaxGroup OPTIONAL,
|
||||||
|
groups SequenceOfGroupCrlEntry OPTIONAL,
|
||||||
|
...,
|
||||||
|
groupsSingleSeed SequenceOfGroupSingleSeedCrlEntry OPTIONAL
|
||||||
|
} (WITH COMPONENTS {..., individual PRESENT} |
|
||||||
|
WITH COMPONENTS {..., groups PRESENT} |
|
||||||
|
WITH COMPONENTS {..., groupsSingleSeed PRESENT})
|
||||||
|
|
||||||
|
SequenceOfJMaxGroup ::= SEQUENCE OF JMaxGroup
|
||||||
|
|
||||||
|
JMaxGroup ::= SEQUENCE {
|
||||||
|
jmax Uint8,
|
||||||
|
contents SequenceOfLAGroup,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfLAGroup ::= SEQUENCE OF LAGroup
|
||||||
|
|
||||||
|
LAGroup ::= SEQUENCE {
|
||||||
|
la1Id LaId,
|
||||||
|
la2Id LaId,
|
||||||
|
contents SequenceOfIMaxGroup,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfIMaxGroup ::= SEQUENCE OF IMaxGroup
|
||||||
|
|
||||||
|
IMaxGroup ::= SEQUENCE {
|
||||||
|
iMax Uint16,
|
||||||
|
contents SequenceOfIndividualRevocation,
|
||||||
|
...,
|
||||||
|
singleSeed SequenceOfLinkageSeed OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfIndividualRevocation ::=
|
||||||
|
SEQUENCE (SIZE(0..MAX)) OF IndividualRevocation
|
||||||
|
|
||||||
|
IndividualRevocation ::= SEQUENCE {
|
||||||
|
linkageSeed1 LinkageSeed,
|
||||||
|
linkageSeed2 LinkageSeed,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SequenceOfGroupCrlEntry ::= SEQUENCE OF GroupCrlEntry
|
||||||
|
|
||||||
|
GroupCrlEntry ::= SEQUENCE {
|
||||||
|
iMax Uint16,
|
||||||
|
la1Id LaId,
|
||||||
|
linkageSeed1 LinkageSeed,
|
||||||
|
la2Id LaId,
|
||||||
|
linkageSeed2 LinkageSeed,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
ToBeSignedLinkageValueCrlWithAlgIdentifier ::= SEQUENCE {
|
||||||
|
iRev IValue,
|
||||||
|
indexWithinI Uint8,
|
||||||
|
seedEvolution SeedEvolutionFunctionIdentifier,
|
||||||
|
lvGeneration LvGenerationFunctionIdentifier,
|
||||||
|
individual SequenceOfJMaxGroup OPTIONAL,
|
||||||
|
groups SequenceOfGroupCrlEntry OPTIONAL,
|
||||||
|
groupsSingleSeed SequenceOfGroupSingleSeedCrlEntry OPTIONAL,
|
||||||
|
...
|
||||||
|
} (WITH COMPONENTS {..., individual PRESENT} |
|
||||||
|
WITH COMPONENTS {..., groups PRESENT} |
|
||||||
|
WITH COMPONENTS {..., groupsSingleSeed PRESENT})
|
||||||
|
|
||||||
|
SequenceOfGroupSingleSeedCrlEntry ::=
|
||||||
|
SEQUENCE OF GroupSingleSeedCrlEntry
|
||||||
|
|
||||||
|
GroupSingleSeedCrlEntry ::= SEQUENCE {
|
||||||
|
iMax Uint16,
|
||||||
|
laId LaId,
|
||||||
|
linkageSeed LinkageSeed
|
||||||
|
}
|
||||||
|
|
||||||
|
ExpansionAlgorithmIdentifier ::= ENUMERATED {
|
||||||
|
sha256ForI-aesForJ,
|
||||||
|
sm3ForI-sm4ForJ,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SeedEvolutionFunctionIdentifier ::= NULL
|
||||||
|
|
||||||
|
LvGenerationFunctionIdentifier ::= NULL
|
||||||
|
|
||||||
|
END
|
@ -6,6 +6,7 @@ OER
|
|||||||
#.END
|
#.END
|
||||||
|
|
||||||
#.MODULE
|
#.MODULE
|
||||||
|
Ieee1609Dot2BaseTypes ieee1609dot2
|
||||||
#.MODULE_IMPORT
|
#.MODULE_IMPORT
|
||||||
|
|
||||||
#.EXPORTS ONLY_VALS WS_DLL
|
#.EXPORTS ONLY_VALS WS_DLL
|
||||||
@ -18,7 +19,7 @@ Psid
|
|||||||
|
|
||||||
#.PDU
|
#.PDU
|
||||||
Ieee1609Dot2Data
|
Ieee1609Dot2Data
|
||||||
|
SecuredCrl
|
||||||
#.NO_EMIT
|
#.NO_EMIT
|
||||||
|
|
||||||
#.NO_EMIT ONLY_VALS
|
#.NO_EMIT ONLY_VALS
|
||||||
@ -30,16 +31,21 @@ OneEightyDegreeInt
|
|||||||
TestCertificate
|
TestCertificate
|
||||||
Countersignature
|
Countersignature
|
||||||
ExplicitCertificate
|
ExplicitCertificate
|
||||||
HashedId10
|
|
||||||
ImplicitCertificate
|
ImplicitCertificate
|
||||||
KnownLatitude
|
KnownLatitude
|
||||||
KnownLongitude
|
KnownLongitude
|
||||||
LaId
|
|
||||||
LinkageSeed
|
|
||||||
SequenceOfPsid
|
SequenceOfPsid
|
||||||
Uint3
|
Uint3
|
||||||
UnknownLatitude
|
UnknownLatitude
|
||||||
UnknownLongitude
|
UnknownLongitude
|
||||||
|
OperatingOrganizationId
|
||||||
|
Ieee1609HeaderInfoExtensionId
|
||||||
|
Ieee1609ContributedHeaderInfoExtension
|
||||||
|
Aes128CcmCiphertext
|
||||||
|
CrlPsid
|
||||||
|
ExpansionAlgorithmIdentifier
|
||||||
|
Extension
|
||||||
|
CountryOnly
|
||||||
|
|
||||||
#.TYPE_RENAME
|
#.TYPE_RENAME
|
||||||
|
|
||||||
@ -73,7 +79,6 @@ EncryptedDataEncryptionKey/eciesBrainpoolP256r1 edekEciesBrainpoolP256r1
|
|||||||
#.TYPE_ATTR
|
#.TYPE_ATTR
|
||||||
NinetyDegreeInt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_NinetyDegreeInt_fmt)
|
NinetyDegreeInt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_NinetyDegreeInt_fmt)
|
||||||
OneEightyDegreeInt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_OneEightyDegreeInt_fmt)
|
OneEightyDegreeInt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_OneEightyDegreeInt_fmt)
|
||||||
ElevInt DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_ElevInt_fmt)
|
|
||||||
Time32 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time32_fmt)
|
Time32 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time32_fmt)
|
||||||
Time64 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time64_fmt)
|
Time64 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ieee1609dot2_Time64_fmt)
|
||||||
|
|
||||||
@ -180,7 +185,7 @@ psid-peer-to-peer-distribution-of-security-management-information Psid
|
|||||||
psid-traffic-light-manoeuver-service Psid
|
psid-traffic-light-manoeuver-service Psid
|
||||||
psid-road-and-lane-topology-service Psid
|
psid-road-and-lane-topology-service Psid
|
||||||
psid-infrastructure-to-vehicle-information-service Psid
|
psid-infrastructure-to-vehicle-information-service Psid
|
||||||
psid-traffic-light-control-service Psid
|
psid-traffic-light-control-requests-service Psid
|
||||||
psid-geonetworking-management-communications Psid
|
psid-geonetworking-management-communications Psid
|
||||||
psid-certificate-revocation-list-application Psid
|
psid-certificate-revocation-list-application Psid
|
||||||
psid-collective-perception-service Psid
|
psid-collective-perception-service Psid
|
||||||
|
@ -92,13 +92,6 @@ ieee1609dot2_OneEightyDegreeInt_fmt(gchar *s, guint32 v)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
ieee1609dot2_ElevInt_fmt(gchar *s, guint32 v)
|
|
||||||
{
|
|
||||||
// Range is from -4096 to 61439 in units of one-tenth of a meter
|
|
||||||
gint32 alt = (gint32)v - 4096;
|
|
||||||
snprintf(s, ITEM_LABEL_LENGTH, "%.2fm (%u)", alt * 0.1, v);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ieee1609dot2_Time32_fmt(gchar *s, guint32 v)
|
ieee1609dot2_Time32_fmt(gchar *s, guint32 v)
|
||||||
@ -151,11 +144,13 @@ void proto_register_ieee1609dot2(void) {
|
|||||||
"ATS-AID/PSID based dissector for Service Specific Permissions (SSP)", proto_ieee1609dot2, FT_UINT32, BASE_HEX);
|
"ATS-AID/PSID based dissector for Service Specific Permissions (SSP)", proto_ieee1609dot2, FT_UINT32, BASE_HEX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void proto_reg_handoff_ieee1609dot2(void) {
|
void proto_reg_handoff_ieee1609dot2(void) {
|
||||||
dissector_add_string("media_type", "application/x-its", proto_ieee1609dot2_handle);
|
dissector_add_string("media_type", "application/x-its", proto_ieee1609dot2_handle);
|
||||||
dissector_add_string("media_type", "application/x-its-request", proto_ieee1609dot2_handle);
|
dissector_add_string("media_type", "application/x-its-request", proto_ieee1609dot2_handle);
|
||||||
dissector_add_string("media_type", "application/x-its-response", proto_ieee1609dot2_handle);
|
dissector_add_string("media_type", "application/x-its-response", proto_ieee1609dot2_handle);
|
||||||
|
|
||||||
|
dissector_add_uint("ieee1609dot2.psid", psid_certificate_revocation_list_application, create_dissector_handle(dissect_SecuredCrl_PDU, proto_ieee1609dot2));
|
||||||
//dissector_add_uint_range_with_preference("udp.port", "56000,56001", proto_ieee1609dot2_handle);
|
//dissector_add_uint_range_with_preference("udp.port", "56000,56001", proto_ieee1609dot2_handle);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
/* Do not modify this file. Changes will be overwritten. */
|
/* Do not modify this file. Changes will be overwritten. */
|
||||||
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
|
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
|
||||||
/* packet-ieee1609dot2.h */
|
/* packet-ieee1609dot2.h */
|
||||||
/* asn2wrs.py -L -p ieee1609dot2 -c ./ieee1609dot2.cnf -s ./packet-ieee1609dot2-template -D . -O ../.. IEEE1609dot2BaseTypes.asn IEEE1609dot2DataTypes.asn IEEE1609dot12.asn */
|
/* asn2wrs.py -L -p ieee1609dot2 -c ./ieee1609dot2.cnf -s ./packet-ieee1609dot2-template -D . -O ../.. IEEE1609dot2BaseTypes.asn Ieee1609Dot2CrlBaseTypes.asn Ieee1609Dot2Crl.asn Ieee1609Dot2.asn IEEE1609dot12.asn */
|
||||||
|
|
||||||
/* packet-IEEE1609dot2.h
|
/* packet-IEEE1609dot2.h
|
||||||
* Routines for IEEE 1609.2
|
* Routines for IEEE 1609.2
|
||||||
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "ws_symbol_export.h"
|
#include "ws_symbol_export.h"
|
||||||
|
|
||||||
|
#define p2pcd8ByteLearningRequestId 1
|
||||||
|
|
||||||
typedef enum _Psid_enum {
|
typedef enum _Psid_enum {
|
||||||
psid_system = 0,
|
psid_system = 0,
|
||||||
@ -76,9 +77,9 @@ typedef enum _Psid_enum {
|
|||||||
psid_infrastructure_to_vehicle_information_service = 139,
|
psid_infrastructure_to_vehicle_information_service = 139,
|
||||||
psid_traffic_light_control_requests_service = 140,
|
psid_traffic_light_control_requests_service = 140,
|
||||||
psid_geonetworking_management_communications = 141,
|
psid_geonetworking_management_communications = 141,
|
||||||
|
psid_certificate_revocation_list_application = 256,
|
||||||
psid_traffic_light_control_status_service = 637,
|
psid_traffic_light_control_status_service = 637,
|
||||||
psid_collective_perception_service = 639,
|
psid_collective_perception_service = 639,
|
||||||
psid_certificate_revocation_list_application = 256,
|
|
||||||
psid_vehicle_initiated_distress_notivication = 16514,
|
psid_vehicle_initiated_distress_notivication = 16514,
|
||||||
psid_fast_service_advertisement_protocol = 2113664,
|
psid_fast_service_advertisement_protocol = 2113664,
|
||||||
psid_its_station_internal_management_communications_protocol = 2113665,
|
psid_its_station_internal_management_communications_protocol = 2113665,
|
||||||
|
@ -37,14 +37,17 @@ static int hf_oer_optional_field_bit = -1;
|
|||||||
static int hf_oer_class = -1;
|
static int hf_oer_class = -1;
|
||||||
static int hf_oer_tag = -1;
|
static int hf_oer_tag = -1;
|
||||||
static int hf_oer_length_determinant = -1;
|
static int hf_oer_length_determinant = -1;
|
||||||
static int hf_oer_extension_present_bit = -1;
|
static int hf_oer_extension_present_bit;
|
||||||
|
static int hf_oer_open_type_length = -1;
|
||||||
|
|
||||||
/* Initialize the subtree pointers */
|
/* Initialize the subtree pointers */
|
||||||
static int ett_oer = -1;
|
static int ett_oer = -1;
|
||||||
static int ett_oer_sequence_of_item = -1;
|
static int ett_oer_sequence_of_item = -1;
|
||||||
|
static int ett_oer_open_type = -1;
|
||||||
|
|
||||||
static expert_field ei_oer_not_decoded_yet = EI_INIT;
|
static expert_field ei_oer_not_decoded_yet = EI_INIT;
|
||||||
static expert_field ei_oer_undecoded = EI_INIT;
|
static expert_field ei_oer_undecoded = EI_INIT;
|
||||||
|
static expert_field ei_oer_open_type = EI_INIT;
|
||||||
|
|
||||||
/* whether the OER helpers should put the internal OER fields into the tree or not. */
|
/* whether the OER helpers should put the internal OER fields into the tree or not. */
|
||||||
static gboolean display_internal_oer_fields = FALSE;
|
static gboolean display_internal_oer_fields = FALSE;
|
||||||
@ -795,6 +798,54 @@ dissect_oer_choice(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *
|
|||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 21 Encoding of object identifier values
|
||||||
|
* The encoding of an object identifier value shall consist of a length determinant (see 8.6) followed by a series of octets,
|
||||||
|
* which are the contents octets of BER encoding of the object identifier value (see Rec. ITU-T X.690 | ISO/IEC 8825-1,8.19).
|
||||||
|
*/
|
||||||
|
static guint32
|
||||||
|
dissect_oer_any_oid(tvbuff_t* tvb, guint32 offset, asn1_ctx_t* actx, proto_tree* tree, int hf_index, tvbuff_t** value_tvb,
|
||||||
|
gboolean is_absolute)
|
||||||
|
{
|
||||||
|
guint length;
|
||||||
|
const char* str;
|
||||||
|
header_field_info* hfi;
|
||||||
|
|
||||||
|
DEBUG_ENTRY("dissect_oer_any_oid");
|
||||||
|
|
||||||
|
offset = dissect_oer_length_determinant(tvb, offset, actx, tree, hf_oer_length_determinant, &length);
|
||||||
|
|
||||||
|
actx->created_item = NULL;
|
||||||
|
hfi = proto_registrar_get_nth(hf_index);
|
||||||
|
if ((is_absolute && hfi->type == FT_OID) || (!is_absolute && hfi->type == FT_REL_OID)) {
|
||||||
|
actx->created_item = proto_tree_add_item(tree, hf_index, tvb, offset, length, ENC_BIG_ENDIAN);
|
||||||
|
}
|
||||||
|
else if (FT_IS_STRING(hfi->type)) {
|
||||||
|
str = oid_encoded2string(actx->pinfo->pool, tvb_get_ptr(tvb, offset, length), length);
|
||||||
|
actx->created_item = proto_tree_add_string(tree, hf_index, tvb, offset, length, str);
|
||||||
|
if (actx->created_item) {
|
||||||
|
/* see if we know the name of this oid */
|
||||||
|
str = oid_resolved_from_encoded(actx->pinfo->pool, tvb_get_ptr(tvb, offset, length), length);
|
||||||
|
if (str) {
|
||||||
|
proto_item_append_text(actx->created_item, " (%s)", str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DISSECTOR_ASSERT_NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value_tvb)
|
||||||
|
*value_tvb = tvb_new_subset_length(tvb, offset, length);
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
guint32
|
||||||
|
dissect_oer_object_identifier(tvbuff_t* tvb, guint32 offset, asn1_ctx_t* actx, proto_tree* tree, int hf_index, tvbuff_t** value_tvb)
|
||||||
|
{
|
||||||
|
return dissect_oer_any_oid(tvb, offset, actx, tree, hf_index, value_tvb, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
/* 27 Encoding of values of the restricted character string types
|
/* 27 Encoding of values of the restricted character string types
|
||||||
* 27.1 The encoding of a restricted character string type depends on whether the type is a known-multiplier character
|
* 27.1 The encoding of a restricted character string type depends on whether the type is a known-multiplier character
|
||||||
* string type or not. The following types are known-multiplier character string types:
|
* string type or not. The following types are known-multiplier character string types:
|
||||||
@ -836,6 +887,60 @@ dissect_oer_UTF8String(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tr
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 30 Encoding of open type values
|
||||||
|
*NOTE – An open type is an ASN.1 type that can take any abstract value of any ASN.1 type. Each value of an open type consists
|
||||||
|
* of:
|
||||||
|
* a) a contained type; and
|
||||||
|
* b) a value of the contained type.
|
||||||
|
* The encoding of an open type value shall consist of a length determinant (see 8.6) followed by a series of octets, which
|
||||||
|
* are the encoding of the value of the contained type.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static guint32
|
||||||
|
dissect_oer_open_type_internal(tvbuff_t* tvb, guint32 offset, asn1_ctx_t* actx, proto_tree* tree, int hf_index, void* type_cb, asn1_cb_variant variant)
|
||||||
|
{
|
||||||
|
int type_length, start_offset;
|
||||||
|
tvbuff_t* val_tvb = NULL;
|
||||||
|
proto_tree* subtree = tree;
|
||||||
|
|
||||||
|
start_offset = offset;
|
||||||
|
|
||||||
|
|
||||||
|
offset = dissect_oer_length_determinant(tvb, offset, actx, tree, hf_oer_open_type_length, &type_length);
|
||||||
|
val_tvb = tvb_new_subset_length(tvb, offset, type_length);
|
||||||
|
|
||||||
|
actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, type_length, ENC_BIG_ENDIAN);
|
||||||
|
subtree = proto_item_add_subtree(actx->created_item, ett_oer_open_type);
|
||||||
|
|
||||||
|
if (variant == CB_NEW_DISSECTOR) {
|
||||||
|
add_new_data_source(actx->pinfo, val_tvb, "OCTET STRING");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type_cb) {
|
||||||
|
switch (variant) {
|
||||||
|
case CB_ASN1_ENC:
|
||||||
|
((oer_type_fn)type_cb)(val_tvb, 0, actx, tree, hf_index);
|
||||||
|
break;
|
||||||
|
case CB_NEW_DISSECTOR:
|
||||||
|
/* Pas actx->private_data as "data" to the called function */
|
||||||
|
((dissector_t)type_cb)(val_tvb, actx->pinfo, subtree, actx->private_data);
|
||||||
|
break;
|
||||||
|
case CB_DISSECTOR_HANDLE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
actx->created_item = proto_tree_add_expert(tree, actx->pinfo, &ei_oer_open_type, tvb, start_offset, offset - start_offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
guint32
|
||||||
|
dissect_oer_open_type(tvbuff_t* tvb, guint32 offset, asn1_ctx_t* actx, proto_tree* tree, int hf_index, oer_type_fn type_cb)
|
||||||
|
{
|
||||||
|
return dissect_oer_open_type_internal(tvb, offset, actx, tree, hf_index, (void*)type_cb, CB_ASN1_ENC);
|
||||||
|
}
|
||||||
|
|
||||||
/*--- proto_register_oer ----------------------------------------------*/
|
/*--- proto_register_oer ----------------------------------------------*/
|
||||||
void proto_register_oer(void) {
|
void proto_register_oer(void) {
|
||||||
|
|
||||||
@ -865,6 +970,11 @@ void proto_register_oer(void) {
|
|||||||
{ "Extension Present Bit", "oer.extension_present_bit",
|
{ "Extension Present Bit", "oer.extension_present_bit",
|
||||||
FT_UINT8, BASE_DEC, VALS(oer_extension_present_bit_vals), 0x00,
|
FT_UINT8, BASE_DEC, VALS(oer_extension_present_bit_vals), 0x00,
|
||||||
NULL, HFILL } },
|
NULL, HFILL } },
|
||||||
|
{ &hf_oer_open_type_length,
|
||||||
|
{ "Open Type Length", "oer.open_type_length",
|
||||||
|
FT_UINT32, BASE_DEC, NULL, 0x0,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -872,6 +982,7 @@ void proto_register_oer(void) {
|
|||||||
static gint *ett[] = {
|
static gint *ett[] = {
|
||||||
&ett_oer,
|
&ett_oer,
|
||||||
&ett_oer_sequence_of_item,
|
&ett_oer_sequence_of_item,
|
||||||
|
&ett_oer_open_type,
|
||||||
};
|
};
|
||||||
|
|
||||||
module_t *oer_module;
|
module_t *oer_module;
|
||||||
@ -889,6 +1000,8 @@ void proto_register_oer(void) {
|
|||||||
{ "oer.not_decoded_yet", PI_UNDECODED, PI_WARN, "Not decoded yet", EXPFILL }},
|
{ "oer.not_decoded_yet", PI_UNDECODED, PI_WARN, "Not decoded yet", EXPFILL }},
|
||||||
{ &ei_oer_undecoded,
|
{ &ei_oer_undecoded,
|
||||||
{ "oer.error.undecoded", PI_UNDECODED, PI_WARN, "OER: Something unknown here", EXPFILL } },
|
{ "oer.error.undecoded", PI_UNDECODED, PI_WARN, "OER: Something unknown here", EXPFILL } },
|
||||||
|
{ &ei_oer_open_type,
|
||||||
|
{ "oer.open_type.unknown", PI_PROTOCOL, PI_WARN, "Unknown Open Type", EXPFILL }},
|
||||||
};
|
};
|
||||||
|
|
||||||
expert_oer = expert_register_protocol(proto_oer);
|
expert_oer = expert_register_protocol(proto_oer);
|
||||||
|
@ -71,7 +71,7 @@ WS_DLL_PUBLIC guint32 dissect_oer_constrained_sequence_of(tvbuff_t *tvb, guint32
|
|||||||
|
|
||||||
//WS_DLL_PUBLIC guint32 dissect_oer_set_of(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *parent_tree, int hf_index, gint ett_index, const oer_sequence_t *seq);
|
//WS_DLL_PUBLIC guint32 dissect_oer_set_of(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *parent_tree, int hf_index, gint ett_index, const oer_sequence_t *seq);
|
||||||
|
|
||||||
//WS_DLL_PUBLIC guint32 dissect_oer_object_identifier(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, tvbuff_t **value_tvb);
|
WS_DLL_PUBLIC guint32 dissect_oer_object_identifier(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, tvbuff_t **value_tvb);
|
||||||
//WS_DLL_PUBLIC guint32 dissect_oer_object_identifier_str(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, const char **value_stringx);
|
//WS_DLL_PUBLIC guint32 dissect_oer_object_identifier_str(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, const char **value_stringx);
|
||||||
|
|
||||||
//WS_DLL_PUBLIC guint32 dissect_oer_relative_oid(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, tvbuff_t **value_tvb);
|
//WS_DLL_PUBLIC guint32 dissect_oer_relative_oid(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, tvbuff_t **value_tvb);
|
||||||
@ -104,7 +104,7 @@ dissect_oer_bit_string(tvbuff_t *tvb, guint32 offset _U_, asn1_ctx_t *actx, prot
|
|||||||
|
|
||||||
WS_DLL_PUBLIC guint32 dissect_oer_enumerated(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, guint32 root_num, guint32 *value, gboolean has_extension, guint32 ext_num, guint32 *value_map);
|
WS_DLL_PUBLIC guint32 dissect_oer_enumerated(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, guint32 root_num, guint32 *value, gboolean has_extension, guint32 ext_num, guint32 *value_map);
|
||||||
|
|
||||||
//WS_DLL_PUBLIC guint32 dissect_oer_open_type(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, oer_type_fn type_cb);
|
WS_DLL_PUBLIC guint32 dissect_oer_open_type(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, oer_type_fn type_cb);
|
||||||
//WS_DLL_PUBLIC guint32 dissect_oer_open_type_pdu_new(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, dissector_t type_cb);
|
//WS_DLL_PUBLIC guint32 dissect_oer_open_type_pdu_new(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, dissector_t type_cb);
|
||||||
|
|
||||||
//WS_DLL_PUBLIC guint32 dissect_oer_external_type(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, oer_type_fn type_cb);
|
//WS_DLL_PUBLIC guint32 dissect_oer_external_type(tvbuff_t *tvb, guint32 offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index, oer_type_fn type_cb);
|
||||||
|
@ -849,9 +849,9 @@ class EthCtx:
|
|||||||
|
|
||||||
#--- eth_import_type --------------------------------------------------------
|
#--- eth_import_type --------------------------------------------------------
|
||||||
def eth_import_type(self, ident, mod, proto):
|
def eth_import_type(self, ident, mod, proto):
|
||||||
#print "eth_import_type(ident='%s', mod='%s', prot='%s')" % (ident, mod, proto)
|
#print ("eth_import_type(ident='%s', mod='%s', prot='%s')" % (ident, mod, proto))
|
||||||
if ident in self.type:
|
if ident in self.type:
|
||||||
#print "already defined '%s' import=%s, module=%s" % (ident, str(self.type[ident]['import']), self.type[ident].get('module', '-'))
|
#print ("already defined '%s' import=%s, module=%s" % (ident, str(self.type[ident]['import']), self.type[ident].get('module', '-')))
|
||||||
if not self.type[ident]['import'] and (self.type[ident]['module'] == mod) :
|
if not self.type[ident]['import'] and (self.type[ident]['module'] == mod) :
|
||||||
return # OK - already defined
|
return # OK - already defined
|
||||||
elif self.type[ident]['import'] and (self.type[ident]['import'] == mod) :
|
elif self.type[ident]['import'] and (self.type[ident]['import'] == mod) :
|
||||||
@ -3960,7 +3960,7 @@ class TaggedType (Type):
|
|||||||
par=(('%(IMPLICIT_TAG)s', '%(ACTX)s', '%(TREE)s', '%(TVB)s', '%(OFFSET)s'),
|
par=(('%(IMPLICIT_TAG)s', '%(ACTX)s', '%(TREE)s', '%(TVB)s', '%(OFFSET)s'),
|
||||||
('%(HF_INDEX)s', '%(TAG_CLS)s', '%(TAG_TAG)s', '%(TAG_IMPL)s', '%(TYPE_REF_FN)s',),))
|
('%(HF_INDEX)s', '%(TAG_CLS)s', '%(TAG_TAG)s', '%(TAG_IMPL)s', '%(TYPE_REF_FN)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode tagged_type %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- SqType -----------------------------------------------------------
|
#--- SqType -----------------------------------------------------------
|
||||||
@ -4214,7 +4214,7 @@ class SequenceOfType (SeqOfType):
|
|||||||
('%(ETT_INDEX)s', '%(TABLE)s',),
|
('%(ETT_INDEX)s', '%(TABLE)s',),
|
||||||
('%(MIN_VAL)s', '%(MAX_VAL)s','%(EXT)s'),))
|
('%(MIN_VAL)s', '%(MAX_VAL)s','%(EXT)s'),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode SequenceOfType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
|
|
||||||
@ -4271,7 +4271,7 @@ class SetOfType (SeqOfType):
|
|||||||
('%(ETT_INDEX)s', '%(TABLE)s',),
|
('%(ETT_INDEX)s', '%(TABLE)s',),
|
||||||
('%(MIN_VAL)s', '%(MAX_VAL)s','%(EXT)s',),))
|
('%(MIN_VAL)s', '%(MAX_VAL)s','%(EXT)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode SetOfType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
def mk_tag_str (ctx, cls, typ, num):
|
def mk_tag_str (ctx, cls, typ, num):
|
||||||
@ -4350,7 +4350,7 @@ class SequenceType (SeqType):
|
|||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'),
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'),
|
||||||
('%(ETT_INDEX)s', '%(TABLE)s',),))
|
('%(ETT_INDEX)s', '%(TABLE)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode SequenceType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- ExtensionAdditionGroup ---------------------------------------------------
|
#--- ExtensionAdditionGroup ---------------------------------------------------
|
||||||
@ -4384,7 +4384,7 @@ class ExtensionAdditionGroup (SeqType):
|
|||||||
body = ectx.eth_fn_call('dissect_%(ER)s_sequence_eag', ret='offset',
|
body = ectx.eth_fn_call('dissect_%(ER)s_sequence_eag', ret='offset',
|
||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(TABLE)s',),))
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(TABLE)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode ExtensionAdditionGroup %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
|
|
||||||
@ -4412,7 +4412,7 @@ class SetType (SeqType):
|
|||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'),
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'),
|
||||||
('%(ETT_INDEX)s', '%(TABLE)s',),))
|
('%(ETT_INDEX)s', '%(TABLE)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode SetType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- ChoiceType ---------------------------------------------------------------
|
#--- ChoiceType ---------------------------------------------------------------
|
||||||
@ -4678,7 +4678,7 @@ class ChoiceType (Type):
|
|||||||
('%(ETT_INDEX)s', '%(TABLE)s',),
|
('%(ETT_INDEX)s', '%(TABLE)s',),
|
||||||
('%(VAL_PTR)s',),))
|
('%(VAL_PTR)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode ChoiceType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- ChoiceValue ----------------------------------------------------
|
#--- ChoiceValue ----------------------------------------------------
|
||||||
@ -4813,7 +4813,7 @@ class EnumeratedType (Type):
|
|||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'),
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s'),
|
||||||
('%(ROOT_NUM)s', '%(VAL_PTR)s', '%(EXT)s', '%(EXT_NUM)s', '%(TABLE)s',),))
|
('%(ROOT_NUM)s', '%(VAL_PTR)s', '%(EXT)s', '%(EXT_NUM)s', '%(TABLE)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode EnumeratedType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- EmbeddedPDVType -----------------------------------------------------------
|
#--- EmbeddedPDVType -----------------------------------------------------------
|
||||||
@ -4843,7 +4843,7 @@ class EmbeddedPDVType (Type):
|
|||||||
body = ectx.eth_fn_call('dissect_%(ER)s_embedded_pdv', ret='offset',
|
body = ectx.eth_fn_call('dissect_%(ER)s_embedded_pdv', ret='offset',
|
||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(TYPE_REF_FN)s',),))
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(TYPE_REF_FN)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode EmbeddedPDVType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- ExternalType -----------------------------------------------------------
|
#--- ExternalType -----------------------------------------------------------
|
||||||
@ -4873,7 +4873,7 @@ class ExternalType (Type):
|
|||||||
body = ectx.eth_fn_call('dissect_%(ER)s_external_type', ret='offset',
|
body = ectx.eth_fn_call('dissect_%(ER)s_external_type', ret='offset',
|
||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(TYPE_REF_FN)s',),))
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(TYPE_REF_FN)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode ExternalType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- OpenType -----------------------------------------------------------
|
#--- OpenType -----------------------------------------------------------
|
||||||
@ -4920,11 +4920,11 @@ class OpenType (Type):
|
|||||||
return pars
|
return pars
|
||||||
|
|
||||||
def eth_type_default_body(self, ectx, tname):
|
def eth_type_default_body(self, ectx, tname):
|
||||||
if (ectx.Per()):
|
if (ectx.Per() or ectx.Oer()):
|
||||||
body = ectx.eth_fn_call('dissect_%(ER)s_open_type%(FN_VARIANT)s', ret='offset',
|
body = ectx.eth_fn_call('dissect_%(ER)s_open_type%(FN_VARIANT)s', ret='offset',
|
||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(TYPE_REF_FN)s',),))
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(TYPE_REF_FN)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode OpenType %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
#--- InstanceOfType -----------------------------------------------------------
|
#--- InstanceOfType -----------------------------------------------------------
|
||||||
@ -5333,6 +5333,9 @@ class ObjectIdentifierType (Type):
|
|||||||
elif (ectx.Per()):
|
elif (ectx.Per()):
|
||||||
body = ectx.eth_fn_call('dissect_%(ER)s_object_identifier%(FN_VARIANT)s', ret='offset',
|
body = ectx.eth_fn_call('dissect_%(ER)s_object_identifier%(FN_VARIANT)s', ret='offset',
|
||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(VAL_PTR)s',),))
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(VAL_PTR)s',),))
|
||||||
|
elif (ectx.Oer()):
|
||||||
|
body = ectx.eth_fn_call('dissect_%(ER)s_object_identifier%(FN_VARIANT)s', ret='offset',
|
||||||
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(VAL_PTR)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode %s' % (tname)
|
||||||
return body
|
return body
|
||||||
@ -5418,7 +5421,7 @@ class RelativeOIDType (Type):
|
|||||||
body = ectx.eth_fn_call('dissect_%(ER)s_relative_oid%(FN_VARIANT)s', ret='offset',
|
body = ectx.eth_fn_call('dissect_%(ER)s_relative_oid%(FN_VARIANT)s', ret='offset',
|
||||||
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(VAL_PTR)s',),))
|
par=(('%(TVB)s', '%(OFFSET)s', '%(ACTX)s', '%(TREE)s', '%(HF_INDEX)s', '%(VAL_PTR)s',),))
|
||||||
else:
|
else:
|
||||||
body = '#error Can not decode %s' % (tname)
|
body = '#error Can not decode relative_oid %s' % (tname)
|
||||||
return body
|
return body
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user