Newer
Older
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_01_01_BV
* @reference ETSI TS 103 097 [1], clauses 5.4 and 7.2
testcase TC_SEC_ITSS_SND_DENM_01_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
var GeoNetworkingInd v_geoNwInd;
var HeaderFields v_headersFields;
var ItsDenm v_denmComponent;
var integer v_previousHeaderType;
if (not(PICS_GN_SECURITY)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY' required for executing the TC ***");
stop;
}
// Test component configuration
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_denmComponent := f_triggerDenmEvent();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field_its_aid_DENM
)
),
log("*** " & testcasename() & ": PASS: 'its_aid' is set to 'AID_DENM'");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
// DENM without mandatory fields
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field_its_aid_DENM
)
)))) {
log("*** " & testcasename() & ": FAIL: Secured DENM doesnt contain required headers");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected DENM not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cancelDenmEvent(v_denmComponent);
f_poNeighbour();
f_cf01Down();
* @desc Check that the secured DENM contains exactly one element of these header fields: signer_info, generation_time,
* generation_location, message_type.
* Check that the header fields are in the ascending order according to the numbering of the enumeration except
* of the signer_info, which is encoded first.
* Check that generation_time_with_confidence (generation_time_standard_deviation) is not used
* Pics Selection: PICS_GN_SECURITY
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being in the 'authorized' state
* }
* ensure that {
* when {
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
* the IUT sends a SecuredMessage
* containing header_fields[0]
* containing type
* indicating 'signer_info'
* containing header_fields [n].type
* indicating value less then header_fields [n+ 1].type
* containing header_fields ['generation_time']
* containing header_fields ['generation_location']
* not containing header_fields ['generation_time_with_confidence']
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_02_01_BV
* @reference ETSI TS 103 097 [1], clause 7.2
*/
testcase TC_SEC_ITSS_SND_DENM_02_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
var GeoNetworkingInd v_geoNwInd;
var HeaderFields v_headersFields;
var ItsDenm v_denmComponent;
var integer v_previousHeaderType;
// Test control
if (not(PICS_GN_SECURITY)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY' required for executing the TC ***");
stop;
}
// Test component configuration
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_denmComponent := f_triggerDenmEvent();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field( e_signer_info ),
mw_header_field( e_generation_time ),
mw_header_field( e_generation_location ),
mw_header_field_its_aid_DENM
)
),
mw_geoNwAnyPacket_withPayload(
?
)))) -> value v_geoNwInd {
tc_ac.stop;
// Process header fields manually
v_headersFields := valueof(v_geoNwInd.msgIn.gnPacket.securedMsg.header_fields);
// Check that signerInfo is first header
if (lengthof(v_headersFields) < 1 or not match(v_headersFields[0].type_, e_signer_info)) {
log("*** " & testcasename() & ": FAIL: SignerInfo is not first header");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
v_previousHeaderType := enum2int(v_headersFields[0].type_);
for (var integer v_counter := 1; v_counter < lengthof(v_headersFields); v_counter := v_counter + 1) {
// Check forbidden header
if (match(v_headersFields[v_counter].type_, e_generation_time_standard_deviation)) {
log("*** " & testcasename() & ": FAIL: Forbidden header present");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
if (match(v_headersFields[v_counter].type_, e_signer_info)) {
log("*** " & testcasename() & ": FAIL: multiple instances of signer_info header");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
if (v_counter > 1 ) {
// Check that no header is duplicated
if (match(v_headersFields[v_counter].type_, v_previousHeaderType)) {
log("*** " & testcasename() & ": FAIL: multiple instances of the same header");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
// Check that headers are ordered
if (match(v_headersFields[v_counter].type_, integer:(0..v_previousHeaderType))) {
log("*** " & testcasename() & ": FAIL: headers are not in the correct order");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
}
v_previousHeaderType := enum2int(v_headersFields[v_counter].type_);
} // End of 'for' statement
log("*** " & testcasename() & ": PASS: correct secured packet received");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
// DENM without mandatory fields
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field_its_aid_DENM
)
)))) {
log("*** " & testcasename() & ": FAIL: Secured DENM doesnt contain required headers");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected DENM not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cancelDenmEvent(v_denmComponent);
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_02_01_BV
/**
* @desc Check that secured DENM contains the certificate as a signer_info
* <pre>
* Pics Selection: PICS_GN_SECURITY
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being in the 'authorized' state
* }
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
* the IUT sends a SecuredMessage
* containing header_fields['signer_info']
* containing signer
* containing type
* indicating 'certificate'
* containing certificate
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_03_01_BV
* @reference ETSI TS 103 097 [1], clause 7.2
testcase TC_SEC_ITSS_SND_DENM_03_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
var GeoNetworkingInd v_geoNwInd;
var HeaderFields v_headersFields;
var HeaderFieldType v_previousHeaderType;
var integer v_counter;
var ItsDenm v_denmComponent;
// Test control
if (not(PICS_GN_SECURITY)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY' required for executing the TC ***");
stop;
}
// Test component configuration
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
v_denmComponent := f_triggerDenmEvent();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage_DENMs(
mw_header_field_signer_info_certificate
),
mw_geoNwAnyPacket_withPayload(
?
)))) {
if (v_counter < 3) {
f_cancelDenmEvent(v_denmComponent);
v_counter := v_counter + 1;
v_denmComponent := f_triggerDenmEvent();
repeat;
} else {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM signed with certificate");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage_DENMs(
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM signed with not a certificate");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected DENM not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cancelDenmEvent(v_denmComponent);
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_03_01_BV
* @desc Check that Secured DENM generation time is inside the validity period of the signing certificate
* Check that generation time value is realistic
* Pics Selection: PICS_GN_SECURITY
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being in the 'authorized' state
* }
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
* the IUT sends a SecuredMessage
* containing exactly one header_fields['generation_time']
* containing generation_time
* indicating TIME_1 (CUR_TIME - 10min <= TIME_1 <= CUR_TIME + 10min)
* containing header_fields['signer_info']
* containing signer {
* containing type
* indicating 'certificate'
* containing certificate
* containing validity_restrictions['time_end']
* containing end_validity
* indicating value > TIME_1
* or containing validity_restrictions['time_start_and_end']
* containing start_validity
* indicating value <= GEN_TIME
* and containing end_validity
* indicating value > GEN_TIME
* or containing validity_restrictions['time_start_and_duration']
* containing start_validity (CERT_START_VALIDITY)
* indicating value <= GEN_TIME
* and containing duration
* indicating value > GEN_TIME - CERT_START_VALIDITY
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_04_01_BV
* @reference ETSI TS 103 097 [1], clauses 5.4 and 7.2
testcase TC_SEC_ITSS_SND_DENM_04_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
const integer c_timeLimit := 10 * 60 * 1000000; // us
var GeoNetworkingInd v_geoNwInd;
var HeaderField v_headerField;
var Time64 v_generationTime;
var Time64 v_curTime;
var Certificate v_cert;
var ItsDenm v_denmComponent;
// Test control
if (not(PICS_GN_SECURITY)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY' required for executing the TC ***");
stop;
}
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
// Test component configuration
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_denmComponent := f_triggerDenmEvent();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field(
e_generation_time
),
mw_header_field_signer_info_certificate,
mw_header_field_its_aid_DENM
)
),
mw_geoNwAnyPacket_withPayload(
?
)))) -> value v_geoNwInd {
tc_ac.stop;
v_curTime := f_getCurrentTime();
v_curTime := v_curTime * 1000; // Time64 is in microseconds
if (f_getMsgHeaderField(v_geoNwInd.msgIn.gnPacket.securedMsg, e_generation_time, v_headerField)) {
v_generationTime := v_headerField.headerField.generation_time;
log("v_generationTime (us) = ", v_generationTime);
if (not match(v_generationTime, Time64:(v_curTime-c_timeLimit, v_curTime+c_timeLimit))) {
log("*** " & testcasename() & ": FAIL: DENM generation time is not in 10 min range");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
// Check that generation time is inside the certificate validation period
if (f_getMsgHeaderField(v_geoNwInd.msgIn.gnPacket.securedMsg, e_signer_info, v_headerField)) {
v_cert := v_headerField.headerField.signer.signerInfo.certificate;
for (var integer v_counter := 0; v_counter < lengthof(v_cert.validity_restrictions); v_counter := v_counter + 1) {
if (v_cert.validity_restrictions[v_counter].type_ == e_time_end) {
v_endTime := v_cert.validity_restrictions[v_counter].validity.end_validity * 1000000;
if (not match(v_generationTime, Time64:(0 .. v_endTime))){
log("*** " & testcasename() & ": FAIL: DENM generation time is not inside the validity of the certificate");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
} else if (v_cert.validity_restrictions[v_counter].type_ == e_time_start_and_end) {
v_endTime := v_cert.validity_restrictions[v_counter].validity.time_start_and_end.end_validity * 1000000;
v_startTime := v_cert.validity_restrictions[v_counter].validity.time_start_and_end.start_validity * 1000000;
if (not match(v_generationTime, Time64:(v_startTime .. v_endTime))){
log("*** " & testcasename() & ": FAIL: DENM generation time is not inside the validity of the certificate");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
} else if (v_cert.validity_restrictions[v_counter].type_ == e_time_start_and_duration) {
v_startTime := v_cert.validity_restrictions[v_counter].validity.time_start_and_duration.start_validity * 1000000;
v_duration := f_duration2time(v_cert.validity_restrictions[v_counter].validity.time_start_and_duration.duration_) * 1000000;
if (not match(v_generationTime, Time64:(v_startTime .. v_duration))){
log("*** " & testcasename() & ": FAIL: DENM generation time is not inside the validity of the certificate");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
} else {
log("*** " & testcasename() & ": FAIL: Mal-formed the certificate");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
} // End of 'for' statement
log("*** " & testcasename() & ": PASS: DENM generation time is inside the validity of the certificate");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
}
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage_DENMs(
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Invalid DENM received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected DENM not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cancelDenmEvent(v_denmComponent);
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_04_01_BV
* @desc Check that the secured DENM contains exactly one HeaderField generation_location
* when AT certificate does not contain any region restrictions
* Pics Selection: PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION
* Config Id: CF01
* with {
* the IUT has been authorized with the AT certificate (CERT_IUT_A)
* not containing validity_restrictions['region']
* }
* ensure that {
* when {
* the IUT is requested to send DENM
* } then {
* containing exactly one header_fields ['generation_location']
* containing generation_location
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_05_01_BV
* @reference ETSI TS 103 097 [1], clause 7.2
testcase TC_SEC_ITSS_SND_DENM_05_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
var ItsDenm v_denmComponent;
// Test control
if (not(PICS_GN_SECURITY) or not(PICS_CERTIFICATE_SELECTION)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION' required for executing the TC ***");
stop;
}
// Test component configuration
// CERT_IUT_A is the default one
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_denmComponent := f_triggerDenmEvent();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage_DENMs(
mw_header_field_signer_info_certificate(
mw_certificate(
?,
?,
?,
superset(
mw_validity_restriction_any_valid_region
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
))))))) {
log("*** " & testcasename() & ": INFO: Skip DENM containing region restrictions ***");
repeat;
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field(
e_generation_location
),
mw_header_field_signer_info_certificate,
mw_header_field_its_aid_DENM
))))) {
// The certificate doesn't contain region restrictions because such messages was catched before
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM contains generation location ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage_DENMs(
mw_header_field_signer_info_certificate
)))) {
// the message does not contain generation location
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM contains generation location ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage_DENMs(
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM doesn't contain generation location ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected DENM not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
// Cancel DENM events
f_cancelDenmEvent(v_denmComponent);
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_05_01_BV
function f_TC_SEC_ITSS_SND_DENM_05_BV(
in template GeographicRegion p_region := ?
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
) runs on ItsGeoNetworking {
// Local variables
var GeoNetworkingInd v_geoNwInd;
var ItsDenm v_denmComponent;
// Trigger DENM
v_denmComponent := f_triggerDenmEvent();
tc_ac.start;
alt {
// DENM contains generation location and certificate with region restrictions
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field(
e_generation_location
),
mw_header_field_signer_info_certificate(
mw_certificate(
?,
?,
?,
superset(
mw_validity_restriction_region(
)
)
)
),
mw_header_field_its_aid_DENM
))))) -> value v_geoNwInd {
var ValidityRestriction v_vr;
var HeaderField v_hf;
tc_ac.stop;
// check that generation location is inside the circular region of the certificate
if (f_getMsgHeaderField(v_geoNwInd.msgIn.gnPacket.securedMsg, e_generation_location, v_hf)
and f_getCertificateValidityRestriction(v_geoNwInd.msgIn.gnPacket.securedMsg.header_fields[0].headerField.signer.signerInfo.certificate, e_region, v_vr)
) {
if (f_isLocationInsideRegion(v_vr.validity.region, v_hf.headerField.generation_location)) {
log("*** " & testcasename() & ": PASS: DENM contains generation location inside the certificate validity region ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}else{
log("*** " & testcasename() & ": FAIL: DENM contains generation location outside the certificate validity region ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
} else {
log("*** " & testcasename() & ": FAIL: IMPOSSIBLE!!! DENM generation location or certificate region restriction header field does not exist");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
}
// DENM signing certificate doesn't contains region restriction
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage(
superset(
mw_header_field_its_aid_DENM,
mw_header_field(e_generation_location),
mw_header_field_signer_info_certificate(
mw_certificate(
?,
?,
?,
{ } // DENM signing certificate doesn't 'contains region restriction
)
)
))))) {
tc_ac.stop;
log("*** " & testcasename() & ": INCONC: DENM certificate doesn't contain region restriction");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwSecPdu(
mdw_securedMessage_DENMs(
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM doesn't contain generation location ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected DENM not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
}
} // End of 'alt' statement
f_cancelDenmEvent(v_denmComponent);
} // End of function f_TC_SEC_ITSS_SND_DENM_05_BV
/**
* @desc Check that the secured DENM contains exactly one HeaderField generation_location
* which is inside the circular region containing in the validity restriction of the
* certificate pointed by the signer_info field
* <pre>
* Pics Selection: PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_USE_CIRCULAR_REGION
* Config Id: CF01
* with {
* the IUT has been authorized with the AT certificate (CERT_IUT_B) {
* containing validity_restrictions ['region'] {
* containing region{
* containing region_type
* indicating 'circle'
* containing circular_region
* indicating REGION
* }
* }
* }
* }
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
* containing exactly one header_fields ['generation_location']
* containing generation_location
* indicating value inside the REGION
* }
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_05_02_BV
* @reference ETSI TS 103 097 [1], clause 7.2
testcase TC_SEC_ITSS_SND_DENM_05_02_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
// Test control
if (not(PICS_GN_SECURITY) or not(PICS_CERTIFICATE_SELECTION) or not(PICS_USE_CIRCULAR_REGION)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_USE_CIRCULAR_REGION' required for executing the TC ***");
// Test component configuration
vc_hashedId8ToBeUsed := cc_iutCert_B;
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_TC_SEC_ITSS_SND_DENM_05_BV(mw_geographicRegion_circle);
// Postamble
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_05_02_BV
/**
* @desc Check that the secured DENM contains exactly one HeaderField generation_location
* which is inside the rectangular region containing in the validity restriction
* Pics Selection: PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_USE_RECTANGULAR_REGION
* Config Id: CF01
* with {
* the IUT has been authorized with the AT certificate (CERT_IUT_C)
* containing validity_restrictions ['region']
* containing region
* containing region_type
* indicating 'rectangle'
* containing rectangular_region
* indicating REGION
* }
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
* containing exactly one header_field ['generation_location']
* containing generation_location
* indicating value inside the REGION
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_05_03_BV
* @reference ETSI TS 103 097 [1], clause 7.2
testcase TC_SEC_ITSS_SND_DENM_05_03_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
if (not(PICS_GN_SECURITY) or not(PICS_CERTIFICATE_SELECTION) or not(PICS_USE_RECTANGULAR_REGION)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY' required for executing the TC ***");
stop;
}
// Test component configuration
vc_hashedId8ToBeUsed := cc_iutCert_C;
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_TC_SEC_ITSS_SND_DENM_05_BV(mw_geographicRegion_rectangular);
// Postamble
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_05_03_BV
/**
* @desc Check that the secured DENM contains exactly one HeaderField generation_location
* which is inside the polygonal region containing in the validity restriction
* of the certificate pointed by the signer_info field
* <pre>
* Pics Selection: PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_USE_POLYGONAL_REGION
* Config Id: CF01
* with {
* the IUT has been authorized with the AT certificate (CERT_IUT_D)
* containing validity_restrictions ['region']
* containing region
* containing region_type
* indicating 'polygon'
* containing polygonal_region
* indicating REGION
* }
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
* containing exactly one header_field ['generation_location']
* containing generation_location
* indicating value inside the REGION
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_05_04_BV
* @reference ETSI TS 103 097 [1], clause 7.2
testcase TC_SEC_ITSS_SND_DENM_05_04_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variablesl
if (not(PICS_GN_SECURITY) or not(PICS_CERTIFICATE_SELECTION) or not(PICS_USE_POLYGONAL_REGION)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_USE_POLYGONAL_REGION' required for executing the TC ***");
// Test component configuration
vc_hashedId8ToBeUsed := cc_iutCert_D;
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_TC_SEC_ITSS_SND_DENM_05_BV(mw_geographicRegion_polygonal);
// Postamble
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_05_04_BV
/**
* @desc Check that the secured DENM contains exactly one HeaderField generation_location
* which is inside the identified region containing in the validity restriction
* of the certificate pointed by the signer_info field
* <pre>
* Pics Selection: PICS_GN_SECURITY and PICS_USE_IDENTIFIED_REGION and PICS_CERTIFICATE_SELECTION
* Config Id: CF01
* with {
* the IUT has been authorized with the AT certificate (CERT_IUT_E)
* containing validity_restrictions ['region']
* containing region
* containing region_type
* indicating 'id_region'
* containing identified_region
* indicating REGION
* }
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
* the IUT sends a SecuredMessage
* containing exactly one header_fields ['generation_location']
* containing generation_location
* indicating value inside the REGION
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_05_05_BV
* @reference ETSI TS 103 097 [1], clause 7.2
testcase TC_SEC_ITSS_SND_DENM_05_05_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
if (not(PICS_GN_SECURITY) or not(PICS_USE_IDENTIFIED_REGION) or not(PICS_CERTIFICATE_SELECTION)) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_CERTIFICATE_SELECTION' required for executing the TC ***");
// Test component configuration
vc_hashedId8ToBeUsed := cc_iutCert_E;
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_TC_SEC_ITSS_SND_DENM_05_BV(mw_geographicRegion_identified);
// Postamble
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_05_05_BV
/**
* @desc Check that the secured DENM contains exactly one HeaderField generation_location
* which is inside the region containing in the validity restriction
* of the certificate pointed by the signer_info field
* Pics Selection: PICS_GN_SECURITY and not PICS_CERTIFICATE_SELECTION
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
* Config Id: CF01
* with {
* the IUT being in the 'authorized' state
* }
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
* the IUT sends a SecuredMessage {
* containing header_fields['signed_info'].certificate {
* containing validity_restrictions ['region']
* {
* containing region.region_type
* indicating 'circle'
* containing region.circular_region
* indicating REGION
* } or {
* containing region.region_type
* indicating 'rectangle'
* containing region.rectangular_region
* containing array of rectangles
* indicating REGION
* } or {
* containing region.region_type
* indicating 'polygonal'
* containing region.polygonal_region
* indicating REGION
* } or {
* containing region.region_type
* indicating 'id_region'
* containing region.circular_region
* indicating REGION
* }
* }
* containing exactly one header_fields['generation_location']
* containing generation_location
* indicating location inside the REGION
* }
* }
* </pre>
* @see ETSI TS 103 096-2 v1.2.2 TP_SEC_ITSS_SND_DENM_05_06_BV
* @reference ETSI TS 103 097 [1], clause 7.2
testcase TC_SEC_ITSS_SND_DENM_05_06_BV() runs on ItsGeoNetworking system ItsSecSystem {
// Local variables
if (not(PICS_GN_SECURITY) or PICS_CERTIFICATE_SELECTION) {
log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY and not PICS_CERTIFICATE_SELECTION ' required for executing the TC ***");
// Test component configuration
f_cf01Up();
// Test adapter configuration
// Preamble
f_prNeighbour();
f_TC_SEC_ITSS_SND_DENM_05_BV(); // any type of regions
// Postamble
f_poNeighbour();
f_cf01Down();
} // End of testcase TC_SEC_ITSS_SND_DENM_05_06_BV
* @desc Check that the Secured DENM contains exactly one non-empty payload of type signed
* Pics Selection: PICS_GN_SECURITY
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being in the 'authorized' state
* }
* Expected results:
* ensure that {
* when {
* the IUT is requested to send a DENM
* } then {
* the IUT sends a SecuredMessage
* containing payload_field
* containing exactly one element of type Payload
* containing type
* indicating 'signed'
* containing not-empty data
* }
* }
* </pre>