Newer
Older
27001
27002
27003
27004
27005
27006
27007
27008
27009
27010
27011
27012
27013
27014
27015
27016
27017
27018
27019
27020
27021
27022
27023
27024
27025
27026
27027
27028
27029
27030
27031
27032
27033
27034
27035
27036
27037
27038
27039
27040
27041
27042
27043
27044
27045
27046
27047
27048
27049
27050
27051
27052
27053
27054
27055
27056
27057
27058
27059
27060
27061
27062
27063
27064
27065
27066
27067
27068
27069
27070
27071
27072
27073
27074
27075
27076
27077
27078
27079
27080
27081
27082
27083
27084
27085
27086
27087
27088
27089
27090
27091
27092
27093
27094
27095
27096
27097
27098
27099
27100
27101
27102
27103
27104
27105
27106
27107
27108
27109
27110
27111
27112
27113
27114
27115
27116
27117
27118
27119
27120
27121
27122
27123
27124
27125
27126
27127
27128
27129
27130
27131
27132
27133
27134
27135
27136
27137
27138
27139
27140
27141
27142
27143
27144
27145
27146
27147
27148
27149
27150
27151
27152
27153
27154
27155
27156
27157
27158
27159
27160
27161
27162
27163
27164
27165
27166
27167
27168
27169
27170
27171
27172
27173
27174
27175
27176
27177
27178
27179
27180
27181
27182
27183
27184
27185
27186
27187
27188
27189
27190
27191
27192
27193
27194
27195
27196
27197
27198
27199
27200
27201
27202
27203
27204
27205
27206
27207
27208
27209
27210
27211
27212
27213
27214
27215
27216
27217
27218
27219
27220
27221
27222
27223
27224
27225
27226
27227
27228
27229
27230
27231
27232
27233
27234
27235
27236
27237
27238
27239
27240
27241
27242
27243
27244
27245
27246
27247
27248
27249
27250
27251
27252
27253
27254
27255
27256
27257
27258
27259
27260
27261
27262
27263
27264
27265
27266
27267
27268
27269
27270
27271
27272
27273
27274
27275
27276
27277
27278
27279
27280
27281
27282
27283
27284
27285
27286
27287
27288
27289
27290
27291
27292
27293
27294
27295
27296
27297
27298
27299
27300
27301
27302
27303
27304
27305
27306
27307
27308
27309
27310
27311
27312
27313
27314
27315
27316
27317
27318
27319
27320
27321
27322
27323
27324
27325
27326
27327
27328
27329
27330
27331
27332
27333
27334
27335
27336
27337
27338
27339
27340
27341
27342
27343
27344
27345
27346
27347
27348
27349
27350
27351
27352
27353
27354
27355
27356
27357
27358
27359
27360
27361
27362
27363
27364
27365
27366
27367
27368
27369
27370
27371
27372
27373
27374
27375
27376
27377
27378
27379
27380
27381
27382
27383
27384
27385
27386
27387
27388
27389
27390
27391
27392
27393
27394
27395
27396
27397
27398
27399
27400
27401
27402
27403
27404
27405
27406
27407
27408
27409
27410
27411
27412
27413
27414
27415
27416
27417
27418
27419
27420
27421
27422
27423
27424
27425
27426
27427
27428
27429
27430
27431
27432
27433
27434
27435
27436
27437
27438
27439
27440
27441
27442
27443
27444
27445
27446
27447
27448
27449
27450
27451
27452
27453
27454
27455
27456
27457
27458
27459
27460
27461
27462
27463
27464
27465
27466
27467
27468
27469
27470
27471
27472
27473
27474
27475
27476
27477
27478
27479
27480
27481
27482
27483
27484
27485
27486
27487
27488
27489
27490
27491
27492
27493
27494
27495
27496
27497
27498
27499
27500
27501
27502
27503
27504
27505
27506
27507
27508
27509
27510
27511
27512
27513
27514
27515
27516
27517
27518
27519
27520
27521
27522
27523
27524
27525
27526
27527
27528
27529
27530
27531
27532
27533
27534
27535
27536
27537
27538
27539
27540
27541
27542
27543
27544
27545
27546
27547
27548
27549
27550
27551
27552
27553
27554
27555
27556
27557
27558
27559
27560
27561
27562
27563
27564
27565
27566
27567
27568
27569
27570
27571
27572
27573
27574
27575
27576
27577
27578
27579
27580
27581
27582
27583
27584
27585
27586
27587
27588
27589
27590
27591
27592
27593
27594
27595
27596
27597
27598
27599
27600
27601
27602
27603
27604
27605
27606
27607
27608
27609
27610
27611
27612
27613
27614
27615
27616
27617
27618
27619
27620
27621
27622
27623
27624
27625
27626
27627
27628
27629
27630
27631
27632
27633
27634
27635
27636
27637
27638
27639
27640
27641
27642
27643
27644
27645
27646
27647
27648
27649
27650
27651
27652
27653
27654
27655
27656
27657
27658
27659
27660
27661
27662
27663
27664
27665
27666
27667
27668
27669
27670
27671
27672
27673
27674
27675
27676
27677
27678
27679
27680
27681
27682
27683
27684
27685
27686
27687
27688
27689
27690
27691
27692
27693
27694
27695
27696
27697
27698
27699
27700
27701
27702
27703
27704
27705
27706
27707
27708
27709
27710
27711
27712
27713
27714
27715
27716
27717
27718
27719
27720
27721
27722
27723
27724
27725
27726
27727
27728
27729
27730
27731
27732
27733
27734
27735
27736
27737
27738
27739
27740
27741
27742
27743
27744
27745
27746
27747
27748
27749
27750
27751
27752
27753
27754
27755
27756
27757
27758
27759
27760
27761
27762
27763
27764
27765
27766
27767
27768
27769
27770
27771
27772
27773
27774
27775
27776
27777
27778
27779
27780
27781
27782
27783
27784
27785
27786
27787
27788
27789
27790
27791
27792
27793
27794
27795
27796
27797
27798
27799
27800
27801
27802
27803
27804
27805
27806
27807
27808
27809
27810
27811
27812
27813
27814
27815
27816
27817
27818
27819
27820
27821
27822
27823
27824
27825
27826
27827
27828
27829
27830
27831
27832
27833
27834
27835
27836
27837
27838
27839
27840
27841
27842
27843
27844
27845
27846
27847
27848
27849
27850
27851
27852
27853
27854
27855
27856
27857
27858
27859
27860
27861
27862
27863
27864
27865
27866
27867
27868
27869
27870
27871
27872
27873
27874
27875
27876
27877
27878
27879
27880
27881
27882
27883
27884
27885
27886
27887
27888
27889
27890
27891
27892
27893
27894
27895
27896
27897
27898
27899
27900
27901
27902
27903
27904
27905
27906
27907
27908
27909
27910
27911
27912
27913
27914
27915
27916
27917
27918
27919
27920
27921
27922
27923
27924
27925
27926
27927
27928
27929
27930
27931
27932
27933
27934
27935
27936
27937
27938
27939
27940
27941
27942
27943
27944
27945
27946
27947
27948
27949
27950
27951
27952
27953
27954
27955
27956
27957
27958
27959
27960
27961
27962
27963
27964
27965
27966
27967
27968
27969
27970
27971
27972
27973
27974
27975
27976
27977
27978
27979
27980
27981
27982
27983
27984
27985
27986
27987
27988
27989
27990
27991
27992
27993
27994
27995
27996
27997
27998
27999
28000
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_06_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_06_BO
+
+ /**
+ * @desc Check that IUT discards a secured GN Message if the message does not contain the header field of type 'its_aid'
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields[0].type
+ * indicating 'signer_info'
+ * and containing header_fields[1].type
+ * indicating 'generation_time'
+ * and containing header_fields[2].type
+ * indicating 'generation_location'
+ * and not containing other header fields
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_04_06a_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_04_06a_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_04_06a_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_04_06a_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_04_06a_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_04_06a_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_digest(
+ vc_atCertificate.signer_info.signerInfo.digest
+ )),
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0000'O
+ ))
+ )
+ },
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_06a_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_06a_BO
+
+ /**
+ * @desc Check that IUT discards a secured GN Message if the message contains more than one header field of type 'generation_location'
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields[0].type
+ * indicating 'signer_info'
+ * and containing header_fields[1].type
+ * indicating 'generation_time'
+ * and containing header_fields[2].type
+ * indicating 'generation_location'
+ * and containing header_fields[3].type
+ * indicating 'generation_location'
+ * and containing header_fields[4]
+ * containing type
+ * indicating 'its_aid'
+ * containing its_aid
+ * indicating 'AID_BEACON'
+ * and not containing other header fields
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_04_07_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_04_07_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_04_07_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_04_07_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_04_07_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_04_07_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_digest(
+ vc_atCertificate.signer_info.signerInfo.digest
+ )),
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0000'O
+ ))
+ ),
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0100'O
+ ))
+ ),
+ m_header_field_its_aid_Other
+ },
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_07_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_07_BO
+
+ /**
+ * @desc Check that IUT discards a secured GN Message if the message contains more than one header field of type 'generation_location'
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields[0].type
+ * indicating 'signer_info'
+ * and containing header_fields[1].type
+ * indicating 'generation_time'
+ * and containing header_fields[2].type
+ * and containing header_fields[4].type
+ * indicating 'its_aid'
+ * containing its_aid
+ * indicating 'AID_BEACON'
+ * and not containing other header fields
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_04_08_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_04_08_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_04_08_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_04_08_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_04_08_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_04_08_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_digest(
+ vc_atCertificate.signer_info.signerInfo.digest
+ )),
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_its_aid_Other
+ },
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_08_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_08_BO
+
+ /**
+ * @desc Check that IUT is able to receive a Secured GN Beacon if the header fields are not in the ascending order according to the numbering of the enumeration
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields[0].type
+ * indicating 'signer_info'
+ * and containing header_fields[1].type
+ * indicating 'its_aid'
+ * and containing header_fields[2].type
+ * indicating 'generation_time'
+ * and containing header_fields[3].type
+ * and not containing other header fields
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_04_09_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_04_09_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_04_09_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_04_09_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_04_09_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_04_09_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_digest(
+ vc_atCertificate.signer_info.signerInfo.digest
+ )),
+ m_header_field_its_aid_Other,
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0000'O
+ ))
+ )
+ },
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_09_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_09_BO
+
+ /**
+ * @desc Check that IUT accepts a GN Secured Message containing optional header field of type 'expiry_time'
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields[0].type
+ * indicating 'signer_info'
+ * and containing header_fields[1].type
+ * indicating 'its_aid'
+ * and containing header_fields[2].type
+ * indicating 'generation_time'
+ * and containing header_fields[3].type
+ * and not containing other header fields
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_04_11_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_04_11_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_04_11_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_04_11_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_04_11_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_04_11_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_digest(
+ vc_atCertificate.signer_info.signerInfo.digest
+ )),
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_expiry_time(
+ 1000 * (3600 + f_getCurrentTime()) // In us
+ ),
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0000'O
+ ))
+ ),
+ m_header_field_its_aid_Other
+ },
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_11_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_11_BO
+
+ /**
+ * @desc Check that IUT accepts the Secured GN Message containing additional non-standard HeaderField
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields[0].type
+ * indicating 'signer_info'
+ * and containing header_fields[1].type
+ * indicating 'generation_time'
+ * and containing header_fields[2].type
+ * and containing header_fields[3].type
+ * indicating 'its_aid'
+ * and containing header_fields[4]
+ * containing type
+ * indicating non-standard header field type (1000)
+ * and containing other_header
+ * indicating non-empty data
+ * and not containing other header fields
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_04_12_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_04_12_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_04_12_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_04_12_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_04_12_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_04_12_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_digest(
+ vc_atCertificate.signer_info.signerInfo.digest
+ )),
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_expiry_time(
+ 1000 * (3600 + f_getCurrentTime()) // In us
+ ),
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0000'O
+ ))
+ ),
+ m_header_field_its_aid_Other,
+ m_header_field_unspecify
+ },
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_12_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_12_BO
+
+ /**
+ * @desc Check that IUT accepts the Secured GN Message containing additional non-standard HeaderField
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields[0].type
+ * indicating 'signer_info'
+ * and containing header_fields[1].type
+ * indicating 'generation_time'
+ * and containing header_fields[2].type
+ * and containing header_fields[3].type
+ * indicating 'its_aid'
+ * and containing header_fields[4]
+ * containing type
+ * indicating 'encryption_parameters'
+ * and containing enc_params
+ * containing symm_algorithm
+ * indicating 'aes_128_ccm'
+ * and containing nonce
+ * and containing header_fields[4]
+ * containing type
+ * indicating 'recipient_info'
+ * and containing recipients
+ * containing recipients[0]
+ * containing cert_id
+ * referencing to CERT_IUT_A_AT
+ * and containing pk_encryption
+ * indicating 'ecies_nistp256'
+ * and containing enc_key
+ * and not containing other header fields
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_04_13_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_04_13_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_04_13_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_04_13_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_04_13_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_04_13_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var Certificate v_iutATCertificate;
+ var SubjectAttribute v_encryption_key;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ if (
+ (f_readCertificate(cc_iutCert_A, v_iutATCertificate) == false) or
+ (f_getCertificateSubjectAttribute(v_iutATCertificate, e_encryption_key, v_encryption_key) == false)
+ ) {
+ f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_timeout); // Set verdict to inconc
+ } else {
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_digest(
+ vc_atCertificate.signer_info.signerInfo.digest
+ )),
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_expiry_time(
+ 1000 * (3600 + f_getCurrentTime()) // In us
+ ),
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0000'O
+ ))
+ ),
+ m_header_field_its_aid_Other,
+ m_header_field_enc_params( // containing header_fields[3].type.enc_params
+ m_encryptionParameters_aes_128_ccm( // indicating 'aes_128_ccm'
+ PX_ENCRYPTIONPARAMETERS_AES_128_CCM_NONCE // and containing nonce
+ )
+ ),
+ m_header_field_multiple_recipients( // containing header_fields[4].type
+ { // indicating 'encryption_parameters'
+ m_recipientInfo_ecies_enc_key(
+ v_iutATCertificate.signer_info.signerInfo.digest,
+ e_ecies_nistp256, // containing symm_algorithm
+ // indicating 'aes_128_ccm'
+ m_eciesEncryptedKey_aesccm(
+ v_encryption_key.attribute.rv,
+ '00000000000000000000000000000000'O, // FIXME Where to find these values
+ '00000000000000000000000000000000'O
+ )
+ )
+ }
+ )
+ },
+ e_certificate_digest_with_sha256,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+ }
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_04_13_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_13_BO
+
+ /**
+ * @desc Check that IUT discards a secured GN Beacon if the header_fields contains a signer of type 'self'
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields['signer_info']
+ * containing signer.type
+ * indicating 'self''
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_05_01_BO
+ * @reference ETSI TS 103 097 [1], clause 7.3
+ */
+ testcase TC_SEC_ITSS_RCV_GENMSG_05_01_BO() runs on ItsMtc system ItsSecSystem {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not(PICS_GN_SECURITY) or not(PICS_GN_GBC_SRC)) {
+ log("*** " & testcasename() & ": 'PICS_GN_SECURITY and PICS_GN_GBC_SRC' required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_TC_SEC_ITSS_RCV_GENMSG_05_01_BO());
+ v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BO_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of testcase TC_SEC_ITSS_RCV_GENMSG_05_01_BO
+
+ group g_TC_SEC_ITSS_RCV_GENMSG_05_01_BO {
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+ */
+ function f_TC_SEC_ITSS_RCV_GENMSG_05_01_BO() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingPdu v_securedGnPdu;
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB); // Use NodeB
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
+
+ // Test Body
+ v_securedGnPdu := f_prepareSecuredBeacon(
+ cc_taCert_A,
+ {
+ m_header_field_signer_info(
+ m_signerInfo_self
+ ),
+ m_header_field_generation_time(1000 * f_getCurrentTime()), // In us
+ m_header_field_generation_location(
+ valueof(m_threeDLocation(
+ v_longPosVectorNodeB.latitude,
+ v_longPosVectorNodeB.longitude,
+ '0000'O
+ ))
+ ),
+ m_header_field_its_aid_Other
+ },
+ e_self,
+ false
+ );
+ f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_securedGnPdu));
+ f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+
+ // Postamble
+ f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+
+ } // End of testcase f_TC_SEC_ITSS_RCV_GENMSG_05_01_BO
+
+ } // End of group g_TC_SEC_ITSS_RCV_GENMSG_05_01_BO
+
+ /**
+ * @desc Check that IUT discards a secured GN Beacon if the header_fields contains a signer of type 'certificate_digest_with_other_algorithm'
+ * <pre>
+ * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the 'authorized' state
+ * and the IUT current time is inside the time validity period of CERT_TS_A_AT
+ * }
+ * ensure that {
+ * when {
+ * the IUT is receiving a SecuredMessage (MSG_SEC_RCV_GENMSG_A)
+ * containing header_fields['signer_info']
+ * containing signer.type
+ * indicating 'certificate_digest_with_other_algorithm'
+ * } then {
+ * the IUT discards the message
+ * }
+ * }
+ * </pre>
+ *
+ * @see ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_05_02_BO