Newer
Older
/**
* @author ETSI / STF481
* @version $URL$
* $Id$
* @desc Module containing templates for Security Protocol
*
*/
module LibItsSecurity_Templates {
// LibCommon
import from LibCommon_BasicTypesAndValues {
type
// // LibIts
// import from CAM_PDU_Descriptions language "ASN.1:1997" {
// type CAM
// }
// import from DENM_PDU_Descriptions language "ASN.1:1997" {
// type DENM
// }
//
// LibItsSecurity
import from LibItsSecurity_TypesAndValues all;
import from LibItsSecurity_Pixits all;
// import from LibItsSecurity_TestSystem {
// type
// GnSecurityReq, GnSecurityInd
// }
// template (value) GnSecurityReq m_gnSecurityReq(
// in template (value) SecuredMessage p_msgReq
// ) := {
// msgReq := p_msgReq
// } // End of template m_gnSecurityReq
//
// template (present) GnSecurityInd mw_gnSecurityInd(
// in template (present) SecuredMessage p_msgInd
// ) := {
// msgInd := p_msgInd
// } // End of template mw_gnSecurityIng
//
group constants {
/**
* @desc Protocol version
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.1 SecuredMessage
*/
const UInt8 c_protocol_version := 2;
/**
* @desc Security profile identifier for CAMs
* @see Draft ETSI TS 103 097 V1.1.6 Clause 7.1 Security profile for CAMs
*/
const UInt8 c_security_profileCAMs := 1;
/**
* @desc Security profile identifier for DENMs
* @see Draft ETSI TS 103 097 V1.1.6 Clause 7.2 Security profile for DENMs
*/
const UInt8 c_security_profileDENMs := 2;
/**
* @desc Security profile identifier for other messages
* @see Draft ETSI TS 103 097 V1.1.6 Clause 7.3 Generic security profile for other signed messages
*/
const UInt8 c_security_profileOthers := 3;
* @desc Certificate version
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6.1 Certificate
* @desc Dummy send/receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4 Basic format elements
* @desc Dummy send templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2 Specification of basic format elements
group dummyAlgorithms {
/**
* @desc Generic send template for EccPoint description
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.5 EccPoint
* @see Draft ETSI TS 103 097 V1.1.6 Table 2: Derivation of field sizes depending on the used algorithm
*/
template (value) EccPoint m_eccPoint_dummy := {
field_size := f_int2UInt8(1 + lengthof(PX_ECDSA_X_COORDINATE)),
} // End of template m_eccPoint_dummy
/**
* @desc Generic send template for AES CCM description
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.5 EccPoint
* @see Draft ETSI TS 103 097 V1.1.6 Table 2: Derivation of field sizes depending on the used algorithm
*/
template (value) EccPoint m_aesccm_dummy := {
algorithm := e_ecies_nistp256,
field_size := f_int2UInt8(1 + lengthof(PX_AESCCM_X_COORDINATE)),
type_ := e_uncompressed,
x := PX_AESCCM_X_COORDINATE,
y := {
y := PX_AESCCM_Y_COORDINATE // WARNING siseof(y) == siseof(x)
} // End of template m_aesccm_dummy
/**
* @desc Generic send template for AES CCM encryption parameters
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.7 EncryptionParameters
template (value) EncryptionParameters m_encryptionParameters_dummy := {
symm_algorithm := e_aes_128_ccm,
public_key := {
nonce := PX_AESCCM_NONCE
}
} // End of template m_encryptionParameters_dummy
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
} // End of group dummyAlgorithms
/**
* @desc Dummy send template for PublicKey/EccPoint
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4 PublicKey
*/
template (value) PublicKey m_publicKey_eccPoint_dummy := {
algorithm := e_ecdsa_nistp256_with_sha256,
public_key := {
eccPoint := m_eccPoint_dummy
} // End of field public_key
} // End of template PublicKey
/**
* @desc Dummy send template for PublicKey/AES CCM
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4 PublicKey
*/
template (value) PublicKey m_publicKey_aesccm_dummy := {
algorithm := e_ecies_nistp256,
public_key := {
aesCcm := {
supported_symm_alg := e_aes_128_ccm,
eccPoint := m_aesccm_dummy
} // End of field aesCcm
} // End of field public_key
} // End of template m_publicKey_aesccm_dummy
} // End of group dummyBasicFormatElementsSend
/**
* @desc Dummy receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2 Specification of basic format elements
*/
group dummyBasicFormatElementsRecv {
/**
* @desc Dummy receive template for PublicKey/EccPoint
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4 PublicKey
*/
template (present) PublicKey mw_publicKey_eccPoint_dummy := {
algorithm := e_ecdsa_nistp256_with_sha256,
public_key := {
eccPoint := ?
} // End of field public_key
} // End of template PublicKey
/**
* @desc Dummy send template for PublicKey/AES CCM
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4 PublicKey
*/
template (present) PublicKey mw_publicKey_aesccm_dummy := {
algorithm := e_ecies_nistp256,
public_key := {
aesCcm := ?
} // End of field public_key
} // End of template m_publicKey_aesccm_dummy
/**
* @desc Dummy receive template for Time64WithStandardDeviation
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.17 Time64WithStandardDeviation
*/
template (present) Time64WithStandardDeviation mw_time64WithStandardDeviation_dummy := {
time := ?,
log_std_dev := ?
} // End of template mw_time64WithStandardDeviation_dummy
/**
* @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.1.6 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.1.6 Clause 4.2.20 ThreeDLocation
*/
template (present) ThreeDLocation mdw_threeDLocation_dummy := {
latitude := ?,
longitude := ?,
elevation := ?
} // End of template mdw_threeDLocation_dummy
/**
* @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.1.6 Clause 4.2.21 GeographicRegion
*/
template (present) GeographicRegion mw_geographicRegion_rectangle_dummy(
in template (present) TwoDLocation p_northwest,
in template (present) TwoDLocation p_southeast
) := {
region_type := e_rectangle,
region := {
rectangular_region := {
{
northwest := p_northwest,
southeast := p_southeast
}
} // End of field rectangular_region
} // End of field region
} // End of template mw_geographicRegion_rectangle_dummy
} // End of group dummyBasicFormatElementsRecv
} // End of group dummyBasicFormatElements
/**
* @desc Send/receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4 Basic format elements
*/
group basicFormatElements {
/**
* @desc Send templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2 Specification of basic format elements
*/
group basicFormatElementsSend {
/**
*/
group algorithms {
* @desc Send/receive templates for Signature description
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.5 EccPoint
* @see Draft ETSI TS 103 097 V1.1.6 Table 2: Derivation of field sizes depending on the used algorithm
template (value) Signature m_signature(
in template (value) EcdsaSignature p_ecdsaSignature
):= {
} // End of field signature_
} // End of template m_signature_ecdsa
template (value) EcdsaSignature m_ecdsaSignature(
in template (value) EccPoint p_r
) := {
algorithm := e_ecdsa_nistp256_with_sha256,
field_size := f_int2UInt8(1 + lengthof(PX_ECDSA_S)),
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
} // End of group signatures
group signerInfos {
/**
* @desc Send template for self signed message
*/
template (value) SignerInfo m_SignerInfo_self := {
type_ := e_self,
signerInfo := omit
} // End of template m_SignerInfo_self
/**
* @desc Send template for self signed message
*/
template (value) SignerInfo m_SignerInfo_digest(
in template (value) HashedId8 p_digest
) := {
type_ := e_certificate_digest_with_ecdsap256,
signerInfo := {
digest := p_digest
} // End of field signerInfo
} // End of template m_SignerInfo_digest
template (value) SignerInfo m_signerInfo_certificate(
in template (value) Certificate p_certificate
) := {
type_ := e_certificate,
signerInfo := {
certificate := p_certificate
} // End of field signerInfo
} // End of template m_signerInfo_certificate
template (value) SignerInfo m_signerInfo_certificates(
in template (value) CertificateChain p_certificates
) := {
type_ := e_certificate_chain,
signerInfo := {
certificates := p_certificates
} // End of field signerInfo
} // End of template m_signerInfo_certificates
} // End of group signerInfos
/**
* @desc Send template for Time64WithStandardDeviation
* @param p_time TODO
* @param p_log_std_dev TODO
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.17 Time64WithStandardDeviation
*/
template (value) Time64WithStandardDeviation m_time64WithStandardDeviation(
in template (value) Time64 p_time,
in template (value) UInt8 p_log_std_dev
) := {
time := p_time,
log_std_dev := p_log_std_dev
} // End of template m_time64WithStandardDeviation
/**
* @desc Send template for Duration (in seconds)
* @param p_duration The duration value
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.18 Duration
*/
template (value) Duration m_duration_in_seconds(
in template (value) Int13 p_duration
) := {
unit := e_seconds,
duration := p_duration
} // End of template m_duration_in_seconds
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
/**
* @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.1.6 Clause 4.2.19 TwoDLocation
*/
template (value) TwoDLocation m_twoDLocation(
in template (value) Int32 p_latitude,
in template (value) Int32 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.1.6 Clause 4.2.20 ThreeDLocation
*/
template (value) ThreeDLocation m_threeDLocation(
in template (value) Int32 p_latitude,
in template (value) Int32 p_longitude,
in template (value) Oct2 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.1.6 Clause 4.2.21 GeographicRegion
*/
template (value) GeographicRegion m_geographicRegion_circle(
in template (value) TwoDLocation p_center,
in template (value) UInt16 p_radius
region_type := e_circle,
region := {
circular_region := {
center := p_center,
radius := p_radius
} // End of field circular_region
} // End of field region
} // 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.1.6 Clause 4.2.21 GeographicRegion
*/
template (value) GeographicRegion m_geographicRegion_rectangle(
in template (value) TwoDLocation p_northwest,
in template (value) TwoDLocation p_southeast
region_type := e_rectangle,
region := {
rectangular_region := {
{
northwest := p_northwest,
southeast := p_southeast
}
} // End of field rectangular_region
} // End of field region
} // 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.1.6 Clause 4.2.21 GeographicRegion
*/
template (value) GeographicRegion m_geographicRegion_polygonial(
in template (value) PolygonalRegion p_polygonal_region
region_type := e_polygon,
region := {
polygonal_region := p_polygonal_region
} // End of field region
} // End of template m_geographicRegion_polygonial
/**
* @desc Send template for geographic identified region
* @param p_id_region Indentified region
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.21 GeographicRegion
*/
template (value) GeographicRegion m_geographicRegion_identifiedRegion(
in template (value) IdentifiedRegion p_id_region
) := {
region_type := e_id,
} // End of template m_geographicRegion_identifiedRegion
/**
* @desc Send template for not specified geographic region
* @param p_id_region Indentified region
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.21 GeographicRegion
*/
template (value) GeographicRegion m_geographicRegion_nonce := {
region_type := e_none,
region := omit
} // End of template m_geographicRegion_nonce
} // End of group basicFormatElementsSend
* @desc Receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2 Specification of basic format elements
*/
group basicFormatElementsRecv {
/**
* @desc Receive template for Time64WithStandardDeviation
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.17 Time64WithStandardDeviation
*/
template (present) Time64WithStandardDeviation mw_time64WithStandardDeviation(
in template (present) Time64 p_time,
in template (present) UInt8 p_log_std_dev
) := {
time := p_time,
log_std_dev := p_log_std_dev
} // End of template mw_time64WithStandardDeviation
/**
* @desc Receive template for Duration (in seconds)
* @param p_duration The duration value
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.18 Duration
*/
template (present) Duration mw_duration_in_seconds(
in template (present) Int13 p_duration
) := {
unit := e_seconds,
duration := p_duration
} // End of template mw_duration_in_seconds
* @desc Receive template for TwoDLocation
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
* @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.1.6 Clause 4.2.19 TwoDLocation
*/
template (present) TwoDLocation mw_twoDLocation(
in template (present) Int32 p_latitude,
in template (present) Int32 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.1.6 Clause 4.2.20 ThreeDLocation
*/
template (present) ThreeDLocation mw_threeDLocation(
in template (present) Int32 p_latitude,
in template (present) Int32 p_longitude,
in template (present) Oct2 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.1.6 Clause 4.2.21 GeographicRegion
*/
template (present) GeographicRegion mw_geographicRegion_circle(
in template (present) TwoDLocation p_center,
in template (present) UInt16 p_radius
region_type := e_circle,
region := {
circular_region := {
center := p_center,
radius := p_radius
} // End of field circular_region
} // End of field region
} // End of template mw_geographicRegion_circle
/**
* @desc Receive template polygonial geographic region
* @param p_polygonal_region Polygonial region description
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.21 GeographicRegion
*/
template (present) GeographicRegion mw_geographicRegion_polygonial(
in template (present) PolygonalRegion p_polygonal_region
region_type := e_polygon,
region := {
polygonal_region := p_polygonal_region
} // End of field region
} // End of template mw_geographicRegion_polygonial
/**
* @desc Receive template for geographic identified region
* @param p_id_region Indentified region
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.21 GeographicRegion
*/
template (present) GeographicRegion mww_geographicRegion_identifiedRegion(
in template (present) IdentifiedRegion p_id_region
) := {
region_type := e_id,
region := {
id_region := p_id_region
} // End of field region
} // End of template mw_geographicRegion_identifiedRegion
/**
* @desc Receive template for not specified geographic region
* @param p_id_region Indentified region
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.21 GeographicRegion
*/
template (present) GeographicRegion mw_geographicRegion_nonce := {
region_type := e_none,
} // End of template mw_geographicRegion_nonce
} // End of group basicFormatElementsRecv
* @desc Dummy send/receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
* @desc Dummy send templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
*/
group dummyMessagesSend {
/**
* @desc Generic send template for Security profile for CAMs
* @see Draft ETSI TS 103 097 V1.1.6 Clause 7.1 Security profile for CAMs
*/
template (value) SecuredMessage m_secureMessageCAMs_dummy := {
protocol_version := c_protocol_version,
security_profile := c_security_profileCAMs,
header_fields := {
m_header_field_signer_info(
m_SignerInfo_self
)
},
payload_fields := { },
trailer_fields := { }
} // End of template m_secureMessageCAMs_dummy
/**
* @desc Generic send template for Security profile for DENMs
* @see Draft ETSI TS 103 097 V1.1.6 Clause 7.2 Security profile for DENMs
*/
template (value) SecuredMessage m_secureMessageDENMs_dummy := {
protocol_version := c_protocol_version,
security_profile := c_security_profileDENMs,
header_fields := {
m_header_field_signer_info(
m_SignerInfo_self
)
},
payload_fields := { },
trailer_fields := { }
} // End of template m_secureMessageDENMs_dummy
/**
* @desc Generic send template for Security profile for other messages
* @see Draft ETSI TS 103 097 V1.1.6 Clause 7.3 Generic security profile for other signed messages
*/
template (value) SecuredMessage m_secureMessageOthers_dummy := {
protocol_version := c_protocol_version,
security_profile := c_security_profileOthers,
header_fields := {
m_header_field_signer_info(
m_SignerInfo_self
)
},
payload_fields := { },
trailer_fields := { }
} // End of template m_secureMessageCAMs_dummy
} // End of group dummyMessagesSend
/**
* @desc Dummy receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
group dummyMessagesRecv {
/**
* @desc Generic received template for SecuredMessage
*/
template (present) SecuredMessage mw_securedMessage_dummy := {
protocol_version := c_protocol_version,
security_profile := ?,
header_fields := ?,
payload_fields := ?,
trailer_fields := ?
} // End of template mw_securedMessage_dummy
/**
* @desc Generic received template for SecuredMessage
*/
template (present) SecuredMessage mdw_securedMessageCAMs_dummy
modifies mw_securedMessage_dummy := {
security_profile := c_security_profileCAMs
} // End of template mdw_securedMessageCAMs_dummy
/**
* @desc Generic received template for SecuredMessage
*/
template (present) SecuredMessage mdw_securedMessageDENMs_dummy
modifies mw_securedMessage_dummy := {
security_profile := c_security_profileDENMs
} // End of template mdw_securedMessageDENMs_dummy
/**
* @desc Generic received template for SecuredMessage
*/
template (present) SecuredMessage mdw_securedMessageOthers_dummy
modifies mw_securedMessage_dummy := {
security_profile := c_security_profileOthers
} // End of template mdw_securedMessageOthers_dummy
/**
* @desc Generic received template for SecuredMessage
*/
template (present) Payload mw_signedPayload_dummy := {
} // End of group dummyMessagesRecv
group dummyPayloads {
* @desc Generic received template for unsecured payload
*/
template (present) Payload mw_unsecuredPayload_dummy := {
} // End of template mw_unsecuredPayload_dummy
/**
* @desc Generic received template for secured payload
*/
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
template (present) Payload mw_data_payload_dummmy := {
type_ := ?,
data := ?
} // End of template mw_data_payload_dummmy
} // End of group payloads
group dummyEciesEncryptedKey {
group dummyEciesEncryptedKeyRecv {
/**
* @desc Basic receive template for an ECIES-encrypted symmetric key as defined in IEEE Std 1363a 2004
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.9 EciesEncryptedKey
*/
template (present) EciesEncryptedKey mw_eciesEncryptedKey_dummy := {
symm_alg := ?,
symm_key_len := ?,
v := ?,
c := ?,
t := ?
} // End of template mw_eciesEncryptedKey_dummy
} // End of group dummyEciesEncryptedKeyRecv
} // End of group dummyEciesEncryptedKey
} // End of group dummyMessages
/**
* @desc Send/receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
*/
group messages {
/**
* @desc Send templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
*/
group messagesSend {
} // End of group messagesSend
/**
* @desc Receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
*/
group messagesRecv {
} // End of group messagesRecv
/**
* @desc Send/Receive templates for Payload
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.2 Payload
*/
* @desc Send templates for Payload
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.2 Payload
*/
group payloadsSend {
/**
* @desc Send template for 'signed_external' Payload
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.2 Payload
*/
template (value) Payload m_payload_signed_external := {
type_ := e_signed_external,
data := omit
} // End of template m_payload_signed_external
template (value) Payload m_data_payload(
in template (value) PayloadType p_type,
in template (value) octetstring p_data
data := p_data
} // End of template m_data_payload
} // End of group payloadsSend
/**
* @desc Receive templates for Payload
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.2 Payload
*/
group payloadsRecv {
} // End of group payloadsRecv
821
822
823
824
825
826
827
828
829
830
831
832
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
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
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
// group camPayloads {
//
// group camPayloadsSend {
//
// template (value) Payload m_payload_unsecured_cam(
// in template (value) CAM p_camPayload
// ) := {
// type_ := e_unsecured,
// data := {
// camPayload := p_camPayload
// } // End of field data
// } // End of template m_payload_unsecured_cam
//
// template (value) Payload md_payload_signed_cam(
// in template (value) CAM p_camPayload
// ) modifies m_payload_unsecured_cam := {
// type_ := e_signed
// } // End of template md_payload_signed_cam
//
// template (value) Payload md_payload_encrypted_cam(
// in template (value) CAM p_camPayload
// ) modifies m_payload_unsecured_cam := {
// type_ := e_encrypted
// } // End of template md_payload_encrypted_cam
//
// template (value) Payload md_payload_signed_encrypted_cam(
// in template (value) CAM p_camPayload
// ) modifies m_payload_unsecured_cam := {
// type_ := e_signed_and_encrypted
// } // End of template md_payload_signed_encrypted_cam
//
// template (present) Payload mw_payload_unsecured_cam(
// in template (present) CAM p_camPayload
// ) := {
// type_ := e_unsecured,
// data := {
// camPayload := p_camPayload
// } // End of field data
// } // End of template mw_payload_unsecured_cam
//
// } // End of group camPayloadsSend
//
// group camPayloadsRecv {
//
// template (present) Payload mdw_payload_signed_cam(
// in template (present) CAM p_camPayload
// ) modifies mw_payload_unsecured_cam := {
// type_ := e_signed
// } // End of template mdw_payload_signed_cam
//
// template (present) Payload mdw_payload_encrypted_cam(
// in template (present) CAM p_camPayload
// ) modifies mw_payload_unsecured_cam := {
// type_ := e_encrypted
// } // End of template mdw_payload_encrypted_cam
//
// template (present) Payload mdw_payload_signed_encrypted_cam(
// in template (present) CAM p_camPayload
// ) modifies mw_payload_unsecured_cam := {
// type_ := e_signed_and_encrypted
// } // End of template mdw_payload_signed_encrypted_cam
//
// } // End of group camPayloadsRecv
//
// } // End of group camPayloads
//
// group denmPayloads {
//
// group denmPayloadsSend {
//
// template (value) Payload m_payload_unsecured_denm(
// in template (value) DENM p_denmPayload
// ) := {
// type_ := e_unsecured,
// data := {
// denmPayload := p_denmPayload
// } // End of field data
// } // End of template m_payload_unsecured_denm
//
// template (value) Payload md_payload_signed_denm(
// in template (value) DENM p_denmPayload
// ) modifies m_payload_unsecured_denm := {
// type_ := e_signed
// } // End of template md_payload_signed_denm
//
// template (value) Payload md_payload_encrypted_denm(
// in template (value) DENM p_denmPayload
// ) modifies m_payload_unsecured_denm := {
// type_ := e_encrypted
// } // End of template md_payload_encrypted_denm
//
// template (value) Payload md_payload_signed_encrypted_denm(
// in template (value) DENM p_denmPayload
// ) modifies m_payload_unsecured_denm := {
// type_ := e_signed_and_encrypted
// } // End of template md_payload_signed_encrypted_denm
//
// } // End of group denmPayloadsSend
//
// group denmPayloadsRecv {
//
// template (present) Payload mw_payload_unsecured_denm(
// in template (present) DENM p_denmPayload
// ) := {
// type_ := e_unsecured,
// data := {
// denmPayload := p_denmPayload
// } // End of field data
// } // End of template mw_payload_unsecured_denm
//
// template (present) Payload mdw_payload_signed_denm(
// in template (present) DENM p_denmPayload
// ) modifies mw_payload_unsecured_denm := {
// type_ := e_signed
// } // End of template mdw_payload_signed_denm
//
// template (present) Payload mdw_payload_encrypted_denm(
// in template (present) DENM p_denmPayload
// ) modifies mw_payload_unsecured_denm := {
// type_ := e_encrypted
// } // End of template mdw_payload_encrypted_denm
//
// template (present) Payload mdw_payload_signed_encrypted_denm(
// in template (present) DENM p_denmPayload
// ) modifies mw_payload_unsecured_denm := {
// type_ := e_signed_and_encrypted
// } // End of template mdw_payload_signed_encrypted_denm
//
// } // End of group denmPayloadsRecv
//
// } // End of group denmPayloads
//
/**
* @desc Send/Receive templates for HeaderField
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
/**
* @desc Send templates for HeaderField
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
group headerFieldsSend {
/**
* @desc Send template for HeaderField with generation time information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_generation_time(
in template (value) Time64 p_generation_time
) := {
type_ := e_generation_time,
headerField := {
generation_time := p_generation_time
}
} // End of template m_header_field_generation_time
/**
* @desc Send template for HeaderField with generation time and standard deviation information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_generation_time_with_standard_deviation(
in template (value) Time64WithStandardDeviation p_generation_time_with_standard_deviation
) := {
type_ := e_generation_time_standard_deviation,
headerField := {
generation_time_with_standard_deviation := p_generation_time_with_standard_deviation
}
} // End of template m_header_field_generation_time_with_standard_deviation
/**
* @desc Send template for HeaderField with expiration time information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_expiry_time(
in template (value) Time32 p_expiry_time
) := {
type_ := e_expiration,
headerField := {
expiry_time := p_expiry_time
}
} // End of template m_header_field_expiry_time
/**
* @desc Send template for HeaderField with generation location information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_generation_location(
in template (value) ThreeDLocation p_generation_location
) := {
type_ := e_generation_location,
headerField := {
generation_location := p_generation_location
}
} // End of template m_header_field_generation_location
/**
* @desc Send template for HeaderField with generation location information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_digest(
in template (value) HashedId3 p_digest
) := {
type_ := e_request_unrecognized_certificate,
headerField := {
digests := { p_digest }
}
} // End of template m_header_field_digest
/**
* @desc Send template for HeaderField with generation location information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_multiple_digests(
in template (value) HashedId3s p_digests
) := {
type_ := e_request_unrecognized_certificate,
headerField := {
digests := p_digests
}
} // End of template m_header_field_multiple_digests
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
/**
* @desc Send template for HeaderField with generation location information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_message_type(
in template (value) UInt16 p_message_type
) := {
type_ := e_message_type,
headerField := {
message_type := p_message_type
}
} // End of template m_header_field_message_type
/**
* @desc GSend template for HeaderField with signer information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_signer_info(
in template (value) SignerInfo p_signer
) := {
type_ := e_signer_info,
headerField := {
signer := p_signer
}
} // End of template m_header_field_signerInfo_signer_info
/**
* @desc Send template for HeaderField with signer information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_recipient(
in template (value) RecipientInfo p_recipient
) := {
type_ := e_recipient_info,
headerField := {
recipients := { p_recipient }
}
} // End of template m_header_field_recipient
/**
* @desc Send template for HeaderField with signer information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_multiple_recipients(
in template (value) RecipientInfos p_recipients
) := {
type_ := e_recipient_info,
headerField := {
recipients := p_recipients
}
} // End of template m_header_field_multiple_recipients
/**
* @desc Send template for HeaderField with signer information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField m_header_field_enc_params(
in template (value) EncryptionParameters p_enc_params
) := {
type_ := e_encryption_parameters,
headerField := {
enc_params := p_enc_params
}
} // End of template m_header_field_enc_params
} // End of group headerFieldsSend
/**
* @desc Receive templates for HeaderField
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
group headerFieldsRecv {
/**
* @desc Receive template for HeaderField with generation time information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_generation_time(
in template (present) Time64 p_generation_time
) := {
type_ := e_generation_time,
headerField := {
generation_time := p_generation_time
}
} // End of template mw_header_field_generation_time
/**
* @desc Receive template for HeaderField with generation time and standard deviation information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_generation_time_with_standard_deviation(
in template (present) Time64WithStandardDeviation p_generation_time_with_standard_deviation
) := {
type_ := e_generation_time_standard_deviation,
headerField := {
generation_time_with_standard_deviation := p_generation_time_with_standard_deviation
}
} // End of template mw_header_field_generation_time_with_standard_deviation
/**
* @desc Receive template for HeaderField with expiration time information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_expiry_time(
in template (present) Time32 p_expiry_time
) := {
type_ := e_expiration,
headerField := {
expiry_time := p_expiry_time
}
} // End of template mw_header_field_expiry_time
/**
* @desc Receive template for HeaderField with generation location information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_generation_location(
in template (present) ThreeDLocation p_generation_location
) := {
type_ := e_generation_location,
headerField := {
generation_location := p_generation_location
}
} // End of template mw_header_field_generation_location
/**
* @desc Receive template for HeaderField with generation location information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_multiple_digests(
in template (present) HashedId3s p_digests
) := {
type_ := e_request_unrecognized_certificate,
headerField := {
digests := p_digests
}
} // End of template mw_header_field_multiple_digests
* @desc Receive template for HeaderField with signer information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_signer_info(
in template (present) SignerInfo p_signer
type_ := e_signer_info,
signer := p_signer
} // End of template mw_header_field_signerInfo_signer_info
/**
* @desc Receive template for HeaderField with signer information
* containing certificate
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_signer_info_certificate := {
type_ := e_signer_info,
headerField := {
signer := {
type_ := e_certificate,
signerInfo := {
certificate := ?
}
}
} // End of template mw_header_field_signer_info_certificate
/**
* @desc Receive template for HeaderField with signer information
* containing certificate digest
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_signer_info_digest := {
type_ := e_signer_info,
headerField := {
signer := {
type_ := e_certificate_digest_with_ecdsap256,
signerInfo := {
digest := ?
}
}
}
} // End of template mw_header_field_signer_info_digest
/**
* @desc Receive template for HeaderField with signer information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (value) HeaderField mw_header_field_multiple_recipients(
in template (value) RecipientInfos p_recipients
) := {
type_ := e_recipient_info,
headerField := {
recipients := p_recipients
} // End of template mw_header_field_multiple_recipients
/**
* @desc Receive template for HeaderField with signer information
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.4 HeaderField
*/
template (present) HeaderField mw_header_field_enc_params(
in template (present) EncryptionParameters p_enc_params
) := {
type_ := e_encryption_parameters,
headerField := {
enc_params := p_enc_params
}
} // End of template mw_header_field_enc_params
} // End of group headerFieldsRecv
} // End of group headerFields
/**
* @desc Send/Receive templates for TrailerField
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.6 TrailerField
*/
/**
* @desc Send template containing signature information used by the security layer after processing the payload
* @param p_signature The signature information
*/
template (value) TrailerField m_trailer_field_signature(
in template (value) Signature p_signature
) := {
type_ := e_signature,
trailerField := {
signature_ := p_signature
}
} // End of template m_trailer_field_dummy
/**
* @desc Receive template containing signature information used by the security layer after processing the payload
* @param p_signature The signature information
*/
template (present) TrailerField mw_trailer_field_signature(
in template (present) Signature p_signature
) := {
type_ := e_signature,
trailerField := {
signature_ := ?
}
} // End of template mw_trailer_field_dummy
} // End of group trailerFields
/**
* @desc Send/Receive templates for RecipientInfo
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.8 RecipientInfo
*/
group recipientInfo {
/**
* @desc Send template containing information for a message's recipient
* @param p_cert_id The recipient's certificate identifier
* @param p_pk_encryption The encryption type
* @param p_enc_key The encrypted key contained in an EciesEncryptedKey structure
*/
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
template (value) RecipientInfo m_recipientInfo_ecies_enc_key(
in template (value) HashedId8 p_cert_id,
in template (value) PublicKeyAlgorithm p_pk_encryption,
in template (value) EciesEncryptedKey p_enc_key
) := {
cert_id := p_cert_id,
pk_encryption := p_pk_encryption,
enc_key := {
enc_key := p_enc_key
} // End of field enc_key
} // End of template m_recipientInfo_ecies_enc_key
template (value) RecipientInfo m_recipientInfo_other_enc_key(
in template (value) HashedId8 p_cert_id,
in template (value) PublicKeyAlgorithm p_pk_encryption,
in template (value) octetstring p_enc_key_other
) := {
cert_id := p_cert_id,
pk_encryption := p_pk_encryption,
enc_key := {
enc_key_other := p_enc_key_other
} // End of field enc_key
} // End of template m_recipientInfo_other_enc_key
/**
* @desc Receive template containing information for a message's recipient
* @param p_cert_id The recipient's certificate identifier
* @param p_pk_encryption The encryption type
* @param p_enc_key The encrypted key contained in an EciesEncryptedKey structure
*/
template (present) RecipientInfo mw_recipientInfo_ecies_enc_key(
in template (present) HashedId8 p_cert_id,
in template (present) PublicKeyAlgorithm p_pk_encryption,
in template (present) EciesEncryptedKey p_enc_key
) := {
cert_id := p_cert_id,
pk_encryption := p_pk_encryption,
enc_key := {
enc_key := p_enc_key
} // End of field enc_key
} // End of template mw_recipientInfo_ecies_enc_key
} // End of group recipientInfo
/**
* @desc Send/Receive templates for EciesEncryptedKey
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.9 EciesEncryptedKey
*/
group eciesEncryptedKey {
/**
* @desc Send template for an ECIES-encrypted symmetric key as defined in IEEE Std 1363a 2004
* @param p_encrypted_key The encrypted (AES) key
* @param p_authentication_tag The authentication tag vector
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.9 EciesEncryptedKey
*/
template (value) EciesEncryptedKey m_eciesEncryptedKey_aesccm(
in template (value) EccPoint p_ecc_key,
in template (value) octetstring p_encrypted_key,
in template (value) Oct20 p_authentication_tag
) := {
symm_alg := e_aes_128_ccm,
symm_key_len := f_int2UInt32(1 + lengthof(p_encrypted_key)),
v := p_ecc_key,
c := p_encrypted_key,
t := p_authentication_tag
} // End of template m_eciesEncryptedKey_aesccm
/**
* @desc Receive template for an ECIES-encrypted symmetric key as defined in IEEE Std 1363a 2004
* @param p_encrypted_key The encrypted (AES) key
* @param p_authentication_tag The authentication tag vector
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5.9 EciesEncryptedKey
*/
template (present) EciesEncryptedKey mw_eciesEncryptedKey_aesccm(
in template (present) EccPoint p_ecc_key,
in template (present) octetstring p_encrypted_key,
in template (present) Oct20 p_authentication_tag
) := {
symm_alg := e_aes_128_ccm,
symm_key_len := ?,
v := p_ecc_key,
c := p_encrypted_key,
t := p_authentication_tag
} // End of template mw_eciesEncryptedKey_aesccm
} // End of group eciesEncryptedKey
} // End of group messages
* @desc Dummy send/receive templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
group dummyCertifices {
/**
* @desc Dummy send templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
group dummyCertificesSend {
} // End of group dummyCertificesSend
/**
* @desc Dummy receive templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
group dummyCertificesRecv {
/**
* @desc Dummy receive certificate template
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6.1 Certificate
*/
template (present) Certificate mw_certificate_dummy := {
version := c_certificate_version,
subject_info := ?,
subject_attributes := ?,
validity_restrictions := ?,
signature_ := ?
} // End of template mw_certificate_dummy
} // End of group dummyCertificesRecv
} // End of group dummyCertifices
/**
* @desc Send/receive templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
/**
* @desc Send templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
group certificatesSend {
/**
* @desc Send certificate template
* @member p_signer_info List of signer information
* @member p_subject_info The subject information
* @member p_subject_attributes List of subject attribute
* @member p_validity_restrictions List of validity restriction
* @member p_signature The signature
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6.1 Certificate
*/
template (value) Certificate m_certificate(
in template (value) SignerInfos p_signer_infos,
in template (value) SubjectInfo p_subject_info,
in template (value) SubjectAttributes p_subject_attributes,
in template (value) ValidityRestrictions p_validity_restrictions,
in template (value) Signature p_signature
) := {
version := c_certificate_version,
signer_infos := p_signer_infos,
subject_info := p_subject_info,
subject_attributes := p_subject_attributes,
validity_restrictions := p_validity_restrictions,
signature_ := p_signature
} // End of template m_certificate
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
/**
* @desc Send templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6.2 SubjectInfo
*/
group subjectInfo {
template (value) SubjectInfo m_subject_info_root_ca(
in template (value) Oct0to31 p_subject_name
) := {
subject_type := e_root_ca,
subject_name := p_subject_name
} // End of template m_subject_info_root_ca
template (value) SubjectInfo m_subject_info_revocation(
in template (value) Oct0to31 p_subject_name
) := {
subject_type := e_crl_signer,
subject_name := p_subject_name
} // End of template m_subject_info_revocation
} // End of group subjectInfo
group subjectAttribute {
template (value) SubjectAttribute m_subject_attribute_verification_key(
in template (value) PublicKey p_key
) := {
type_ := e_verification_key,
attribute := {
key := p_key
}
} // End of template m_subject_attribute_verification_key
template (value) SubjectAttribute m_subject_attribute_encryption_key(
) := {
type_ := e_encryption_key,
attribute := {
}
} // End of template m_subject_attribute_encryption_key
template (value) SubjectAttribute m_subject_attribute_reconstruction_value(
in template (value) EccPoint p_rv
) := {
type_ := e_reconstruction_value,
attribute := {
rv := p_rv
}
} // End of template m_subject_attribute_reconstruction_value
template (value) SubjectAttribute m_subject_attribute_assurance_level(
in template (value) SubjectAssurance p_assurance_level
) := {
type_ := e_assurance_level,
attribute := {
assurance_level := p_assurance_level
}
} // End of template m_subject_attribute_assurance_level
template (value) SubjectAttribute m_subject_attribute_its_aid_list(
in template (value) IntXs p_its_aid_list
) := {
attribute := {
its_aid_list := p_its_aid_list
}
} // End of template m_subject_attribute_its_aid_list
template (value) SubjectAttribute m_subject_attribute_its_aid_ssp_list(
in template (value) ItsAidSsps p_its_aid_ssp_list
) := {
type_ := e_its_aid_ssp_list,
attribute := {
its_aid_ssp_list := p_its_aid_ssp_list
}
} // End of template m_subject_attribute_its_aid_ssp_list
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
} // End of group subjectAttribute
group subjectAssurance {
template (value) SubjectAssurance m_subjectAssurance(
in template (value) Bit3 p_levels,
in template (value) Bit2 p_confidence
) := {
levels := p_levels,
reserved := '000'B,
confidence := p_confidence
} // End of template m_subjectAssurance
} // End of group subjectAssurance
group validityRestriction {
template (value) ValidityRestriction m_validity_restriction_time_end(
in template (value) Time32 p_end_validity
) := {
type_ := e_time_end,
validity := {
end_validity := p_end_validity
} // End of field validity
} // End of template m_validity_restriction_time_end
template (value) ValidityRestriction m_validity_restriction_time_start_and_end(
in template (value) Time32 p_start_validity,
in template (value) Time32 p_end_validity
) := {
type_ := e_time_start_and_end,
validity := {
time_start_and_end := {
start_validity := p_start_validity,
end_validity := p_end_validity
} // End of field time_start_and_end
} // End of field validity
} // End of template m_validity_restriction_time_start_and_end
template (value) ValidityRestriction m_validity_restriction_time_start_and_duration(
in template (value) Time32 p_start_validity,
in template (value) Duration p_duration
) := {
type_ := e_time_start_and_duration,
validity := {
time_start_and_duration := {
start_validity := p_start_validity,
duration := p_duration
} // End of field time_start_and_duration
} // End of field validity
} // End of template m_validity_restriction_time_start_and_duration
template (value) ValidityRestriction m_validity_restriction_region(
in template (value) GeographicRegion p_region
) := {
type_ := e_region,
validity := {
region := p_region
} // End of field validity
} // End of template m_validity_restriction_region
} // End of group validityRestriction
} // End of group certificatesSend
/**
* @desc Receive templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
template (present) Certificate mw_certificate(
in template (present) SignerInfo p_signer_info,
in template (present) SubjectInfo p_subject_info,
in template (present) SubjectAttributes p_subject_attributes,
in template (present) ValidityRestrictions p_validity_restrictions,
in template (present) Signature p_signature
) := {
version := c_certificate_version,
signer_infos := { p_signer_info },
subject_info := p_subject_info,
subject_attributes := p_subject_attributes,
validity_restrictions := p_validity_restrictions,
signature_ := p_signature
} // End of template m_certificate
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
group subjectInfo {
template (present) SubjectInfo mw_subject_info_root_ca(
in template (present) Oct0to31 p_subject_name
) := {
subject_type := e_root_ca,
subject_name := p_subject_name
} // End of template mw_subject_info_root_ca
template (present) SubjectInfo mw_subject_info_revocation(
in template (present) Oct0to31 p_subject_name
) := {
subject_type := e_crl_signer,
subject_name := p_subject_name
} // End of template mw_subject_info_revocation
} // End of group subjectInfo
group subjectAttribute {
template (present) SubjectAttribute mw_subject_attribute_verification_key(
in template (present) PublicKey p_key
) := {
type_ := e_verification_key,
attribute := {
key := p_key
}
} // End of template mw_subject_attribute_verification_key
template (present) SubjectAttribute mw_subject_attribute_encryption_key(
in template (present) EccPoint p_rv
) := {
type_ := e_verification_key,
attribute := {
rv := p_rv
}
} // End of template mw_subject_attribute_encryption_key
template (present) SubjectAttribute mw_subject_attribute_assurance_level(
in template (present) SubjectAssurance p_assurance_level
) := {
type_ := e_assurance_level,
attribute := {
assurance_level := p_assurance_level
}
} // End of template mw_subject_attribute_assurance_level
template (present) SubjectAttribute mw_subject_attribute_reconstruction_value(
in template (present) IntXs p_its_aid_list
) := {
type_ := e_reconstruction_value,
attribute := {
its_aid_list := p_its_aid_list
}
} // End of template mw_subject_attribute_reconstruction_value
} // End of group subjectAttribute
group subjectAssurance {
template (present) SubjectAssurance mw_subjectAssurance(
in template (present) Bit3 p_levels,
in template (present) Bit2 p_confidence
) := {
levels := p_levels,
reserved := '000'B,
confidence := p_confidence
} // End of template mw_subjectAssurance
} // End of group subjectAssurance
group validityRestriction {
template (present) ValidityRestriction mw_validity_restriction_time_end(
in template (present) Time32 p_end_validity
) := {
type_ := e_time_end,
validity := {
end_validity := p_end_validity
} // End of field validity
} // End of template mw_validity_restriction_time_end
template (present) ValidityRestriction mw_validity_restriction_time_start_and_end(
in template (present) Time32 p_start_validity,
in template (present) Time32 p_end_validity
) := {
type_ := e_time_start_and_end,
validity := {
time_start_and_end := {
start_validity := p_start_validity,
end_validity := p_end_validity
} // End of field time_start_and_end
} // End of field validity
} // End of template mw_validity_restriction_time_start_and_end
template (present) ValidityRestriction mw_validity_restriction_time_start_and_duration(
in template (present) Time32 p_start_validity,
in template (present) Duration p_duration
) := {
type_ := e_time_start_and_duration,
validity := {
time_start_and_duration := {
start_validity := p_start_validity,
duration := p_duration
} // End of field time_start_and_duration
} // End of field validity
} // End of template mw_validity_restriction_time_start_and_duration
template (present) ValidityRestriction mw_validity_restriction_region(
in template (present) GeographicRegion p_region
) := {
type_ := e_region,
validity := {
region := p_region
} // End of field validity
} // End of template mw_validity_restriction_region
} // End of group validityRestriction
} // End of group certificatesRecv
} // End of group certificates
/**
*/
group securityProfilesCAMs {
/**
*/
group securityProfilesCAMsSend {
/**
* @desc Generic send template for Security profile for CAMs with a single payload
*/
template (value) SecuredMessage md_secureMessageCAMs(
in template (value) HeaderFields p_header_fields,
in template (value) Payload p_payload_field,
in template (value) TrailerFields p_trailer_fields
) modifies m_secureMessageCAMs_dummy := {
security_profile := c_security_profileCAMs,
header_fields := p_header_fields,
payload_fields := { p_payload_field },
trailer_fields := p_trailer_fields
} // End of template md_secureMessageCAMs
/**
* @desc Generic send template for Security profile for CAMs with several payloads
*/
template (value) SecuredMessage md_secureMessageCAMs_multiple_payloads(
in template (value) HeaderFields p_header_fields,
in template (value) Payloads p_payload_fields,
in template (value) TrailerFields p_trailer_fields
) modifies m_secureMessageCAMs_dummy := {
security_profile := c_security_profileCAMs,
header_fields := p_header_fields,
payload_fields := p_payload_fields,
trailer_fields := p_trailer_fields
} // End of template md_secureMessageCAMs
} // End of group securityProfilesCAMsSend
group securityProfilesCAMsRecv {
/**
* @desc Generic received template for Security profile for CAMs
*/
template (present) SecuredMessage mdw_secureMessageCAMs_dummy
modifies mw_securedMessage_dummy := {
security_profile := c_security_profileCAMs
} // End of template mdw_secureMessageCAMs_dummy
/**
* @desc Generic received template for Security profile for CAMs
*/
template (present) SecuredMessage mdw_secureMessageCAMs
modifies mdw_secureMessageCAMs_dummy := { // TODO To be continued
header_fields := ?,
payload_fields := ?,
trailer_fields := ?
} // End of template mdw_secureMessageCAMs
} // End of group securityProfilesCAMsRecv
} // End of group securityProfilesCAMs
group denmSecurityProfiles {
} // End of group denmSecurityProfiles
group otherSecurityProfiles {
} // End of group otherSecurityProfiles
} // End of group securityProfiles
group utPrimitives {
} // End of group utPrimitives
/**
* @desc Function helpers for static_cast<> operation (to reduce warning in TTWB)
*/
group typeConverters {
/**
* @desc Convert integer into UInt8
*/
function f_int2UInt8(in integer p_value) return UInt8 {
return p_value;
}
/**
* @desc Convert integer into UInt32
*/
function f_int2UInt32(in integer p_value) return UInt32 {
return p_value;
}