Newer
Older
* @author ETSI / STF481 / STF507 / STF517 / STF538 / STF545
* @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 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_rectangular(
in template (value) TwoDLocation p_northwest,
in template (value) TwoDLocation p_southeast
rectangularRegion := {
{
northWest := p_northwest,
southEast := p_southeast
}
}
} // End of template m_geographicRegion_rectangular
/**
* @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) EtsiTs103097Certificate 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 := {
rectangularRegion := ?
} // 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
/**
* @desc Generic receive template for EtsiTs103097Data message
*/
template (present) EtsiTs103097Data mw_etsiTs103097Data(
template (present) Ieee1609Dot2Content p_content := ?
) := {
protocolVersion := c_protocol_version,
content := p_content
} // End of template mw_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
template (value) EtsiTs103097Data m_etsiTs103097Data_encrypted(
in template (value) EncryptedData p_encryptedData
) := {
protocolVersion := c_protocol_version,
content := { encryptedData := p_encryptedData }
} // End of template m_etsiTs103097Data_encrypted
template (present) EtsiTs103097Data mw_etsiTs103097Data_encrypted(
template (present) EncryptedData p_encryptedData := ?
) := {
protocolVersion := c_protocol_version,
content := { encryptedData := p_encryptedData }
} // End of template mw_etsiTs103097Data_encrypted
/**
* @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
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
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) Oct32 p_extDataHash
) := {
extDataHash := { sha256HashedData := p_extDataHash }
} // End of template m_signedDataPayload_ext
/**
* @desc Send templates for ToBeSignedData header
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.3 EncryptedData
*/
group encryptedData {
template (value) EncryptedData m_encryptedData(
in template (value) SequenceOfRecipientInfo p_recipients,
in template (value) SymmetricCiphertext p_ciphertex
) := {
recipients := p_recipients,
ciphertext := p_ciphertex
} // End of template m_encryptedData
template (present) EncryptedData mw_encryptedData(
template (present) SequenceOfRecipientInfo p_recipients := ?,
template (present) SymmetricCiphertext p_ciphertex := ?
) := {
recipients := p_recipients,
ciphertext := p_ciphertex
} // End of template mw_encryptedData
template (value) RecipientInfo m_recipientInfo_pskRecipInfo(
in template (value) PreSharedKeyRecipientInfo p_pskRecipInfo
) := {
pskRecipInfo := p_pskRecipInfo
} // End of template m_recipientInfo_pskRecipInfo
template (present) RecipientInfo mw_recipientInfo_pskRecipInfo(
template (present) PreSharedKeyRecipientInfo p_pskRecipInfo := ?
) := {
pskRecipInfo := p_pskRecipInfo
} // End of template mw_recipientInfo_pskRecipInfo
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
template (value) RecipientInfo m_recipientInfo_symmRecipInfo(
in template (value) SymmRecipientInfo p_symmRecipInfo
) := {
symmRecipInfo := p_symmRecipInfo
} // End of template m_recipientInfo_symmRecipInfo
template (value) RecipientInfo m_recipientInfo_certRecipInfo(
in template (value) PKRecipientInfo p_certRecipInfo
) := {
certRecipInfo := p_certRecipInfo
} // End of template m_recipientInfo_certRecipInfo
template (present) RecipientInfo mw_recipientInfo_certRecipInfo(
template (present) PKRecipientInfo p_certRecipInfo := ?
) := {
certRecipInfo := p_certRecipInfo
} // End of template mw_recipientInfo_certRecipInfo
template (value) RecipientInfo m_recipientInfo_signedDataRecipInfo(
in template (value) PKRecipientInfo p_signedDataRecipInfo
) := {
signedDataRecipInfo := p_signedDataRecipInfo
} // End of template m_recipientInfo_signedDataRecipInfo
template (value) RecipientInfo m_recipientInfo_rekRecipInfo(
in template (value) PKRecipientInfo p_rekRecipInfo
) := {
rekRecipInfo := p_rekRecipInfo
} // End of template m_recipientInfo_rekRecipInfo
template (value) PKRecipientInfo m_pKRecipientInfo(
in template (value) HashedId8 p_recipientId,
in template (value) EncryptedDataEncryptionKey p_encKey
) := {
recipientId := p_recipientId,
encKey := p_encKey
} // End of template m_pKRecipientInfo
template (present) PKRecipientInfo mw_pKRecipientInfo(
template (present) HashedId8 p_recipientId := ?,
template (present) EncryptedDataEncryptionKey p_encKey := ?
) := {
recipientId := p_recipientId,
encKey := p_encKey
} // End of template mw_pKRecipientInfo
template (value) EciesP256EncryptedKey m_evciesP256EncryptedKey(
in template (value) EccP256CurvePoint p_v,
in template (value) Oct16 p_c,
in template (value) Oct16 p_t
) :={
v := p_v,
c := p_c,
t := p_t
} // End of template m_evciesP256EncryptedKey
template (present) EciesP256EncryptedKey mw_evciesP256EncryptedKey(
template (present) EccP256CurvePoint p_v := ?,
template (present) Oct16 p_c := ?,
template (present) Oct16 p_t := ?
) :={
v := p_v,
c := p_c,
t := p_t
} // End of template mw_evciesP256EncryptedKey
template (value) EncryptedDataEncryptionKey m_encryptedDataEncryptionKey_eciesNistP256(
in template (value) EciesP256EncryptedKey p_eciesNistP256
) := {
eciesNistP256 := p_eciesNistP256
} // End of template m_encryptedDataEncryptionKey_eciesNistP256
template (present) EncryptedDataEncryptionKey mw_encryptedDataEncryptionKey_eciesNistP256(
template (present) EciesP256EncryptedKey p_eciesNistP256 := ?
) := {
eciesNistP256 := p_eciesNistP256
} // End of template mw_encryptedDataEncryptionKey_eciesNistP256
template (value) EncryptedDataEncryptionKey m_encryptedDataEncryptionKey_eciesBrainpoolP256r1(
in template (value) EciesP256EncryptedKey p_eciesBrainpoolP256r1
) := {
eciesBrainpoolP256r1 := p_eciesBrainpoolP256r1
} // End of template m_encryptedDataEncryptionKey_eciesBrainpoolP256r1
template (present) EncryptedDataEncryptionKey mw_encryptedDataEncryptionKey_eciesBrainpoolP256r1(
template (present) EciesP256EncryptedKey p_eciesBrainpoolP256r1 := ?
) := {
eciesBrainpoolP256r1 := p_eciesBrainpoolP256r1
} // End of template mw_encryptedDataEncryptionKey_eciesBrainpoolP256r1
template (value) SymmetricCiphertext m_SymmetricCiphertext_aes128ccm(
in template (value) AesCcmCiphertext p_aes128ccm
) := {
aes128ccm := p_aes128ccm
} // End of template m_SymmetricCiphertext_aes128ccm
template (present) SymmetricCiphertext mw_SymmetricCiphertext_aes128ccm(
template (present) AesCcmCiphertext p_aes128ccm := ?
) := {
aes128ccm := p_aes128ccm
} // End of template mw_SymmetricCiphertext_aes128ccm
template (value) AesCcmCiphertext m_aesCcmCiphertext(
in template (value) Oct12 p_nonce,
in template (value) Opaque p_ccmCiphertext
) := {
nonce := p_nonce,
ccmCiphertext := p_ccmCiphertext
} // End of template m_aesCcmCiphertext
template (present) AesCcmCiphertext mw_aesCcmCiphertext(
template (present) Oct12 p_nonce := ?,
template (present) Opaque p_ccmCiphertext := ?
) := {
nonce := p_nonce,
ccmCiphertext := p_ccmCiphertext
} // End of template mw_aesCcmCiphertext
/**
* @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 Receive template for 'unsecured' Payload
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload
*/
template (present) Ieee1609Dot2Content mw_ieee1609Dot2Data_unsecured(
template (present) Opaque p_unsecuredData := ?
) := {
unsecuredData := p_unsecuredData
} // End of template mw_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
/**
* @desc Send template for 'signed' Payload
* @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload
*/
template (present) Ieee1609Dot2Content mw_ieee1609Dot2Data_signed(
template (present) SignedData p_signedData := ?
) := {
signedData := p_signedData
} // End of template mw_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,
} // End of template mw_ieee1609Dot2_headerInfo
/**
* @desc Basic receive HeaderInfo template with ETSI ITS restrction
*/
template (present) HeaderInfo mw_ieee1609Dot2_headerInfo_request_certificate(
template (present) Psid p_psid := ?,
template (present) Certificate p_requestedCertificate := ?
) modifies mw_ieee1609Dot2_headerInfo := {
psid := p_psid,
generationTime := *,
expiryTime := *,
generationLocation := *,
p2pcdLearningRequest := omit,
missingCrlIdentifier := omit,
encryptionKey := omit,
inlineP2pcdRequest := omit,
requestedCertificate := p_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,
in template (omit) Time64 p_expiryTime := omit,
in template (omit) SequenceOfHashedId3 p_inlineP2pcdRequest := omit
) modifies m_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime,
expiryTime := p_expiryTime,
generationLocation := omit,
inlineP2pcdRequest := p_inlineP2pcdRequest
/**
* @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 SequenceOfHashedId3 p_inlineP2pcdRequest := omit,
template Certificate p_requestedCertificate := omit
psid := c_its_aid_CAM,
generationTime := p_generationTime,
generationLocation := omit,
inlineP2pcdRequest := p_inlineP2pcdRequest,
requestedCertificate := p_requestedCertificate
*
* 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) ThreeDLocation p_generationLocation,
in template (omit) Time64 p_expiryTime := omit
) modifies m_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime,
expiryTime := p_expiryTime,
generationLocation := p_generationLocation
} // End of template m_headerInfo_denm
/**
*
* Clause 7.1.2 Security profile for DENMs
*/
template (present) HeaderInfo mw_headerInfo_denm(
template (present) Psid p_psid := c_its_aid_DENM,
template (present) Time64 p_generationTime := ?,
template (present) ThreeDLocation p_generationLocation := ?,
template Time64 p_expiryTime := omit
) modifies mw_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime,
expiryTime := p_expiryTime,
generationLocation := p_generationLocation
} // End of template mw_headerInfo_denm
*
* Clause 7.1.3 Generic security profile for other signed messages
template (omit) HeaderInfo m_headerInfo_gn(
in template (value) Time64 p_generationTime
generationTime := p_generationTime