Skip to content
ItsPki_TestCases.ttcn 5.54 KiB
Newer Older
/**
 *  @author   ETSI / STF545
 *  @version  $URL$
 *            $Id$
 *  @desc     Testcases  file for Security Protocol
 *  @reference   ETSI TS 103 097 v1.2.1
 *  @copyright   ETSI Copyright Notification
 *               No part may be reproduced except as authorized by written permission.
 *               The copyright and the foregoing restriction extend to reproduction in all media.
 *               All rights reserved.
 */
module ItsPki_TestCases {
    // Libcommon
    import from LibCommon_Time all;
    import from LibCommon_VerdictControl all;
    import from LibCommon_Sync all;
    import from LibCommon_BasicTypesAndValues all;
    
    // LibIts
    import from IEEE1609dot2BaseTypes language "ASN.1:1997" all;
    import from IEEE1609dot2 language "ASN.1:1997" all;
    import from EtsiTs102941BaseTypes language "ASN.1:1997" all;
    import from EtsiTs102941TypesEnrolment language "ASN.1:1997" all;
    import from EtsiTs102941MessagesItss language "ASN.1:1997" all;
    import from EtsiTs103097Module language "ASN.1:1997" all;
    
    // LibItsCommon
    import from LibItsCommon_TypesAndValues all;
    import from LibItsCommon_Functions all;
    import from LibItsCommon_TypesAndValues all;
    import from LibItsCommon_ASN1_NamedNumbers all;
    
    // LibItsGeoNetworking
    import from LibItsGeoNetworking_TestSystem all;
    import from LibItsGeoNetworking_Functions all;
    import from LibItsGeoNetworking_Templates all;
    import from LibItsGeoNetworking_TypesAndValues all;
    import from LibItsGeoNetworking_Pics all;

    // LibItsCam
    import from LibItsCam_Templates all;
    import from LibItsCam_Functions all;
    import from LibItsCam_Templates all;
    import from LibItsCam_Functions all;
    import from LibItsCam_TestSystem all;
    
    // LibItsDenm
    import from LibItsDenm_Templates all;
    import from LibItsDenm_TestSystem all;
    
    // LibItsSecurity
    import from LibItsSecurity_TypesAndValues all;
garciay's avatar
garciay committed
    import from LibItsSecurity_TestSystem all;
    import from LibItsSecurity_Templates all;
    import from LibItsSecurity_Functions all;
    import from LibItsSecurity_Pixits all;
    import from LibItsSecurity_Pics all;
    
    // LibItsPki
    import from LibItsPki_Templates all;
    
    // AtsPki
    import from ItsPki_Functions all;
    import from ItsPki_TestSystem all;
    
garciay's avatar
garciay committed
        testcase TC_SEC_PKI_SND_EA_01_BV() runs on ItsSecurityBaseComponent system ItsPkiSystem {
                
            // Local variables
            var LongPosVector v_longPosVectorIut;
            var GeoNetworkingPdu v_securedGnPdu;
            var GnRawPayload v_sentRawPayload;
garciay's avatar
garciay committed
            var EtsiTs103097Certificate v_certificate;
            
            // Test control
            if (not(PICS_GN_SECURITY)) {
                log("*** " & testcasename() & ":ERROR: 'PICS_GN_SECURITY' required for executing the TC ***");
                stop;
            }
            
            // Test component configuration
garciay's avatar
garciay committed
            f_cf01Up(); // Initialise IUT with CERT_IUT_A_AT signed with CERT_IUT_A_AA
            v_longPosVectorIut := f_getPosition(c_compIut);
garciay's avatar
garciay committed
            f_readCertificate(vc_hashedId8ToBeUsed, v_certificate);
                
            // Test adapter configuration
            
            // Preamble
            f_prNeighbour();
            f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader)); // Authorize the TA to forward the received beacons
            f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            
            // Test Body
garciay's avatar
garciay committed
            v_securedGnPdu := f_sendEnrollmentRequest(
garciay's avatar
garciay committed
                m_innerEcRequest(
                                 "TODO",
                                 m_publicKeys(
                                              v_certificate.toBeSigned.verifyKeyIndicator.verificationKey,
                                              v_certificate.toBeSigned.encryptionKey
                                             ),
                                 m_certificateSubjectAttributes(
                                                                v_certificate.toBeSigned.appPermissions,
                                                                v_certificate.toBeSigned.validityPeriod,
                                                                v_certificate.toBeSigned.region,
                                                                v_certificate.toBeSigned.assuranceLevel
garciay's avatar
garciay committed
                )),
                cc_taCert_A, 
                valueof(mw_headerInfo_gn(-, f_computeGnTimestamp())), 
                valueof(m_signerIdentifier_digest)
            );
            tc_ac.start;
            alt {
                [] geoNetworkingPort.receive(
                    mw_geoNwInd(
                        mw_geoNwSecPdu(
                            mw_etsiTs103097Data_signed
                ))) {
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: Security protocol version set to 3 ***");
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: Expected message not received ***");
                    f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
                }
            } // End of 'alt' statement
            
            // Postamble
            f_acTriggerEvent(m_stopPassBeaconing);
            f_poNeighbour();
            f_cf01Down();
            
        } // End of testcase TC_SEC_ITSS_SND_MSG_01_BV
    
} // End of module ItsPki_TestCases