/* * @author * * @version * 1.0 * @desc * * @remark * * @see * */ module TestCodec_SecuredFuntions { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from IEEE1609dot2BaseTypes language "ASN.1:1997" all; import from IEEE1609dot2 language "ASN.1:1997" all; import from EtsiTs103097Module language "ASN.1:1997" all; // LibItsSecurity import from LibItsSecurity_EncdecDeclarations all; import from LibItsSecurity_TypesAndValues all; import from LibItsSecurity_Templates all; import from LibItsSecurity_Functions all; import from LibItsSecurity_Pixits all; // TestCodec import from TestCodec_TestAndSystem all; testcase tc_sha256_1() runs on TCType system TCType { var octetstring v_test := '616263'O; var Oct32 v_exp_hash := 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'O; var Oct32 v_hash; v_hash := f_hashWithSha256(v_test); if (match(v_hash, v_exp_hash) == false) { setverdict(fail); } else { setverdict(pass); } } // End of test tc_sha256_1 testcase tc_sha384_1() runs on TCType system TCType { var octetstring v_test := '616263'O; var Oct48 v_exp_hash := 'CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED1631A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7'O; var Oct48 v_hash; v_hash := f_hashWithSha384(v_test); if (match(v_hash, v_exp_hash) == false) { setverdict(fail); } else { setverdict(pass); } } // End of test tc_sha384_1 testcase tc_f_generate_key_pair_1() runs on TCType system TCType { var Oct32 v_private_key; var Oct32 v_publicKeyX; var Oct32 v_publicKeyY; if (f_generate_key_pair(v_private_key, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } log("v_private_key = ", v_private_key); log("v_public_key X= ", v_publicKeyX); log("v_public_key Y= ", v_publicKeyY); setverdict(pass); } // End of test tc_f_generate_key_pair_1 testcase tc_f_signWithEcdsaNistp256WithSha256_1() runs on TCType system TCType { var Oct32 v_private_key; var Oct32 v_publicKeyX; var Oct32 v_publicKeyY; var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O; var octetstring v_sig := ''O; if (f_generate_key_pair(v_private_key, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } log("v_private_key = ", v_private_key); log("v_public_key X= ", v_publicKeyX); log("v_public_key Y= ", v_publicKeyY); v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, v_private_key); if (lengthof(v_sig) == 0) { setverdict(fail); stop; } setverdict(pass); } // End of test tc_f_signWithEcdsaNistp256WithSha256_1 testcase tc_f_verifyWithEcdsaNistp256WithSha256_1() runs on TCType system TCType { var Oct32 v_private_key; var Oct32 v_publicKeyX; var Oct32 v_publicKeyY; var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O; var octetstring v_sig := ''O; if (f_generate_key_pair(v_private_key, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } log("v_private_key = ", v_private_key); log("v_public_key X= ", v_publicKeyX); log("v_public_key Y= ", v_publicKeyY); v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, v_private_key); if (lengthof(v_sig) == 0) { setverdict(fail); stop; } if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, v_sig, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } else { setverdict(pass); } } // End of test tc_f_verifyWithEcdsaNistp256WithSha256_1 testcase tc_f_verifyWithEcdsaNistp256WithSha256_2() runs on TCType system TCType { var Oct32 v_private_key; var Oct32 v_publicKeyX; var Oct32 v_publicKeyY; var Oct32 v_private_key_wrong; var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O; var octetstring v_sig := ''O; if (f_generate_key_pair(v_private_key, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } log("v_private_key = ", v_private_key); log("v_public_key X= ", v_publicKeyX); log("v_public_key Y= ", v_publicKeyY); v_private_key_wrong := v_private_key; v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, v_private_key); if (lengthof(v_sig) == 0) { setverdict(fail); stop; } if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, v_sig, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } else { setverdict(pass); } v_private_key_wrong[2] := 'AA'O; v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, v_private_key_wrong); if (lengthof(v_sig) == 0) { setverdict(fail); stop; } if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, v_sig, v_publicKeyX, v_publicKeyY) == true) { setverdict(fail); stop; } else { setverdict(pass); } } // End of test tc_f_verifyWithEcdsaNistp256WithSha256_2 testcase tc_f_verifyWithEcdsaNistp256WithSha256_3() runs on TCType system TCType { var Oct32 v_private_key; var Oct32 v_publicKeyX; var Oct32 v_publicKeyY; var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O; var octetstring v_sig := ''O; var octetstring v_sig_wrong := ''O; var Oct32 v_publicKeyX_wrong; var Oct32 v_publicKeyY_wrong; if (f_generate_key_pair(v_private_key, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } log("v_private_key = ", v_private_key); log("v_public_key X= ", v_publicKeyX); log("v_public_key Y= ", v_publicKeyY); v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, v_private_key); if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, v_sig, v_publicKeyX, v_publicKeyY) == false) { setverdict(fail); stop; } if (f_verifyWithEcdsaNistp256WithSha256('0A0A0A0A'O, v_sig, v_publicKeyX, v_publicKeyY) == true) { setverdict(fail); stop; } v_sig_wrong := v_sig; v_sig_wrong[0] := 'FF'O; if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, v_sig_wrong, v_publicKeyX, v_publicKeyY) == true) { setverdict(fail); stop; } v_publicKeyX_wrong := v_publicKeyX; v_publicKeyX_wrong[0] := 'FF'O; if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, v_sig, v_publicKeyX_wrong, v_publicKeyY) == true) { setverdict(fail); stop; } v_publicKeyY_wrong := v_publicKeyY; v_publicKeyY_wrong[0] := 'FF'O; if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, v_sig, v_publicKeyX, v_publicKeyY_wrong) == true) { setverdict(fail); stop; } setverdict(pass); } // End of test tc_f_verifyWithEcdsaNistp256WithSha256_3 } // End of module TestCodec_SecuredFuntions