"git@forge.etsi.org:LIBS/LibIts.git" did not exist on "c1a5da28dc4a66da0350fedff46400f21ee86354"
Newer
Older
* @author ETSI / STF481 / STF507 / STF517 / STF538
* @version $URL$
* $Id$
* @desc Module containing templates for Security Protocol
* @copyright ETSI Copyright Notification
* No part may be reproduced except as authorized by written permission.
* The copyright and the foregoing restriction extend to reproduction in all media.
* All rights reserved.
garciay
committed
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_DataStrings all;
// LibItsCommon
import from LibItsCommon_TypesAndValues all;
// LibItsGeoNetworking
import from LibItsGeoNetworking_TypesAndValues all;
import from IEEE1609dot2BaseTypes language "ASN.1:1997" all;
import from IEEE1609dot2 language "ASN.1:1997" all;
import from EtsiTs103097Module language "ASN.1:1997" all;
garciay
committed
import from LibItsSecurity_TypesAndValues all;
import from LibItsSecurity_Pixits all;
group constants {
/**
* @desc Protocol version
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.1 Ieee1609Dot2Data
* @desc Certificate version
* @see Draft ETSI TS 103 097 V1.3.1 Clause 6.1 Certificate
/**
* @desc Its AID for Other
* @see Draft ETSI TS 103 097 V1.3.1 Clause 7.3 Security profile for DENMs
//FIXME RGY definition type is changed to modulepar, as Titan doesn't support dynamic constants
// const IntX c_its_aid_Other := PX_OTHER_ITS_AID;
template Psid c_its_aid_Other := PX_OTHER_ITS_AID;
* @desc Minimal value of Longitude
const SecLongitude c_minLongitude := -1799999999; // TODO Use constant from IEEE1609dot2BaseTypes
* @desc Maximal value of Longitude
const SecLongitude c_maxLongitude := 1800000000; // TODO Use constant from IEEE1609dot2BaseTypes
* @desc Minimal value of Latitude
const SecLatitude c_minLatitude := -900000000; // TODO Use constant from IEEE1609dot2BaseTypes
/**
* @desc Maximal value of Latitude
*/
const SecLatitude c_maxLatitude := 900000000; // TODO Use constant from IEEE1609dot2BaseTypes
/**
* @desc List of ISO-3166 country codes
*/
4, 8, 10, 12, 16, 20, 24, 28, 31, 32, 36, 40, 44, 48, 50, 51, 52, 56,
60, 64, 68, 70, 72, 74, 76, 84, 86, 90, 92, 96, 100, 104, 108, 112, 116, 120,
124, 132, 136, 140, 144, 148, 152, 156, 158, 162, 166, 170, 174, 175, 178, 180, 184, 188,
191, 192, 196, 203, 204, 208, 212, 214, 218, 222, 226, 231, 232, 233, 234, 238, 239, 242,
246, 248, 250, 254, 258, 260, 262, 266, 268, 270, 275, 276, 288, 292, 296, 300, 304, 308,
312, 316, 320, 324, 328, 332, 334, 336, 340, 344, 348, 352, 356, 360, 364, 368, 372, 376,
380, 384, 388, 392, 398, 400, 404, 408, 410, 414, 417, 418, 422, 426, 428, 430, 434, 438,
440, 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, 480, 484, 492, 496, 498, 499, 500,
504, 508, 512, 516, 520, 524, 528, 531, 533, 534, 535, 540, 548, 554, 558, 562, 566, 570,
574, 578, 580, 581, 583, 584, 585, 586, 591, 598, 600, 604, 608, 612, 616, 620, 624, 626,
630, 634, 638, 642, 643, 646, 652, 654, 659, 660, 662, 663, 666, 670, 674, 678, 682, 686,
688, 690, 694, 702, 703, 704, 705, 706, 710, 716, 724, 728, 729, 732, 740, 744, 748, 752,
756, 760, 762, 764, 768, 772, 776, 780, 784, 788, 792, 795, 796, 798, 800, 804, 807, 810,
818, 826, 831, 832, 833, 834, 840, 850, 854, 858, 860, 862, 876, 882, 887, 894
/**
* @desc List of United Nations Statistics Division country codes
*/
const SequenceOfUint16 c_unStatsAdditionalCodes := {
1, 2, 5, 9, 11, 13, 14, 15, 17, 18, 19, 21, 29, 30, 34, 35, 39, 53,
54, 57, 61, 142, 143, 145, 150, 151, 154, 155, 199, 419, 432, 680, 722, 830
};
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4 Basic format elements
/**
* @desc Dummy receive templates for security headers
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2 Specification of basic format elements
*/
group dummyBasicFormatElementsRecv {
/**
* @desc Dummy receive template for TwoDLocation
* @param p_latitude Latitude range from 900 000 000 to +900 000 000
* @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.19 TwoDLocation
*/
template (present) TwoDLocation mw_twoDLocation_dummy := {
latitude := ?,
longitude := ?
} // End of template mw_twoDLocation_dummy
/**
* @desc Dummy send template for ThreeDLocation
* @param p_latitude Latitude range from 900 000 000 to +900 000 000
* @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000
* @param p_elevation Elevation relative to the WGS-84 ellipsoid in decimetres
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.20 ThreeDLocation
template (present) ThreeDLocation mw_threeDLocation_dummy := {
latitude := ?,
longitude := ?,
elevation := ?
} // End of template mw_threeDLocation_dummy
} // End of group dummyBasicFormatElementsRecv
} // End of group dummyBasicFormatElements
/**
* @desc Send/receive templates for security headers
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4 Basic format elements
*/
group basicFormatElements {
/**
* @desc Send templates for security headers
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2 Specification of basic format elements
*/
group basicFormatElementsSend {
/**
* @desc Send templates for security algorithm descriptions
*/
group algorithms {
* @desc Send template for EccP256CurvePoint description based on x_coordinate_only type
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.5 EccP256CurvePoint
* @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
template (value) EccP256CurvePoint m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
in template (value) octetstring p_x
} // End of template m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only
garciay
committed
/**
* @desc Send template for EccP256CurvePoint description based on y_coordinate_only type
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.5 EccP256CurvePoint
* @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
garciay
committed
*/
template (value) EccP256CurvePoint m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only(
in template (value) octetstring p_y
garciay
committed
) := {
garciay
committed
} // End of template m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only
* @desc Send template for EccP256CurvePoint description based on uncompressed type
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.5 EccP256CurvePoint
* @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
template (value) EccP256CurvePoint m_eccPointecdsa_nistp256_with_sha256_uncompressed(
in template (value) octetstring p_x,
in template (value) octetstring p_y
uncompressedP256 := {
x := p_x,
y := p_y
}
} // End of template m_eccPointecdsa_nistp256_with_sha256_uncompressed
* @desc Send templates for Signature description
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.9 Signature
* @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
/**
* @desc Send template for signatures based on ECDSA algorithm
* @member p_ecdsaSignature The ECDSA based signature
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.9 Signature
in template (value) EcdsaP256Signature p_ecdsaSignature
/**
* @desc Send template for ECDSA based signature
* @member p_r The coordinate of the elliptic curve point resulting from multiplying the generator element by the ephemeral private key
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.10 EcdsaP256Signature
template (value) EcdsaP256Signature m_ecdsaSignature(
in template (value) EccP256CurvePoint p_rSig,
in template (value) octetstring p_sSig
} // End of group signatures
group signerInfos {
/**
* @desc Send template for self signed message
*/
template (value) SignerIdentifier m_signerIdentifier_self := {
self_ := NULL
} // End of template m_signerIdentifier_self
/**
* @desc Send template for certificate signed message
*/
template (value) SignerIdentifier m_signerIdentifier_certificate(
in template (value) Certificate p_certificate // TODO Use SingleEtsiTs103097Certificate
certificate := { p_certificate } // Only one
} // End of template m_signerIdentifier_certificate
/**
* @desc Send template for digest signed message
*/
template (value) SignerIdentifier m_signerIdentifier_digest(
in template (value) HashedId8 p_digest := '0000000000000000'O
) := {
digest := p_digest
} // End of template m_signerIdentifier_digest
* @desc Send template for certificate signed message
template (value) SignerIdentifier m_signerIdentifier_certificates(
in template (value) SequenceOfCertificate p_certificates := {}
certificate := p_certificates
} // End of template m_signerIdentifier_certificates
/**
* @desc Send template for TwoDLocation
* @param p_latitude Latitude range from 900 000 000 to +900 000 000
* @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.19 TwoDLocation
*/
template (value) TwoDLocation m_twoDLocation(
in template (value) SecLatitude p_latitude,
in template (value) SecLongitude p_longitude
) := {
latitude := p_latitude,
longitude := p_longitude
} // End of template m_twoDLocation
/**
* @desc Send template for ThreeDLocation
* @param p_latitude Latitude range from 900 000 000 to +900 000 000
* @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000
* @param p_elevation Elevation relative to the WGS-84 ellipsoid in decimetres
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.20 ThreeDLocation
*/
template (value) ThreeDLocation m_threeDLocation(
in template (value) SecLatitude p_latitude,
in template (value) SecLongitude p_longitude,
in template (value) SecElevation p_elevation
) := {
latitude := p_latitude,
longitude := p_longitude,
elevation := p_elevation
} // End of template m_threeDLocation
/**
* @desc Send template circular geographic region
* @param p_center Circle center
* @param p_radius Circle radius
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
*/
template (value) GeographicRegion m_geographicRegion_circle(
in template (value) TwoDLocation p_center,
in template (value) UInt16 p_radius
circularRegion := {
center := p_center,
radius := p_radius
}
} // End of template m_geographicRegion_circle
/**
* @desc Send template rectangular geographic region
* @param p_northwest Upper left corner
* @param p_southeast Lower rigth corner
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
template (value) GeographicRegion m_geographicRegion_rectangle(
in template (value) TwoDLocation p_northwest,
in template (value) TwoDLocation p_southeast
rectangularRegion := {
{
northWest := p_northwest,
southEast := p_southeast
}
}
} // End of template m_geographicRegion_rectangle
/**
* @desc Send template polygonial geographic region
* @param p_polygonal_region Polygonial region description
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
*/
template (value) GeographicRegion m_geographicRegion_polygonial(
in template (value) PolygonalRegion p_polygonal_region
} // End of template m_geographicRegion_polygonial
/**
* @desc Send template for geographic identified region
* @param p_identifiedRegion Indentified region
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
template (value) GeographicRegion m_geographicRegion_identifiedRegion(
in template (value) SequenceOfIdentifiedRegion p_identifiedRegions
} // End of template m_geographicRegion_identifiedRegion
template (value) IdentifiedRegion m_identifiedRegion_country_only(
in template (value) CountryOnly p_countryOnly
) := {
countryOnly := p_countryOnly
} // End of template m_identifiedRegion_country_only
template (value) IdentifiedRegion m_identifiedRegion_country_and_region(
in template (value) CountryOnly p_countryOnly,
in template (value) SequenceOfUint8 p_regions
) := {
countryAndRegions := {
countryOnly := p_countryOnly,
regions := p_regions
}
} // End of template m_identifiedRegion_country_and_region
} // End of group basicFormatElementsSend
* @desc Receive templates for security headers
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2 Specification of basic format elements
group basicFormatElementsRecv {
/**
* @desc Recv template for message signed with digest
*/
template (present) SignerIdentifier mw_signerIdentifier_digest(
in template (present) HashedId8 p_digest := ?
digest := p_digest
} // End of template mw_signerIdentifier_digest
template (present) SignerIdentifier mw_signerIdentifier_certificate(
in template (present) Certificate p_certificate := ?
certificate := { p_certificate }
} // End of template m_signerIdentifier_certificate
template (present) SignerIdentifier mw_signerIdentifier_certificates(
in template (present) SequenceOfCertificate p_certificates := ?
certificate := p_certificates
} // End of template mw_signerIdentifier_certificates
/**
* @desc Receive templates for Signature description
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.9 Signature
* @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
*/
group signatures {
/**
* @desc Receive template for signatures based on ECDSA algorithm
* @member p_ecdsaSignature The ECDSA based signature
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.9 Signature
*/
template (present) Signature mw_signature(
in template (present) EcdsaP256Signature p_ecdsaSignature := ?
} // End of template mw_signature
/**
* @desc Receive template for ECDSA based signature
* @member p_r The coordinate of the elliptic curve point resulting from multiplying the generator element by the ephemeral private key
* @member p_s The signature
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.10 EcdsaP256Signature
template (present) EcdsaP256Signature mw_ecdsaSignature(
in template (present) EccP256CurvePoint p_rSig := ?,
in template (present) octetstring p_sSig := ?
} // End of template mw_ecdsaSignature
} // End of group signatures
* @desc Receive template for TwoDLocation
* @param p_latitude Latitude range from 900 000 000 to +900 000 000
* @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.19 TwoDLocation
*/
template (present) TwoDLocation mw_twoDLocation(
in template (present) SecLatitude p_latitude,
in template (present) SecLongitude p_longitude
) := {
latitude := p_latitude,
longitude := p_longitude
} // End of template mw_twoDLocation
/**
* @desc Receive template for ThreeDLocation
* @param p_latitude Latitude range from 900 000 000 to +900 000 000
* @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000
* @param p_elevation Elevation relative to the WGS-84 ellipsoid in decimetres
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.20 ThreeDLocation
*/
template (present) ThreeDLocation mw_threeDLocation(
in template (present) SecLatitude p_latitude,
in template (present) SecLongitude p_longitude,
in template (present) SecElevation p_elevation
) := {
latitude := p_latitude,
longitude := p_longitude,
elevation := p_elevation
} // End of template mw_threeDLocation
/**
* @desc Receive template circular geographic region
* @param p_center Circle center
* @param p_radius Circle radius
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
*/
template (present) GeographicRegion mw_geographicRegion_circle(
in template (present) TwoDLocation p_center := ?,
in template (present) UInt16 p_radius := ?
circularRegion := {
center := p_center,
radius := p_radius
}
} // End of template mw_geographicRegion_circle
/**
* @desc Basic receive template rectangular geographic region
* @param p_northwest Upper left corner
* @param p_southeast Lower rigth corner
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
template (present) GeographicRegion mw_geographicRegion_rectangular(
in template (present) TwoDLocation p_northwest := ?,
in template (present) TwoDLocation p_southeast := ?
rectangularRegion := {
{
northWest := p_northwest,
southEast := p_southeast
}
}
} // End of template mw_geographicRegion_rectangular
/**
* @desc Receive template polygonial geographic region
* @param p_polygonal_region Polygonial region description
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
template (present) GeographicRegion mw_geographicRegion_polygonal(
in template (present) PolygonalRegion p_polygonal_region := ?
} // End of template mw_geographicRegion_polygonial
/**
* @desc Receive template for geographic identified region
* @param p_identifiedRegion Indentified region
* @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.21 GeographicRegion
template (present) GeographicRegion mw_geographicRegion_identified(
in template (present) SequenceOfIdentifiedRegion p_identifiedRegion := ?
} // End of template mw_geographicRegion_identifiedRegion
template (present) IdentifiedRegion mw_identifiedRegion_country_only
countryOnly := ?// FIXME ((all from c_iso3166Codes), (all from c_unStatsAdditionalCodes))
template (present) IdentifiedRegion mw_identifiedRegion_country_and_region := {
countryAndRegions := {
countryOnly := ?, // FIXME ((all from c_iso3166Codes), (all from c_unStatsAdditionalCodes)),
regions := ?
}
} // End of group basicFormatElementsRecv
* @desc Send templates for security headers
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.1 EtsiTs103097Data
* @desc Generic send template for EtsiTs103097Data message
template (value) EtsiTs103097Data m_etsiTs103097Data(
in template (value) Ieee1609Dot2Content p_content
) := {
protocolVersion := c_protocol_version,
content := p_content
} // End of template m_etsiTs103097Data
template (value) EtsiTs103097Data m_etsiTs103097Data_unsecured(
in template (value) Opaque p_unsecuredData
) := {
protocolVersion := c_protocol_version,
content := { unsecuredData := p_unsecuredData }
} // End of template m_secured_data_unsecured
template (value) EtsiTs103097Data m_etsiTs103097Data_signed(
in template (value) SignedData p_signedData
) := {
protocolVersion := c_protocol_version,
content := { signedData := p_signedData }
} // End of template m_secured_data_signed
template (present) EtsiTs103097Data mw_etsiTs103097Data_signed(
template (present) SignedData p_signedData := ?
) := {
protocolVersion := c_protocol_version,
content := { signedData := p_signedData }
} // End of template mw_secured_data_signed
* @desc Generic send template for EtsiTs103097Data message
template (present) EtsiTs103097Data mw_etsiTs103097Data(
template (present) Ieee1609Dot2Content p_content := ?
) := {
protocolVersion := c_protocol_version,
content := p_content
/**
* @desc Generic send template for EtsiTs103097Data message
*/
template (value) EtsiTs103097Data m_etsiTs103097Data_wrong_protocol(
in template (value) UInt8 p_protocol_version,
in template (value) Ieee1609Dot2Content p_content
) := {
protocolVersion := c_protocol_version,
content := p_content
} // End of template m_etsiTs103097Data_wrong_protocol
* @desc Send templates for ToBeSignedData header
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 SignedData
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
group signedData {
template (value) SignedData m_signedData(
in template (value) HashAlgorithm p_hashId,
in template (value) ToBeSignedData p_tbsData,
in template (value) SignerIdentifier p_signer,
in template (value) Signature p_signature_
) := {
hashId := p_hashId,
tbsData := p_tbsData,
signer := p_signer,
signature_ := p_signature_
} // End of template m_signedData
template (present) SignedData mw_signedData(
template (present) HashAlgorithm p_hashId := ?,
template (present) ToBeSignedData p_tbsData := ?,
template (present) SignerIdentifier p_signer := ?,
template (present) Signature p_signature_ := ?
) := {
hashId := p_hashId,
tbsData := p_tbsData,
signer := p_signer,
signature_ := p_signature_
} // End of template mw_signedData
template (value) ToBeSignedData m_toBeSignedData(
in template (value) SignedDataPayload p_payload,
in template (value) HeaderInfo p_headerInfo
) := {
payload := p_payload,
headerInfo := p_headerInfo
} // End of template m_toBeSignedData
template (present) ToBeSignedData mw_toBeSignedData(
template (present) SignedDataPayload p_payload := ?,
template (present) HeaderInfo p_headerInfo := ?
) := {
payload := p_payload,
headerInfo := p_headerInfo
} // End of template mw_toBeSignedData
template (value) SignedDataPayload m_signedDataPayload(
in template (value) Ieee1609Dot2Data p_data
) := {
data := p_data,
extDataHash := omit
} // End of template m_signedDataPayload
template (present) SignedDataPayload mw_signedDataPayload(
template (present) Ieee1609Dot2Data p_data := ?
) := {
data := p_data,
extDataHash := *
} // End of template mw_signedDataPayload
template (value) SignedDataPayload m_signedDataPayload_ext(
in template (value) Ieee1609Dot2Data p_data,
in template (value) Oct32 p_extDataHash
) := {
data := p_data,
extDataHash := { sha256HashedData := p_extDataHash }
} // End of template m_signedDataPayload_ext
} // End of group signedData
/**
* @desc Send/Receive templates for Payload
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload
*/
group ieee1609Dot2Data {
* @desc Send template for Ieee1609Dot2Data
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload
template (value) Ieee1609Dot2Data m_ieee1609Dot2Data(
in template (value) Ieee1609Dot2Content p_content
) := {
content := p_content
} // End of template m_ieee1609Dot2Data
/**
* @desc Receive template for Ieee1609Dot2Data
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload
*/
template (present) Ieee1609Dot2Data mw_ieee1609Dot2Data(
template (present) Ieee1609Dot2Content p_content := ?
) := {
content := p_content
} // End of template mw_ieee1609Dot2Data
* @desc Send template for 'unsecured' Payload
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload
template (value) Ieee1609Dot2Content m_ieee1609Dot2Data_unsecured(
in template (value) Opaque p_unsecuredData
) := {
unsecuredData := p_unsecuredData
} // End of template m_ieee1609Dot2Data_unsecured
* @desc Send template for 'signed' Payload
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload
template (value) Ieee1609Dot2Content m_ieee1609Dot2Data_signed(
in template (value) SignedData p_signedData
) := {
signedData := p_signedData
} // End of template m_ieee1609Dot2Data_signed
} // End of group ieee1609Dot2Data
/**
* @desc Send/Receive templates for HeaderInfo
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.4 HeaderInfo
*/
group headerFields {
/**
* @desc Basic send HeaderInfo template with ETSI ITS restrction
*/
template (omit) HeaderInfo m_ieee1609Dot2_headerInfo(
in template (value) Psid p_psid
) := {
psid := p_psid,
generationTime := omit,
expiryTime := omit,
generationLocation := omit,
p2pcdLearningRequest := omit,
missingCrlIdentifier := omit,
encryptionKey := omit,
inlineP2pcdRequest := omit,
requestedCertificate := omit
} // End of template m_ieee1609Dot2_headerInfo
* @desc Basic receive HeaderInfo template with ETSI ITS restrction
*/
template (present) HeaderInfo mw_ieee1609Dot2_headerInfo(
template (present) Psid p_psid := ?
) := {
psid := p_psid,
generationTime := *,
expiryTime := *,
generationLocation := *,
p2pcdLearningRequest := omit,
missingCrlIdentifier := omit,
encryptionKey := omit,
inlineP2pcdRequest := *,
requestedCertificate := *
} // End of template mw_ieee1609Dot2_headerInfo
/**
* @desc CAM specific send HeaderInfo template with ETSI ITS restrction
* @see Clause 7.1.1 Security profile for CAMs
template (omit) HeaderInfo m_headerInfo_cam(
in template (value) Psid p_psid := c_its_aid_CAM,
in template (value) Time64 p_generationTime,
) modifies m_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime,
expiryTime := p_expiryTime,
/**
* @desc CAM specific receive HeaderInfo template with ETSI ITS restrction
*
* Clause 7.1.1 Security profile for CAMs
*/
template (present) HeaderInfo mw_headerInfo_cam(
template (present) Psid p_psid := c_its_aid_CAM,
template Time64 p_generationTime := omit,
template Time64 p_expiryTime := omit,
template ThreeDLocation p_generationLocation := omit
) modifies mw_ieee1609Dot2_headerInfo := {
psid := c_its_aid_CAM,
generationTime := p_generationTime,
expiryTime := p_expiryTime,
generationLocation := p_generationLocation
} // End of template mw_headerInfo_cam
*
* Clause 7.1.2 Security profile for DENMs
template (omit) HeaderInfo m_headerInfo_denm(
in template (value) Psid p_psid := c_its_aid_DENM,
in template (value) Time64 p_generationTime,
in template (value) Time64 p_expiryTime,
in template (omit) ThreeDLocation p_generationLocation := omit
) modifies m_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime,
expiryTime := p_expiryTime,
generationLocation := p_generationLocation
} // End of template m_headerInfo_denm
*
* Clause 7.1.3 Generic security profile for other signed messages
template (omit) HeaderInfo m_headerInfo_gn(
in template (value) Psid p_psid := 141, // TODO ITS-AID for GN
in template (value) Time64 p_generationTime,
in template (value) Time64 p_expiryTime,
in template (omit) ThreeDLocation p_generationLocation := omit
) modifies m_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime,
expiryTime := p_expiryTime,
generationLocation := p_generationLocation
} // End of template m_headerInfo_gn
} // End of group headerFields
group signatures {
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
template (value) Signature m_signature_ecdsaNistP256(
in template (value) EcdsaP256Signature p_ecdsaNistP256Signature
) := {
ecdsaNistP256Signature := p_ecdsaNistP256Signature
} // End of template m_signature_ecdsaNistP256
template (present) Signature mw_signature_ecdsaNistP256(
template (present) EcdsaP256Signature p_ecdsaNistP256Signature := ?
) := {
ecdsaNistP256Signature := p_ecdsaNistP256Signature
} // End of template mw_signature_ecdsaNistP256
template (value) Signature m_signature_ecdsaBrainpoolP256r1(
in template (value) EcdsaP256Signature p_ecdsaBrainpoolP256r1Signature
) := {
ecdsaBrainpoolP256r1Signature := p_ecdsaBrainpoolP256r1Signature
} // End of template m_signature_ecdsaBrainpoolP256r1
template (present) Signature mw_signature_ecdsaBrainpoolP256r1(
template (present) EcdsaP256Signature p_ecdsaBrainpoolP256r1Signature := ?
) := {
ecdsaBrainpoolP256r1Signature := p_ecdsaBrainpoolP256r1Signature
} // End of template m_signature_ecdsaBrainpoolP256r1
template (value) Signature m_signature_ecdsaBrainpoolP384r1(
in template (value) EcdsaP384Signature p_ecdsaBrainpoolP384r1Signature
) := {
ecdsaBrainpoolP384r1Signature := p_ecdsaBrainpoolP384r1Signature
} // End of template m_signature_ecdsaBrainpoolP384r1
template (present) Signature mw_signature_ecdsaBrainpoolP384r1(
template (present) EcdsaP384Signature p_ecdsaBrainpoolP384r1Signature := ?
) := {
ecdsaBrainpoolP384r1Signature := p_ecdsaBrainpoolP384r1Signature
} // End of template mw_signature_ecdsaBrainpoolP384r1
template (value) EcdsaP256Signature m_ecdsaP256Signature(
in template (value) EccP256CurvePoint p_rSig,
in template (value) Oct32 p_sSig
) := {
rSig := p_rSig,
sSig := p_sSig
} // End of template m_ecdsaP256Signature
template (present) EcdsaP256Signature mw_ecdsaP256Signature(
template (present) EccP256CurvePoint p_rSig,
template (present) Oct32 p_sSig
) := {
rSig := p_rSig,
sSig := p_sSig
} // End of template mw_ecdsaP256Signature
template (value) EcdsaP384Signature m_ecdsaP384Signature(
in template (value) EccP384CurvePoint p_rSig,
in template (value) Oct48 p_sSig
) := {
rSig := p_rSig,
sSig := p_sSig
} // End of template m_ecdsaP384Signature
template (present) EcdsaP384Signature mw_ecdsaP384Signature(
template (present) EccP384CurvePoint p_rSig := ?,
template (present) Oct48 p_sSig := ?
) := {
rSig := p_rSig,
sSig := p_sSig
} // End of template mw_ecdsaP384Signature
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
template (value) EccP256CurvePoint m_eccP256CurvePoint_x_only(
in template (value) Oct32 p_x_only
) := {
x_only := p_x_only
} // End of template m_eccP256CurvePoint_x_only
template (present) EccP256CurvePoint mw_eccP256CurvePoint_x_only(
template (present) Oct32 p_x_only := ?
) := {
x_only := p_x_only
} // End of template mw_eccP256CurvePoint_x_only
template (value) EccP256CurvePoint m_eccP256CurvePoint_compressed_y_0(
in template (value) Oct32 p_compressed_y_0
) := {
compressed_y_0 := p_compressed_y_0
} // End of template m_eccP256CurvePoint_compressed_y_0
template (present) EccP256CurvePoint mw_eccP256CurvePoint_compressed_y_0(
template (present) Oct32 p_compressed_y_0 := ?
) := {
compressed_y_0 := p_compressed_y_0
} // End of template mw_eccP256CurvePoint_compressed_y_0
template (value) EccP256CurvePoint m_eccP256CurvePoint_compressed_y_1(
in template (value) Oct32 p_compressed_y_1
) := {
compressed_y_1 := p_compressed_y_1
} // End of template m_eccP256CurvePoint_compressed_y_1
template (present) EccP256CurvePoint mw_eccP256CurvePoint_compressed_y_1(
template (present) Oct32 p_compressed_y_1 := ?
) := {
compressed_y_1 := p_compressed_y_1
} // End of template mw_eccP256CurvePoint_compressed_y_1
template (value) EccP256CurvePoint m_eccP256CurvePoint_uncompressed(
in template (value) Oct32 p_x,
in template (value) Oct32 p_y
) := {
uncompressedP256 := {
x := p_x,
y := p_y
}
} // End of template m_eccP256CurvePoint_uncompressed
template (present) EccP256CurvePoint mw_eccP256CurvePoint_uncompressed(
template (present) Oct32 p_x := ?,
template (present) Oct32 p_y := ?
) := {
uncompressedP256 := {
x := p_x,
y := p_y
}
} // End of template mw_eccP256CurvePoint_uncompressed
template (value) EccP384CurvePoint m_eccP384CurvePoint_x_only(
in template (value) Oct48 p_x_only
) := {
x_only := p_x_only
} // End of template m_eccP384CurvePoint_x_only
template (present) EccP384CurvePoint mw_eccP384CurvePoint_x_only(
template (present) Oct48 p_x_only := ?
) := {
x_only := p_x_only
} // End of template mw_eccP384CurvePoint_x_only
template (value) EccP384CurvePoint m_eccP384CurvePoint_compressed_y_0(
in template (value) Oct48 p_compressed_y_0
) := {
compressed_y_0 := p_compressed_y_0
} // End of template m_eccP384CurvePoint_compressed_y_0
template (present) EccP384CurvePoint mw_eccP384CurvePoint_compressed_y_0(
template (present) Oct48 p_compressed_y_0 := ?
) := {
compressed_y_0 := p_compressed_y_0
} // End of template mw_eccP384CurvePoint_compressed_y_0
template (value) EccP384CurvePoint m_eccP384CurvePoint_compressed_y_1(
in template (value) Oct48 p_compressed_y_1
) := {
compressed_y_1 := p_compressed_y_1
} // End of template m_eccP384CurvePoint_compressed_y_1
template (present) EccP384CurvePoint mw_eccP384CurvePoint_compressed_y_1(
template (present) Oct48 p_compressed_y_1 := ?
) := {
compressed_y_1 := p_compressed_y_1
} // End of template mw_eccP384CurvePoint_compressed_y_1
template (value) EccP384CurvePoint m_eccP384CurvePoint_uncompressed(
in template (value) Oct48 p_x,
in template (value) Oct48 p_y
) := {
uncompressedP384 := {
x := p_x,
y := p_y
}