ItsSecurity_TestCases.ttcn 1.48 MB
Newer Older
//                                // Check that no header is duplicated
//                                if (enum2int(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 (enum2int(v_headersFields[v_counter].type_) <= 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(
//                                mw_securedMessage(
//                                    superset(
//                                        mw_header_info_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 Ieee1609Dot2Data
//             *           containing header_fields['signer_info']
//             *               containing signer
//             *                   containing type
garciay's avatar
garciay committed
//             *                       containing certificate
//             *                   and containing certificate
//             *   }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.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 HeaderInfo 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
//                v_counter := 0;
//                tc_ac.start;
//                alt {
//                    [] geoNetworkingPort.receive(
//                        mw_geoNwInd(
//                            mw_geoNwSecPdu(
//                                mw_ieee1609Dot2Data_DENMs(
//                                    mw_header_info_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(
//                                mw_ieee1609Dot2Data_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 
//             * <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 Ieee1609Dot2Data
//             *       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
garciay's avatar
garciay committed
//             *                   containing 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>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.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 {
//                // Local variables
//                const integer        c_timeLimit := 10 * 60 * 1000000; // us
//                var GeoNetworkingInd v_geoNwInd;
//                var HeaderInfo      v_headerField;
//                var Time64           v_generationTime;
//                var Time64           v_curTime;
//                var Time64           v_startTime, v_endTime, v_duration;
//                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;
//                }
//                
//                // 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(
//                                mw_securedMessage(
//                                    superset(
//                                        mw_header_field(
//                                            e_generation_time
//                                        ),
//                                        mw_header_info_signer_info_certificate,
//                                        mw_header_info_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 
//                        log("v_curTime (us)=", v_curTime);
//                         
//                        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) {
//                                        if (PICS_PLUGTEST_VERSION){
//                                            log("*** " & testcasename() & ": FAIL: Usage of time_start_and_duration is not allowed in TS103097 v1.2.5");
//                                            f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
//                                        }
//                                        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(
//                                mw_ieee1609Dot2Data_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 HeaderInfo generation_location 
//             *         when AT certificate does not contain any region restrictions 
//             * <pre>
//             * 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 {
//             *       the IUT sends a Ieee1609Dot2Data
//             *           containing exactly one header_fields ['generation_location']
//             *               containing generation_location
//             *   }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.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
//                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(
//                                mw_ieee1609Dot2Data_DENMs(
//                                    mw_header_info_signer_info_certificate(
//                                        mw_certificate(
//                                            ?,
//                                            ?,
//                                            ?,
//                                            superset(
//                                                mw_validity_restriction_any_valid_region
//                    ))))))) {
//                        log("*** " & testcasename() & ": INFO: Skip DENM containing region restrictions ***");
//                        repeat;
//                    }
//                    [] geoNetworkingPort.receive(
//                        mw_geoNwInd(
//                            mw_geoNwSecPdu(
//                                mw_securedMessage(
//                                    superset(
//                                        mw_header_field(
//                                            e_generation_location
//                                        ),
//                                        mw_header_info_signer_info_certificate,
//                                        mw_header_info_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(
//                                mw_ieee1609Dot2Data_DENMs(
//                                    mw_header_info_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(
//                                mw_ieee1609Dot2Data_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 (present) GeographicRegion p_region := ?
//            ) 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(
//                                mw_securedMessage(
//                                    superset(
//                                        mw_header_field(
//                                            e_generation_location
//                                        ),
//                                        mw_header_info_signer_info_certificate(
//                                            mw_certificate(
//                                                ?,
//                                                ?,
//                                                ?, 
//                                                superset(
//                                                    mw_validity_restriction_region(
//                                                        p_region
//                                                    )
//                                                )
//                                            )
//                                        ),
//                                        mw_header_info_its_aid_DENM
//                    ))))) -> value v_geoNwInd {
//                        var ValidityRestriction v_vr;
//                        var HeaderInfo         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(
//                                mw_securedMessage(
//                                    superset(
//                                        mw_header_info_its_aid_DENM,
//                                        mw_header_field(e_generation_location),
//                                        mw_header_info_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(
//                                mw_ieee1609Dot2Data_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 HeaderInfo 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 {
//             *       the IUT sends a Ieee1609Dot2Data
//             *           containing exactly one header_fields ['generation_location']
//             *               containing generation_location
//             *                   indicating value inside the REGION
//             *     }
//             *   }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.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 ***");
//                    stop;
//                }
//                
//                // 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 HeaderInfo generation_location 
//             *         which is inside the rectangular 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_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 {
//             *       the IUT sends a Ieee1609Dot2Data
//             *           containing exactly one header_field ['generation_location']
//             *               containing generation_location
//             *                   indicating value inside the REGION
//             *   }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.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
//                
//                // Test control
//                if (not(PICS_GN_SECURITY) or not(PICS_CERTIFICATE_SELECTION) or not(PICS_USE_RECTANGULAR_REGION)) {
//                    log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_USE_RECTANGULAR_REGION' 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 HeaderInfo 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
//             *                     containing instance of RectangularRegion
//             *                         indicating REGION
//             * }
//             * ensure that {
//             *   when {
//             *         the IUT is requested to send a DENM
//             *   } then {
//             *         the IUT sends a Ieee1609Dot2Data
//             *             containing exactly one header_field ['generation_location']
//             *                 containing generation_location
//             *                     indicating value inside the REGION
//             *   }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.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
//                
//                // Test control
//                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 ***");
//                    stop;
//                }
//                
//                // 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 HeaderInfo 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 Ieee1609Dot2Data 
//             *           containing exactly one header_fields ['generation_location']
//             *               containing generation_location
//             *                   indicating value inside the REGION
//             *   }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.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
//                
//                // Test control
//                if (not(PICS_GN_SECURITY) or not(PICS_CERTIFICATE_SELECTION) or not(PICS_USE_IDENTIFIED_REGION)) {
//                    log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY and PICS_CERTIFICATE_SELECTION and PICS_USE_IDENTIFIED_REGION' required for executing the TC ***");
//                    stop;
//                }
//                
//                // 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 non-empty payload of type signed
//             * <pre>
//             * 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 Ieee1609Dot2Data
//             *             containing payload_field
//             *                 containing exactly one element of type Payload
//             *                     containing type
//             *                         indicating 'signed'
//             *                      and containing not-empty data
//             *     }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_SND_DENM_08_01_BV
//             * @reference    ETSI TS 103 097 [1], clause 7.2
//             */
//            testcase TC_SEC_ITSS_SND_DENM_08_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
//                // Local variables
//                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();
//                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
//                
//                // Test Body
//                v_denmComponent := f_triggerDenmEvent();
//                tc_ac.start;
//                alt {
//                    [] geoNetworkingPort.receive(
//                        mw_geoNwInd(
//                            mw_geoNwSecPdu(
//                                mw_ieee1609Dot2Data_DENMs(
//                                    ?,
//                                    mw_payload(e_signed)
//                    )))) {
//                        log("*** " & testcasename() & ": PASS: DENM payload is 'signed'");
//                        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
//                    }
//                    [] geoNetworkingPort.receive(
//                        mw_geoNwInd(
//                            mw_geoNwSecPdu(
//                                mw_ieee1609Dot2Data_DENMs(
//                                    ?,
//                                    mw_payload()
//                    )))) {
//                         log("*** " & testcasename() & ": FAIL: DENM payload is not 'signed'");
//                        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
//                    }
//                    [] geoNetworkingPort.receive(
//                        mw_geoNwInd(
//                            mw_geoNwSecPdu(
//                                mw_ieee1609Dot2Data_DENMs
//                    ))) {
//                         log("*** " & testcasename() & ": FAIL: DENM payload is not exist");
//                        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_08_01_BV
//            
//            /**
//             * @desc   Check that the secured DENM contains only the trailer field of type signature 
//             *         and no other trailer fields     
//             * <pre>
//             * Pics Selection: PICS_GN_SECURITY and PICS_PLUGTEST_VERSION
//             * Config Id: CF01
//             * Initial conditions:
//             * with
//             *     the IUT being in the 'authorized' state
//             * ensure that
//             *     when
//             *         the IUT is requested to send DENM
//             *     then
//             *         the IUT sends a Ieee1609Dot2Data
//             *             containing trailer_fields
//             *                 containing trailer_fields[0]
//             *                     containing type
//             *                         indicating 'signature'
//             *                 and not containing other items
//             * </pre>
garciay's avatar
garciay committed
//             * @see         ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_SND_DENM_09_01_BV
//             * @reference   ETSI TS 103 097 [1], clause 7.2
//             */
//            testcase TC_SEC_ITSS_SND_DENM_09_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
//                //  Local variables
//                const integer c_nbVerification := 3;
//                var integer v_nbVerification := 0;
//                var ItsDenm v_denmComponent;
//                
//                // Test control
//                if (not(PICS_GN_SECURITY)) {
//                    log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY' required for executing the TC ***");
//                    stop;
//                }
//
//                if (not(PICS_PLUGTEST_VERSION)) {
//                    log("*** " & testcasename() & ":ERROR: 'PICS_PLUGTEST_VERSION' required for executing the TC ***");
//                    stop;
//                }
//                
//                // Test component configuration
//                f_cf01Up();
//                
//                // 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(
//                                mw_ieee1609Dot2Data_DENMs(?, ?, {
//                                     mw_trailer_field_signature
//                                })
//                    ))){
//                        tc_ac.stop;
//                        log("*** " & testcasename() & ": INFO: DENM message with signature trailer received ***");
//                        v_nbVerification := v_nbVerification + 1;
//                        if (v_nbVerification < c_nbVerification) {
//                            tc_ac.start;
//                            repeat;
//                        }
//                    }
//
//                    [] geoNetworkingPort.receive(
//                        mw_geoNwInd(
//                            mw_geoNwSecPdu(
//                                mw_ieee1609Dot2Data_DENMs(?, ?, {})
//                    ))) { 
//                        tc_ac.stop;
//                        log("*** " & testcasename() & ": FAIL: DENM message with NO trailer fields received ***");
//                        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
//                    }
//
//                    [] geoNetworkingPort.receive(
//                        mw_geoNwInd(
//                            mw_geoNwSecPdu(
//                                mw_ieee1609Dot2Data_DENMs(?, ?,
//                                    superset( mw_trailer_field, ? )
//                    )))) { 
//                        tc_ac.stop;
//                        log("*** " & testcasename() & ": FAIL: DENM message with more than one trailer field 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
//                log("*** " & testcasename() & ": PASS: DENM received with correct signature");
//                f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
//                
//                // Postamble
//                f_cancelDenmEvent(v_denmComponent);
//                f_poNeighbour();
//                f_cf01Down();
//            } // End of testcase TC_SEC_ITSS_SND_DENM_09_01_BV
//            
//            /**
//             * @desc   Check that the secured DENM contains only one TrailerField of type signature.
//             *         Check that the signature contained in the Ieee1609Dot2Data is calculated 
//             *         over the right fields by cryptographically verifying the signature.     
//             * <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 DENM
//             *   } then {
//             *     the IUT sends a Ieee1609Dot2Data
//             *         containing header_field ['signer_info']
//             *             containing signer
//             *                 containing type
garciay's avatar
garciay committed
//             *                   containing certificate
//             *             containing certificate
//             *                 containing subject_info.subject_type
//             *                     indicating 'authorization_ticket' (2)
//             *                 and containing subject_attributes['verification key'] (KEY)
//             *                     containing trailer_fields
//             *                         containing single instance of type TrailerField
//             *                             containing type
//             *                                 indicating 'signature'
//             *                             and containing signature
//             *                                 verifiable using KEY
//             *   }
//             * }
//             * </pre>
garciay's avatar
garciay committed
//             * @see          ETSI TS 103 096-2 v1.3.2 TP_SEC_ITSS_SND_DENM_10_01_BV
//             * @reference   ETSI TS 103 097 [1], clause 7.2
//             */
//            testcase TC_SEC_ITSS_SND_DENM_10_01_BV() runs on ItsGeoNetworking system ItsSecSystem {
//                //  Local variables
//                var GeoNetworkingInd v_geoNwInd;
//                var SignerInfo v_signerInfo;
//                var Certificate v_certificate;
//                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();
//                
//                // 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(
//                                mw_ieee1609Dot2Data_DENMs(
//                                    mw_header_info_signer_info_certificate
//                    )))) -> value v_geoNwInd { 
//                        tc_ac.stop;
//                        log("*** " & testcasename() & ": INFO: DENM message with certificate received ***");
//                        f_getMsgSignerInfo(v_geoNwInd.msgIn.gnPacket.securedMsg, v_signerInfo);