Newer
Older
/*
* @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_load_certificates() runs on TCType system TCType {
if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, PX_IUT_SEC_CONFIG_NAME) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
} // End of testcase tc_load_certificates
testcase tc_read_certificate_1() runs on TCType system TCType {
var octetstring v_certificate;
if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, PX_IUT_SEC_CONFIG_NAME) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (fx_readCertificate("CERT_IUT_A_RCA", v_certificate) == false) {
setverdict(fail);
} else {
log("v_certificate: ", v_certificate);
setverdict(pass);
}
} // End of testcase tc_read_certificates_1
testcase tc_read_certificate_2() runs on TCType system TCType {
var octetstring v_certificate;
if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, PX_IUT_SEC_CONFIG_NAME) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (fx_readCertificate("CERT_IUT_A_AA", v_certificate) == false) {
setverdict(fail);
} else {
var bitstring v_oct2bit;
var EtsiTs103097Certificate v_dec_certificate;
log("v_certificate: ", v_certificate);
v_oct2bit := oct2bit(v_certificate);
if (0 == decvalue(v_oct2bit, v_dec_certificate)) {
log("v_certificate: ", v_dec_certificate);
setverdict(pass);
} else {
setverdict(fail);
}
}
} // End of testcase tc_load_certificates_2
testcase tc_read_certificate_digest() runs on TCType system TCType {
if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, PX_IUT_SEC_CONFIG_NAME) == false) {
setverdict(fail);
} else {
var octetstring v_digest;
if (fx_readCertificateDigest("CERT_IUT_A_AA", v_digest) == false) {
setverdict(fail);
} else {
log("v_digest = ", v_digest);
setverdict(pass);
}
}
} // End of testcase tc_load_certificates_digest
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
testcase tc_extract_and_store_certificate_1() runs on TCType system TCType {
var octetstring v := '2B0492F3E1A33B23'O;
var hexstring h;
var charstring c;
c := oct2str(v);
log("c= ", c);
if (str2oct(c) == v) {
setverdict(pass);
} else {
setverdict(fail);
}
h := oct2hex(v);
log("h= ", h);
c := hex2str(h);
log("c= ", c);
if (str2oct(c) == v) {
setverdict(pass);
} else {
setverdict(fail);
}
/*var IEEE1609dot2::Certificate v_cert := { version := 3, type_ := explicit (0), issuer := { sha256AndDigest := '19C3405F47301C64'O }, toBeSigned := { id := { none_ := NULL }, cracaId := '000000'O, crlSeries := 0, validityPeriod := { start_ := 441849600, duration := { hours := 17520 } }, region := omit, assuranceLevel := '60'O ("`"), appPermissions := { { psid := 36, ssp := { bitmapSsp := '01FFFF'O } }, { psid := 37, ssp := { bitmapSsp := '01FFFFFF'O } }, { psid := 141, ssp := { bitmapSsp := '00'O } } }, certIssuePermissions := omit, certRequestPermissions := omit, canRequestRollover := omit, encryptionKey := { supportedSymmAlg := aes128Ccm (0), publicKey := { eciesNistP256 := { compressed_y_1 := 'E5388514801A76870EE89E6DAFA50331865EFF6CCE5E883EC6D9E78DF6B414CC'O } } }, verifyKeyIndicator := { verificationKey := { ecdsaNistP256 := { compressed_y_0 := '6B9119CED38780F4C1931DCDCC3484016A474214C7B1ECB5D3435A5F5F5D4229'O } } } }, signature_ := { ecdsaNistP256Signature := { rSig := { x_only := '1661F3D06C93740D9504024BA01085C52C6ABF8C8E38D095D14916E5598329BB'O }, sSig := '45336AB48FCE674D0ED9E1C718A31F7D1366C4E22AD812A2A91D7663D8EEA354'O } } };
if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, PX_IUT_SEC_CONFIG_NAME) == false) {
setverdict(fail, "Failed to load certificate database");
} else {
setverdict(pass, "Certificate database loaded successfully");
}
*/
} // End of testcase tc_extract_and_store_certificate_1
testcase tc_read_certificate_hash() runs on TCType system TCType {
if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, PX_IUT_SEC_CONFIG_NAME) == false) {
setverdict(fail);
} else {
var octetstring v_hash;
if (fx_readCertificateHash("CERT_IUT_A_AA", v_hash) == false) {
setverdict(fail);
} else {
log("v_hash = ", v_hash);
setverdict(pass);
}
}
} // End of testcase tc_load_certificates_digest
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);
}
testcase tc_sha256_2() runs on TCType system TCType {
var octetstring v_test := ''O;
var Oct32 v_exp_hash := 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'O; /* Hash of empty string */
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 testcase tc_sha256_2
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);
}
testcase tc_sha384_2() runs on TCType system TCType {
var octetstring v_test := ''O;
var Oct48 v_exp_hash := '38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b'O; /* Hash of empty string */
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 testcase tc_sha384_2
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;
var Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
if (f_generate_key_pair_nistp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
testcase tc_f_generate_key_pair_2() runs on TCType system TCType {
var Oct32 v_private_key;
var Oct32 v_publicKeyX;
var Oct32 v_publicKeyY;
var Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
if (f_generate_key_pair_brainpoolp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
testcase tc_f_generate_key_pair_3() runs on TCType system TCType {
var Oct48 v_private_key;
var Oct48 v_publicKeyX;
var Oct48 v_publicKeyY;
var Oct48 v_publicKeyCompressed;
var integer v_compressedMode;
if (f_generate_key_pair_brainpoolp384(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
testcase tc_f_signWithEcdsaNistp256WithSha256_1() runs on TCType system TCType {
var Oct32 v_private_key;
var Oct32 v_publicKeyX;
var Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
var Oct32 v_publicKeyY;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_nistp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
setverdict(pass);
} // End of testcase 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 Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_nistp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyCompressed, v_compressedMode) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (f_verifyWithEcdsaNistp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
} // End of testcase 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_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_private_key_wrong;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_nistp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyCompressed, v_compressedMode) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (f_verifyWithEcdsaNistp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == false) {
setverdict(fail);
stop;
} else {
setverdict(pass);
}
v_private_key_wrong[2] := 'AA'O;
v_private_key_wrong[3] := 'BB'O;
v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key_wrong);
if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyCompressed, v_compressedMode) == true) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaNistp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == true) {
setverdict(fail);
} else {
setverdict(pass);
}
} // End of testcase 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 Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
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_nistp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (f_verifyWithEcdsaNistp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == false) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaNistp256WithSha256_1('0A0A0A0A'O, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == true) {
} else {
setverdict(pass);
}
v_sig_wrong := v_sig;
v_sig_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_sig_wrong, v_publicKeyCompressed, v_compressedMode) == true) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaNistp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig_wrong, v_publicKeyX, v_publicKeyY) == true) {
} else {
setverdict(pass);
v_publicKeyX_wrong := v_publicKeyCompressed;
v_publicKeyX_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaNistp256WithSha256(v_encMsg, int2oct(10, 32), v_sig_wrong, v_publicKeyCompressed, v_compressedMode) == true) {
setverdict(fail);
}
v_publicKeyX_wrong := v_publicKeyX;
v_publicKeyX_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaNistp256WithSha256_1(v_encMsg, int2oct(10, 32), 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_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY_wrong) == true) {
setverdict(fail);
stop;
}
setverdict(pass);
} // End of testcase tc_f_verifyWithEcdsaNistp256WithSha256_3
/**
* @desc Check sign/verify signature on raw data
* @remark To check result, use this Web sites: https://www.javacardos.com/tools/ecdsa-sign-verify, https://kjur.github.io/jsrsasign/sample/sample-ecdsa.html
*/
testcase tc_f_verifyWithEcdsaNistp256WithSha256_4() runs on TCType system TCType {
var Oct32 v_private_key := '69674ea17f88ae0e30b04cddb00abc6bf4e65db757752b1e5fe3f8bdbfb60e79'O;
var Oct32 v_publicKeyCompressed := '8a5037fa359ccb0c3437ab1451cedce10cb13a1f82658c1d985fc994d55df340'O;
var integer v_compressedMode := 0;
var octetstring v_message := '616161'O;
var octetstring v_sig := ''O;
log("v_private_key = ", v_private_key);
log("v_public_key compressed= ", v_publicKeyCompressed, " - ", v_compressedMode);
v_sig := fx_test_signWithEcdsaNistp256WithSha256(v_message, v_private_key);
log("Signature: ", v_sig);
if (fx_test_verifyWithEcdsaNistp256WithSha256(v_message, v_sig, v_publicKeyCompressed, v_compressedMode) == true) {
setverdict(pass, "Signature was verified");
} else {
setverdict(fail, "Signature wasn't verified");
}
} // End of testcase tc_f_verifyWithEcdsaNistp256WithSha256_4
testcase tc_f_signWithEcdsaBrainpoolp256WithSha256_1() runs on TCType system TCType {
var Oct32 v_private_key;
var Oct32 v_publicKeyX;
var Oct32 v_publicKeyY;
var Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_brainpoolp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
setverdict(pass);
} // End of testcase tc_f_signWithEcdsaBrainpoolp256WithSha256_1
testcase tc_f_signWithEcdsaBrainpoolp384WithSha384_1() runs on TCType system TCType {
var Oct48 v_private_key;
var Oct48 v_publicKeyX;
var Oct48 v_publicKeyY;
var Oct48 v_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_brainpoolp384(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
setverdict(pass);
} // End of testcase tc_f_signWithEcdsaBrainpoolp384WithSha384_1
testcase tc_f_verifyWithEcdsaBrainpoolp256WithSha256_1() runs on TCType system TCType {
var Oct32 v_private_key;
var Oct32 v_publicKeyX;
var Oct32 v_publicKeyY;
var Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_brainpoolp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
if (f_verifyWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyCompressed, v_compressedMode) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
} // End of testcase tc_f_verifyWithEcdsaBrainpoolp256WithSha256_1
testcase tc_f_verifyWithEcdsaBrainpoolp256WithSha256_2() runs on TCType system TCType {
var Oct32 v_private_key;
var Oct32 v_publicKeyX;
var Oct32 v_publicKeyY;
var Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_private_key_wrong;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_brainpoolp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
if (f_verifyWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyCompressed, v_compressedMode) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
v_private_key_wrong[2] := 'AA'O;
v_sig := f_signWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key_wrong);
if (f_verifyWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyCompressed, v_compressedMode) == true) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == true) {
setverdict(fail);
} else {
setverdict(pass);
}
} // End of testcase tc_f_verifyWithEcdsaBrainpoolp256WithSha256_2
testcase tc_f_verifyWithEcdsaBrainpoolp256WithSha256_3() runs on TCType system TCType {
var Oct32 v_private_key;
var Oct32 v_publicKeyX;
var Oct32 v_publicKeyY;
var Oct32 v_publicKeyCompressed;
var integer v_compressedMode;
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_brainpoolp256(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp256WithSha256(v_encMsg, int2oct(10, 32), v_private_key);
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == false) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1('0A0A0A0A'O, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY) == true) {
} else {
setverdict(pass);
}
v_sig_wrong := v_sig;
v_sig_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig_wrong, v_publicKeyX, v_publicKeyY) == true) {
} else {
setverdict(pass);
}
v_publicKeyX_wrong := v_publicKeyX;
v_publicKeyX_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX_wrong, v_publicKeyY) == true) {
setverdict(fail);
}
v_publicKeyY_wrong := v_publicKeyY;
v_publicKeyY_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(v_encMsg, int2oct(10, 32), v_sig, v_publicKeyX, v_publicKeyY_wrong) == true) {
setverdict(fail);
}
setverdict(pass);
} // End of testcase tc_f_verifyWithEcdsaBrainpoolp256WithSha256_3
testcase tc_f_verifyWithEcdsaBrainpoolp384WithSha384_1() runs on TCType system TCType {
var Oct48 v_private_key;
var Oct48 v_publicKeyX;
var Oct48 v_publicKeyY;
var Oct48 v_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_brainpoolp384(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
if (f_verifyWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyCompressed, v_compressedMode) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyX, v_publicKeyY) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
} // End of testcase tc_f_verifyWithEcdsaBrainpoolp384WithSha384_1
testcase tc_f_verifyWithEcdsaBrainpoolp384WithSha384_2() runs on TCType system TCType {
var Oct48 v_private_key;
var Oct48 v_publicKeyX;
var Oct48 v_publicKeyY;
var Oct48 v_publicKeyCompressed;
var integer v_compressedMode;
var Oct48 v_private_key_wrong;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
if (f_generate_key_pair_brainpoolp384(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_private_key);
if (lengthof(v_sig) == 0) {
setverdict(fail);
stop;
}
if (f_verifyWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyCompressed, v_compressedMode) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyX, v_publicKeyY) == false) {
setverdict(fail);
} else {
setverdict(pass);
}
v_private_key_wrong[2] := 'AA'O;
v_sig := f_signWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_private_key_wrong);
if (f_verifyWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyCompressed, v_compressedMode) == true) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyX, v_publicKeyY) == true) {
setverdict(fail);
} else {
setverdict(pass);
}
} // End of testcase tc_f_verifyWithEcdsaBrainpoolp384WithSha384_2
testcase tc_f_verifyWithEcdsaBrainpoolp384WithSha384_3() runs on TCType system TCType {
var Oct48 v_private_key;
var Oct48 v_publicKeyX;
var Oct48 v_publicKeyY;
var Oct48 v_publicKeyCompressed;
var integer v_compressedMode;
var octetstring v_encMsg := '0A0A0102030405060708090A0B0C0D0E0F0A0A'O;
var octetstring v_sig := ''O;
var octetstring v_sig_wrong := ''O;
var Oct48 v_publicKeyX_wrong;
var Oct48 v_publicKeyY_wrong;
if (f_generate_key_pair_brainpoolp384(v_private_key, v_publicKeyX, v_publicKeyY, v_publicKeyCompressed, v_compressedMode) == 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);
log("v_public_key compressed= ", v_publicKeyCompressed, v_compressedMode);
v_sig := f_signWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_private_key);
if (f_verifyWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyCompressed, v_compressedMode) == false) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyX, v_publicKeyY) == false) {
} else {
setverdict(pass);
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1('0A0A0A0A'O, int2oct(10, 48), v_sig, v_publicKeyX, v_publicKeyY) == true) {
} else {
setverdict(pass);
}
v_sig_wrong := v_sig;
v_sig_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1(v_encMsg, int2oct(10, 48), v_sig_wrong, v_publicKeyX, v_publicKeyY) == true) {
} else {
setverdict(pass);
v_publicKeyX_wrong := v_publicKeyCompressed;
v_publicKeyX_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaBrainpoolp384WithSha384(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyX_wrong, v_compressedMode) == true) {
} else {
setverdict(pass);
v_publicKeyX_wrong := v_publicKeyX;
v_publicKeyX_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyX_wrong, v_publicKeyY) == true) {
setverdict(fail);
}
v_publicKeyY_wrong := v_publicKeyY;
v_publicKeyY_wrong[0] := 'FF'O;
if (f_verifyWithEcdsaBrainpoolp384WithSha384_1(v_encMsg, int2oct(10, 48), v_sig, v_publicKeyX, v_publicKeyY_wrong) == true) {
setverdict(fail);
}
setverdict(pass);
} // End of testcase tc_f_verifyWithEcdsaBrainpoolp384WithSha384_3
execute(tc_extract_and_store_certificate_1());
execute(tc_sha256_1());
execute(tc_sha384_1());
execute(tc_f_generate_key_pair_1());
execute(tc_f_generate_key_pair_2());
execute(tc_f_generate_key_pair_3());
execute(tc_f_signWithEcdsaNistp256WithSha256_1());
execute(tc_f_verifyWithEcdsaNistp256WithSha256_1());
execute(tc_f_verifyWithEcdsaNistp256WithSha256_2());
execute(tc_f_verifyWithEcdsaNistp256WithSha256_3());
execute(tc_f_signWithEcdsaBrainpoolp256WithSha256_1());
execute(tc_f_signWithEcdsaBrainpoolp384WithSha384_1());
execute(tc_f_verifyWithEcdsaBrainpoolp256WithSha256_1());
execute(tc_f_verifyWithEcdsaBrainpoolp256WithSha256_2());
execute(tc_f_verifyWithEcdsaBrainpoolp256WithSha256_3());
execute(tc_f_verifyWithEcdsaBrainpoolp384WithSha384_1());
execute(tc_f_verifyWithEcdsaBrainpoolp384WithSha384_2());
execute(tc_f_verifyWithEcdsaBrainpoolp384WithSha384_3());