test_LibItsSecurity_TypesAndValues.ttcn3 126 KB
Newer Older
                if (v_res != 0) {
                    setverdict(fail, "Decoding failed.");
                    stop;
                }
                log("Test_AT5: ", v_atCertificate);
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("Test_AT5: v_hashedId8", v_hashedId8);
                v_result := f_verifyCertificateSignatureWithIssuingCertificate(
                    v_atCertificate,
                    v_5388dec640c6e19e_AA
                );
                if (v_result == true) {
                    setverdict(pass, "Test_AT5: Certificate verification match");
                } else {
                    setverdict(fail, "Test_AT5: Certificate verification mismatch");
                }
                
                // _Test_AT6
                v_res := decvalue(oct2bit(c_Test_AT6), vc_atCertificate);
                if (v_res != 0) {
                    setverdict(fail, "Decoding failed.");
                    stop;
                }
                log("Test_AT6: ", v_atCertificate);
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("Test_AT6: v_hashedId8", v_hashedId8);
                v_result := f_verifyCertificateSignatureWithIssuingCertificate(
                    v_atCertificate,
                    v_5388dec640c6e19e_AA
                );
                if (v_result == true) {
                    setverdict(pass, "Test_AT6: Certificate verification match");
                } else {
                    setverdict(fail, "Test_AT6: Certificate verification mismatch");
                    stop;
                }
                
                // _Test_AT7
                v_res := decvalue(oct2bit(c_Test_AT7), vc_atCertificate);
                if (v_res != 0) {
                    setverdict(fail, "Decoding failed.");
                    stop;
                }
                log("Test_AT7: ", v_atCertificate);
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("Test_AT7: v_hashedId8", v_hashedId8);
                v_result := f_verifyCertificateSignatureWithIssuingCertificate(
                    v_atCertificate,
                    v_5388dec640c6e19e_AA
                );
                if (v_result == true) {
                    setverdict(pass, "Test_AT7: Certificate verification match");
                } else {
                    setverdict(fail, "Test_AT7: Certificate verification mismatch");
                    stop;
                }
                
                // _Test_AT8
                v_res := decvalue(oct2bit(c_Test_AT8), vc_atCertificate);
                if (v_res != 0) {
                    setverdict(fail, "Decoding failed.");
                    stop;
                }
                log("Test_AT8: ", v_atCertificate);
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("Test_AT8: v_hashedId8", v_hashedId8);
                v_result := f_verifyCertificateSignatureWithIssuingCertificate(
                    v_atCertificate,
                    v_5388dec640c6e19e_AA
                );
                if (v_result == true) {
                    setverdict(pass, "Test_AT8: Certificate verification match");
                } else {
                    setverdict(fail, "Test_AT8: Certificate verification mismatch");
                    stop;
                }
                
                // _Test_AT9
                v_res := decvalue(oct2bit(c_Test_AT9), vc_atCertificate);
                if (v_res != 0) {
                    setverdict(fail, "Decoding failed.");
                    stop;
                }
                log("Test_AT9: ", v_atCertificate);
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("Test_AT9: v_hashedId8", v_hashedId8);
                v_result := f_verifyCertificateSignatureWithIssuingCertificate(
                    v_atCertificate,
                    v_5388dec640c6e19e_AA
                );
                if (v_result == true) {
                    setverdict(pass, "Test_AT9: Certificate verification match");
                } else {
                    setverdict(fail, "Test_AT9: Certificate verification mismatch");
                    stop;
                }
                
                setverdict(pass, "All Digests match.");
            } // End of testcase tc_Certificate_V2X_Pilot_PKI_CodhaNxp
            
        } // End of group certificates
        
        group profileCertificates {
            
            /**
             * @desc Verify AT certificate signature
             */
            testcase tc_profileCertificates_01() runs on TCType system TCType {
                f_loadCertificates(PX_IUT_SEC_CONFIG_NAME);
                log (vc_aaCertificate);
                log (vc_atCertificate);
                
                v_result := f_verifyCertificateSignatureWithIssuingCertificate(
                    vc_atCertificate,
                    vc_aaCertificate
                );
                
                if (v_result == true) {
                    setverdict(pass, "Certificate verification match");
                } else {
                    setverdict(fail, "Certificate verification mismatch");
            } // End of testcase tc_profileCertificates_01
            /**
             * @desc IUT certificates details
             */
            testcase tc_profileCertificates_02() runs on TCType system TCType {
                var Certificate  v_aaCertificate;
                var Certificate  v_atCertificate;
                var SignerInfo   v_si;
                var HashedId8    v_hashedId8;
                var boolean      v_result;
                
                f_loadCertificates(PX_IUT_SEC_CONFIG_NAME);
                
                if(f_readCertificate(cc_iutCert_A, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_iutCert_A=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_iutCert_A digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_iutCert_A.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_B, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_iutCert_B=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_iutCert_B digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_iutCert_B.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_C, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_iutCert_C=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_iutCert_C digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_iutCert_C.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_D, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_iutCert_D=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_iutCert_D digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_iutCert_D.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_E, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_iutCert_E=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_iutCert_E digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_iutCert_E.v_hashedId8=", v_hashedId8);
                
                setverdict(pass);
                
            } // End of testcase tc_profileCertificates_02
            
            /**
             * @desc TS certificates details
             */
            testcase tc_profileCertificates_03() runs on TCType system TCType {
                var Certificate  v_aaCertificate;
                var Certificate  v_atCertificate;
                var SignerInfo   v_si;
                var charstring   v_certId;
                var HashedId8    v_hashedId8;
                var boolean      v_result;
                
                f_loadCertificates(PX_IUT_SEC_CONFIG_NAME);
                
                if(f_readCertificate(cc_iutCert_A, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_taCert_A=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_taCert_A digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_taCert_A.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_B, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_taCert_B=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_taCert_B digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_taCert_B.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_C, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_taCert_C=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_taCert_C digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_taCert_C.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_D, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_taCert_D=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_taCert_D digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_taCert_D.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_iutCert_E, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("cc_taCert_E=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_taCert_E digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_taCert_E.v_hashedId8=", v_hashedId8);
                
                if(f_readCertificate(cc_taCert_EC, v_atCertificate)){
                    f_readCertificate(oct2str(v_atCertificate.signer_info.signerInfo.digest), v_aaCertificate);
                }
                log("CERT_TS_A_EC=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log("cc_taCert_EC digest=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log("cc_taCert_EC.v_hashedId8=", v_hashedId8);
                
                v_certId := "CERT_TS_01_01_BO_AT";
                f_readCertificate(v_certId, v_atCertificate);
                log(v_certId & "=", v_atCertificate);
                f_getCertificateSignerInfo(v_atCertificate, v_si);
                log(v_certId & "=", v_si.signerInfo.digest, " / ", f_calculateDigestFromCertificate(v_aaCertificate));
                v_hashedId8 := f_calculateDigestFromCertificate(v_atCertificate);
                log(v_certId & ".v_hashedId8=", v_hashedId8);
                
                setverdict(pass);
                
            } // End of testcase tc_profileCertificates_03
            
            /**
             * @desc Verify AT certificate signature
             */
            testcase tc_profileCertificates_04() runs on TCType system TCType {
                var boolean v_result;
                                
                v_result := f_verifyWithEcdsaNistp256WithSha256(
                    '0280BA800202015388DEC640C6E19E0100520000045A995005A9944930BD758D4B1BAF754E12B70081F438D3AB740C2B93E887665F31CA714E2F589297D3E8E7F09302B9414FAC85A67CF37D3903FF732E4F6B18AA02E0210B24030100002504010000000B0115043983154CBC02030000002424F87A06F258A90C0B3A095E3D64176CD630C2C5E0266ACCDC0C9E6CFD91D236B8B79029B50F668CDEC5715A482F0FEEF2765567F68A657DAB092CCA9FF5BF0000014120C45084F305240155205002800031010014002E090A008F3835724C640000000000000000FFFFFFFF0000000007D100000102000000024C644056B49D200D693A401FFFFFFC2230D41E40000FDFFF7E0276EA8733A9D74FFFD0841400004301'O,
                    '000005B37667C87C0129C8CB5789652E9296E817D17A59DBBE56793D0940F3330C68294714DBE7E4A53EBA2DC53490D58F1A8B057A7EDA675C6DD9C403B2797DC580'O,
                    '5A995005A9944930BD758D4B1BAF754E12B70081F438D3AB740C2B93E887665F'O,
                    '31CA714E2F589297D3E8E7F09302B9414FAC85A67CF37D3903FF732E4F6B18AA'O
                );
                
                if (v_result == true) {
                    setverdict(pass, "Certificate verification match");
                } else {
                    setverdict(fail, "Certificate verification mismatch");
                    stop;
                }
                
            } // End of testcase tc_profileCertificates_04
            
            /**
             * @desc Verify AT certificate signature
             */
            testcase tc_profileCertificates_05() runs on TCType system TCType {
                var boolean v_result;
                
                
                v_result := f_verifyWithEcdsaNistp256WithSha256(
                    '0280BE800202015388DEC640C6E19E01004D000004847C5479B98FAAD120BBC337673DC27B44A44DAF376F4E786976A3BE74B1D7407DD1DDA838CCCA21D3FA9EF65CDAA40E39DC565EC30EF889329E2B8FF5BBB080026021062401002501000B0114B12B03154E0D8303000000A435553144A806302B48C84F0AF873992FBA7C9309E4B8255DA0BA76307A50808A9D975FC146A3B1262E56C2153DAEAAF8A171B036B7382E1041D07BFD6BB753000001415B49C0726803000004D20000162E002F01200010800000000100BC21A4FEDECABEEF0001E240000012F8000002A3803726944301000290E6711F880CD216CD405052B7C8C1577E1C6E4EED1CD7F2939E584B40A111459E230D2494B6A5B992BB61975D3D9C2D42314E84A3057EFFD965E7A7D44CE605'O,
                    '000090E6711F880CD216CD405052B7C8C1577E1C6E4EED1CD7F2939E584B40A111459E230D2494B6A5B992BB61975D3D9C2D42314E84A3057EFFD965E7A7D44CE605'O,
                    '847C5479B98FAAD120BBC337673DC27B44A44DAF376F4E786976A3BE74B1D740'O,
                    '7DD1DDA838CCCA21D3FA9EF65CDAA40E39DC565EC30EF889329E2B8FF5BBB080'O
                );
                
                if (v_result == true) {
                    setverdict(pass, "Certificate verification match");
                } else {
                    setverdict(fail, "Certificate verification mismatch");
                    stop;
                }
                
            } // End of testcase tc_profileCertificates_05
            
        } // End of group profileCertificates
        
    } // End of group test_LibItsSecurity_TypesAndValues 
    
} // End of module test_LibItsSecurity_TypesAndValues