Skip to content
titanization.patch 1.83 MiB
Newer Older
26001 26002 26003 26004 26005 26006 26007 26008 26009 26010 26011 26012 26013 26014 26015 26016 26017 26018 26019 26020 26021 26022 26023 26024 26025 26026 26027 26028 26029 26030 26031 26032 26033 26034 26035 26036 26037 26038 26039 26040 26041 26042 26043 26044 26045 26046 26047 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 26058 26059 26060 26061 26062 26063 26064 26065 26066 26067 26068 26069 26070 26071 26072 26073 26074 26075 26076 26077 26078 26079 26080 26081 26082 26083 26084 26085 26086 26087 26088 26089 26090 26091 26092 26093 26094 26095 26096 26097 26098 26099 26100 26101 26102 26103 26104 26105 26106 26107 26108 26109 26110 26111 26112 26113 26114 26115 26116 26117 26118 26119 26120 26121 26122 26123 26124 26125 26126 26127 26128 26129 26130 26131 26132 26133 26134 26135 26136 26137 26138 26139 26140 26141 26142 26143 26144 26145 26146 26147 26148 26149 26150 26151 26152 26153 26154 26155 26156 26157 26158 26159 26160 26161 26162 26163 26164 26165 26166 26167 26168 26169 26170 26171 26172 26173 26174 26175 26176 26177 26178 26179 26180 26181 26182 26183 26184 26185 26186 26187 26188 26189 26190 26191 26192 26193 26194 26195 26196 26197 26198 26199 26200 26201 26202 26203 26204 26205 26206 26207 26208 26209 26210 26211 26212 26213 26214 26215 26216 26217 26218 26219 26220 26221 26222 26223 26224 26225 26226 26227 26228 26229 26230 26231 26232 26233 26234 26235 26236 26237 26238 26239 26240 26241 26242 26243 26244 26245 26246 26247 26248 26249 26250 26251 26252 26253 26254 26255 26256 26257 26258 26259 26260 26261 26262 26263 26264 26265 26266 26267 26268 26269 26270 26271 26272 26273 26274 26275 26276 26277 26278 26279 26280 26281 26282 26283 26284 26285 26286 26287 26288 26289 26290 26291 26292 26293 26294 26295 26296 26297 26298 26299 26300 26301 26302 26303 26304 26305 26306 26307 26308 26309 26310 26311 26312 26313 26314 26315 26316 26317 26318 26319 26320 26321 26322 26323 26324 26325 26326 26327 26328 26329 26330 26331 26332 26333 26334 26335 26336 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 26366 26367 26368 26369 26370 26371 26372 26373 26374 26375 26376 26377 26378 26379 26380 26381 26382 26383 26384 26385 26386 26387 26388 26389 26390 26391 26392 26393 26394 26395 26396 26397 26398 26399 26400 26401 26402 26403 26404 26405 26406 26407 26408 26409 26410 26411 26412 26413 26414 26415 26416 26417 26418 26419 26420 26421 26422 26423 26424 26425 26426 26427 26428 26429 26430 26431 26432 26433 26434 26435 26436 26437 26438 26439 26440 26441 26442 26443 26444 26445 26446 26447 26448 26449 26450 26451 26452 26453 26454 26455 26456 26457 26458 26459 26460 26461 26462 26463 26464 26465 26466 26467 26468 26469 26470 26471 26472 26473 26474 26475 26476 26477 26478 26479 26480 26481 26482 26483 26484 26485 26486 26487 26488 26489 26490 26491 26492 26493 26494 26495 26496 26497 26498 26499 26500 26501 26502 26503 26504 26505 26506 26507 26508 26509 26510 26511 26512 26513 26514 26515 26516 26517 26518 26519 26520 26521 26522 26523 26524 26525 26526 26527 26528 26529 26530 26531 26532 26533 26534 26535 26536 26537 26538 26539 26540 26541 26542 26543 26544 26545 26546 26547 26548 26549 26550 26551 26552 26553 26554 26555 26556 26557 26558 26559 26560 26561 26562 26563 26564 26565 26566 26567 26568 26569 26570 26571 26572 26573 26574 26575 26576 26577 26578 26579 26580 26581 26582 26583 26584 26585 26586 26587 26588 26589 26590 26591 26592 26593 26594 26595 26596 26597 26598 26599 26600 26601 26602 26603 26604 26605 26606 26607 26608 26609 26610 26611 26612 26613 26614 26615 26616 26617 26618 26619 26620 26621 26622 26623 26624 26625 26626 26627 26628 26629 26630 26631 26632 26633 26634 26635 26636 26637 26638 26639 26640 26641 26642 26643 26644 26645 26646 26647 26648 26649 26650 26651 26652 26653 26654 26655 26656 26657 26658 26659 26660 26661 26662 26663 26664 26665 26666 26667 26668 26669 26670 26671 26672 26673 26674 26675 26676 26677 26678 26679 26680 26681 26682 26683 26684 26685 26686 26687 26688 26689 26690 26691 26692 26693 26694 26695 26696 26697 26698 26699 26700 26701 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 26716 26717 26718 26719 26720 26721 26722 26723 26724 26725 26726 26727 26728 26729 26730 26731 26732 26733 26734 26735 26736 26737 26738 26739 26740 26741 26742 26743 26744 26745 26746 26747 26748 26749 26750 26751 26752 26753 26754 26755 26756 26757 26758 26759 26760 26761 26762 26763 26764 26765 26766 26767 26768 26769 26770 26771 26772 26773 26774 26775 26776 26777 26778 26779 26780 26781 26782 26783 26784 26785 26786 26787 26788 26789 26790 26791 26792 26793 26794 26795 26796 26797 26798 26799 26800 26801 26802 26803 26804 26805 26806 26807 26808 26809 26810 26811 26812 26813 26814 26815 26816 26817 26818 26819 26820 26821 26822 26823 26824 26825 26826 26827 26828 26829 26830 26831 26832 26833 26834 26835 26836 26837 26838 26839 26840 26841 26842 26843 26844 26845 26846 26847 26848 26849 26850 26851 26852 26853 26854 26855 26856 26857 26858 26859 26860 26861 26862 26863 26864 26865 26866 26867 26868 26869 26870 26871 26872 26873 26874 26875 26876 26877 26878 26879 26880 26881 26882 26883 26884 26885 26886 26887 26888 26889 26890 26891 26892 26893 26894 26895 26896 26897 26898 26899 26900 26901 26902 26903 26904 26905 26906 26907 26908 26909 26910 26911 26912 26913 26914 26915 26916 26917 26918 26919 26920 26921 26922 26923 26924 26925 26926 26927 26928 26929 26930 26931 26932 26933 26934 26935 26936 26937 26938 26939 26940 26941 26942 26943 26944 26945 26946 26947 26948 26949 26950 26951 26952 26953 26954 26955 26956 26957 26958 26959 26960 26961 26962 26963 26964 26965 26966 26967 26968 26969 26970 26971 26972 26973 26974 26975 26976 26977 26978 26979 26980 26981 26982 26983 26984 26985 26986 26987 26988 26989 26990 26991 26992 26993 26994 26995 26996 26997 26998 26999 27000
+             *                      verifiable using KEY
+             *   } then {
+             *     the IUT accepts the message
+             *   }
+             * }
+             * </pre>
+             * @see          ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_01_04_BV
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_01_04_BV() 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_01_0x_BV_nodeB(cc_taCert_D));
+                v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BV_nodeD());
+                
+                // Synchronization
+                f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+                
+                // Cleanup
+                f_cf02Down();
+                
+            } // End of testcase TC_SEC_ITSS_RCV_GENMSG_01_04_BV
+            
+            /**
+             * @desc    Check that IUT accepts a well-formed Secured GN Beacon signed with the certificate with a rectangular region validity restriction
+             * @remark  The message defined in this test purpose is used in the subsequent test purposes with the snippet name ‘MSG_SEC_RCV_GENMSG_C’. Only differences to this snippet are mentioned in subsequent test purposes
+             * <pre>
+             * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+             * Config Id: CF01
+             * Expected behavior:
+             * with {
+             *   the IUT being in the 'authorized' state
+             *   and the IUT current time is inside the time validity period of CERT_TS_E_AT
+             *   and the IUT current location is inside the region validity period of CERT_TS_E_AT
+             * }
+             * ensure that {
+             *   when {
+             *     the IUT is receiving a SecuredMessage
+             *         containing protocol_version 
+             *             indicating value '2'
+             *         and containing header_fields[0]
+             *              containing type 
+             *                  indicating 'signer_info'
+             *              and containing signer
+             *                  containing type
+             *                      indicating 'certificate'
+             *                  and containing certificate (CERT_TS_E_AT)
+             *                      containing subject_info.subject_type
+             *                          indicating 'authorization_ticket' (2)
+             *                      and containing subject_attributes['verification key'] (KEY)
+             *                      and containing validity_restrictions['time_start_and_end']
+             *                          indicating CERT_TS_AT_TIME_VALIDITY
+             *                      and containing validity_restrictions['region']
+             *                          containing region
+             *                              containing region_type
+             *                                  indicating 'id_region'
+             *                              and containing id_region
+             *                                  indicating REGION
+             *       and containing header_fields [1]
+             *         containing type 
+             *           indicating 'generation_time'
+             *              containing generation_time
+             *                  indicating CURRENT_TIME
+             *       and containing header_fields [2]
+             *           containing type 
+             *               indicating 'generation_location'
+             *           and containing generation_location
+             *       and containing header_fields[3]
+             *           containing type 
+             *               indicating 'its_aid'
+             *           and containing its_aid
+             *               indicating 'AID_BEACON'
+             *          and containing payload_field 
+             *               containing type
+             *                  indicating 'signed'
+             *              containing data
+             *                  indicating length > 0
+             *          and containing trailer_fields 
+             *              containing single instance of type TrailerField 
+             *                  containing type
+             *                      indicating 'signature'
+             *                  containing signature
+             *                      verifiable using KEY
+             *   } then {
+             *     the IUT accepts the message
+             *   }
+             * }
+             * </pre>
+             * @see          ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_01_05_BV
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_01_05_BV() 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_01_0x_BV_nodeB(cc_taCert_E));
+                v_nodeD.start(f_TC_SEC_ITSS_RCV_GENMSG_xxx_BV_nodeD());
+                
+                // Synchronization
+                f_serverSync2ClientsAndStop({c_prDone, c_tbDone, c_poDone});
+                
+                // Cleanup
+                f_cf02Down();
+                
+            } // End of testcase TC_SEC_ITSS_RCV_GENMSG_01_05_BV
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_01_0x_BV {
+                
+                /**
+                 * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                 */
+                function f_TC_SEC_ITSS_RCV_GENMSG_01_0x_BV_nodeB(
+                                                                 in charstring p_taCert
+                ) runs on ItsGeoNetworking {
+                    
+                    // Local variables
+                    var GeoNetworkingPdu v_securedGnPdu;
+                    
+                    // Test component configuration
+                    f_cf01Up();
+                    
+                    // Test adapter configuration
+                    
+                    // Preamble
+                    f_prNeighbour();
+                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+                    
+                    // Test Body
+                    v_securedGnPdu := f_sendSecuredBeacon(p_taCert, omit, e_certificate);
+                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+                    
+                    // Postamble
+                    f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+                    
+                } // End of function f_TC_SEC_ITSS_RCV_GENMSG_01_0x_BV_nodeB
+                
+            } // End of group g_TC_SEC_ITSS_RCV_GENMSG_01_0x_BV
+            
+            /**
+             * @desc    Check that IUT discards a Secured GN Message containing protocol version set to a value less than 2
+             * <pre>
+             * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+             * Config Id: CF01
+             * Expected behavior:
+             * 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
+             *         containing protocol_version 
+             *             indicating 1
+             *   } then {
+             *     the IUT discards the message
+             *   }
+             * }
+             * </pre>
+             * @see          ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_02_01_BO
+             * @reference    ETSI TS 103 097 [1], clause 5.1
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_02_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_02_0x_BO_nodeB(PX_WRONG_PROTOCOL_VERSION));
+                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_02_01_BO
+            
+            /**
+             * @desc    Check that IUT discards a Secured GN Message containing protocol version set to a value greater than 2
+             * <pre>
+             * Pics Selection: PICS_GN_SECURITY and PICS_GN_GBC_SRC
+             * Config Id: CF01
+             * Expected behavior:
+             * 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
+             *         containing protocol_version 
+             *             indicating 3
+             *   } then {
+             *     the IUT discards the message
+             *   }
+             * }
+             * </pre>
+             * @see          ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_RCV_GENMSG_02_02_BO
+             * @reference    ETSI TS 103 097 [1], clause 5.1
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_02_02_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_02_0x_BO_nodeB(PX_WRONG_PROTOCOL_VERSION));
+                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_02_02_BO
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_02_0x_BO {
+                
+                /**
+                 * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                 */
+                function f_TC_SEC_ITSS_RCV_GENMSG_02_0x_BO_nodeB(
+                                                                 in UInt8 p_protocolVersion
+                ) runs on ItsGeoNetworking {
+                    
+                    // Local variables
+                    var GeoNetworkingPdu v_securedGnPdu;
+                    
+                    // Test component configuration
+                    f_cf01Up();
+                    
+                    // Test adapter configuration
+                    
+                    // Preamble
+                    f_prNeighbour();
+                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+                    
+                    // Test Body
+                    v_securedGnPdu := f_sendSecuredBeacon_Bo(cc_taCert_A, p_protocolVersion);
+                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
+                    
+                    // Postamble
+                    f_selfOrClientSyncAndVerdict(c_poDone, e_success);
+                    
+                } // End of function f_TC_SEC_ITSS_RCV_GENMSG_02_0x_BO_nodeB
+                
+            } // End of group g_TC_SEC_ITSS_RCV_GENMSG_02_0x_BV
+            
+            /**
+             * @desc    Check that IUT discards a secured GN Message if the header_fields contains more than one header field of type 'signer_info'
+             * <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 'signer_info'
+             *          and containing header_fields[2].type
+             *              indicating 'generation_time'
+             *          and containing header_fields[3].type
+             *              indicating ''generation_location''
+             *          and containing header_fields[4].type
+             *              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_01_BO
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_04_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_04_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_04_01_BO
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_04_01_BO {
+                
+                    /**
+                     * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                     */
+                function f_TC_SEC_ITSS_RCV_GENMSG_04_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_digest(
+                                    vc_atCertificate.signer_info.signerInfo.digest
+                            )), 
+                            m_header_field_signer_info(
+                                m_signerInfo_certificate(
+                                    vc_aaCertificate
+                            )), 
+                            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_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_01_BO
+                
+            } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_01_BO 
+            
+            /**
+             * @desc    Check that IUT discards a secured GN Message if the header_fields does not contain the header field of type 'signer_info'
+             * <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) 
+             *          and containing header_fields[0].type
+             *              indicating 'generation_time'
+             *          and containing header_fields[1].type
+             *              indicating 'generation_location'
+             *          and containing header_fields[2].type
+             *              indicating 'signer_info'
+             *          and containing header_fields[3].type
+             *              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_02_BO
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_04_02_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_02_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_02_BO
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_04_02_BO {
+                
+                    /**
+                     * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                     */
+                function f_TC_SEC_ITSS_RCV_GENMSG_04_02_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_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_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_02_BO
+                
+            } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_02_BO 
+            
+            /**
+             * @desc    Check that IUT is able to receive a secured GN Message if the signer_info header field is not encoded first.
+             * <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) 
+             *          and containing header_fields[0].type
+             *              indicating 'generation_time'
+             *          and containing header_fields[1].type
+             *              indicating 'generation_location'
+             *          and containing header_fields[2].type
+             *              containing its_aid
+             *                  indicating 'AID_BEACON'
+             *          and containing header_fields[3].type
+             *              indicating 'signer_info'
+             *          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_03_BO
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_04_03_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_03_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_03_BO
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_04_03_BO {
+                
+                    /**
+                     * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                     */
+                function f_TC_SEC_ITSS_RCV_GENMSG_04_03_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_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,
+                            m_header_field_signer_info(
+                                m_signerInfo_digest(
+                                    vc_atCertificate.signer_info.signerInfo.digest
+                            ))
+                        }, 
+                        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_03_BO
+                
+            } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_03_BO 
+            
+            /**
+             * @desc    Check that IUT discards a secured GN Message if the message contains more than one header field of type 'generation_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 'generation_time'
+             *          and containing header_fields[2].type
+             *              indicating 'generation_time'
+             *          and containing header_fields[3].type
+             *              indicating 'generation_time'
+             *          and containing header_fields[4].type
+             *              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_04_BO
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_04_04_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_04_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_04_BO
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_04_04_BO {
+                
+                    /**
+                     * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                     */
+                function f_TC_SEC_ITSS_RCV_GENMSG_04_04_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_time(1000 * f_getCurrentTime() - 1), // 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_04_BO
+                
+            } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_04_BO 
+            
+            /**
+             * @desc    Check that IUT discards a secured GN Message if the message does not contain the header field of type 'generation_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 'generation_time'
+             *          and containing header_fields[2].type
+             *              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_05_BO
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_04_05_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_05_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_05_BO
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_04_05_BO {
+                
+                    /**
+                     * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                     */
+                function f_TC_SEC_ITSS_RCV_GENMSG_04_05_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_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_05_BO
+                
+            } // End of group g_TC_SEC_ITSS_RCV_GENMSG_04_05_BO 
+            
+            /**
+             * @desc    Check that IUT discards a Secured GN Message if the message contains more than one 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 containing header_fields[3]
+             *              containing type
+             *                  indicating 'its_aid'
+             *              containing its_aid
+             *                  indicating 'AID_BEACON'
+             *          and containing header_fields[4].type
+             *              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_06_BO
+             * @reference    ETSI TS 103 097 [1], clause 7.3
+             */
+            testcase TC_SEC_ITSS_RCV_GENMSG_04_06_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_06_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_06_BO
+            
+            group g_TC_SEC_ITSS_RCV_GENMSG_04_06_BO {
+                
+                    /**
+                     * @desc    Behavior function for NodeB (TC_GEONW_PON_GBC_BV_01)
+                     */
+                function f_TC_SEC_ITSS_RCV_GENMSG_04_06_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_its_aid_Other,
+                            m_header_field_its_aid_Other
+                        },