Commit 0eda4008 authored by garciay's avatar garciay
Browse files

Bug fixed in certificate generation test suite

Add support of v3 certificate loader
parent c31d5f7b
......@@ -171,7 +171,7 @@ module ItsGenCert_Functions {
// Sign the certificate using ECDSA/SHA-256 (NIST p-256)
if (p_certificate_params.curve == e_nist_p256) {
if (p_issuer_certificate_details.certificate_id != p_certificate_details.certificate_id) { // This is not a CA certificate
v_issuer := f_hashWithSha256(p_issuer_certificate_details.enc_cert);
v_issuer := p_issuer_certificate_details.enc_cert;
} else {
v_issuer := int2oct(0, 32);
}
......@@ -191,7 +191,7 @@ module ItsGenCert_Functions {
));
} else if (p_certificate_params.curve == e_brainpool_p256) {
if (p_issuer_certificate_details.issuer != p_issuer_certificate_details.hashid8) { // This is not a CA certificate
v_issuer := f_hashWithSha256(p_issuer_certificate_details.enc_cert);
v_issuer := p_issuer_certificate_details.enc_cert;
} else {
v_issuer := int2oct(0, 32);
}
......@@ -211,7 +211,7 @@ module ItsGenCert_Functions {
));
} else if (p_certificate_params.curve == e_brainpool_p384) {
if (p_issuer_certificate_details.issuer != p_issuer_certificate_details.hashid8) { // This is not a CA certificate
v_issuer := f_hashWithSha384(p_issuer_certificate_details.enc_cert);
v_issuer := p_issuer_certificate_details.enc_cert;
} else {
v_issuer := int2oct(0, 48);
}
......@@ -302,7 +302,9 @@ module ItsGenCert_Functions {
p_certificate_details_list[v_counter].issuer,
p_certificate_details_list[v_counter].private_enc_key,
p_certificate_details_list[v_counter].public_enc_key_x,
p_certificate_details_list[v_counter].public_enc_key_y);
p_certificate_details_list[v_counter].public_enc_key_y,
p_certificate_details_list[v_counter].public_enc_key_compressed,
p_certificate_details_list[v_counter].public_enc_key_compressed_mode);
} else {
fx_store_certificate(
p_certificate_details_list[v_counter].certificate_id,
......@@ -314,9 +316,11 @@ module ItsGenCert_Functions {
p_certificate_details_list[v_counter].public_key_compressed_mode,
p_certificate_details_list[v_counter].hashid8,
p_certificate_details_list[v_counter].issuer,
''O,
''O,
''O);
omit,
omit,
omit,
omit,
omit);
}
} // End of 'for' statement
......
......@@ -105,7 +105,7 @@ module ItsPki_TestCases {
)),
cc_taCert_A,
valueof(mw_headerInfo_gn(-, f_computeGnTimestamp())),
valueof(m_headerInfo_gn(-, f_computeGnTimestamp())),
valueof(m_signerIdentifier_digest)
);
tc_ac.start;
......
......@@ -141,9 +141,9 @@ module TestCodec_ChainOfCertificates {
// Store Private key in binary format
fx_loadCertificates("/home/vagrant/tmp/Yann", "");
fx_store_certificate("CERT_TEST_A_ROOT", v_chain_sec_info.ca.enc_cert, v_chain_sec_info.ca.private_key, v_chain_sec_info.ca.public_key_x, v_chain_sec_info.ca.public_key_y, v_chain_sec_info.ca.public_key_compressed, v_chain_sec_info.ca.compressed_mode, v_chain_sec_info.ca.hashedid8, v_chain_sec_info.ca.issuer, omit, omit, omit);
fx_store_certificate("CERT_TS_A_AA", v_chain_sec_info.aa.enc_cert, v_chain_sec_info.aa.private_key, v_chain_sec_info.aa.public_key_x, v_chain_sec_info.aa.public_key_y, v_chain_sec_info.aa.public_key_compressed, v_chain_sec_info.aa.compressed_mode, v_chain_sec_info.aa.hashedid8, v_chain_sec_info.aa.issuer, omit, omit, omit);
fx_store_certificate("CERT_TS_A_AT", v_chain_sec_info.at.enc_cert, v_chain_sec_info.at.private_key, v_chain_sec_info.at.public_key_x, v_chain_sec_info.at.public_key_y, v_chain_sec_info.at.public_key_compressed, v_chain_sec_info.at.compressed_mode, v_chain_sec_info.at.hashedid8, v_chain_sec_info.at.issuer, omit, omit, omit);
fx_store_certificate("CERT_TEST_A_ROOT", v_chain_sec_info.ca.enc_cert, v_chain_sec_info.ca.private_key, v_chain_sec_info.ca.public_key_x, v_chain_sec_info.ca.public_key_y, v_chain_sec_info.ca.public_key_compressed, v_chain_sec_info.ca.compressed_mode, v_chain_sec_info.ca.hashedid8, v_chain_sec_info.ca.issuer, omit, omit, omit, omit, omit);
fx_store_certificate("CERT_TS_A_AA", v_chain_sec_info.aa.enc_cert, v_chain_sec_info.aa.private_key, v_chain_sec_info.aa.public_key_x, v_chain_sec_info.aa.public_key_y, v_chain_sec_info.aa.public_key_compressed, v_chain_sec_info.aa.compressed_mode, v_chain_sec_info.aa.hashedid8, v_chain_sec_info.aa.issuer, omit, omit, omit, omit, omit);
fx_store_certificate("CERT_TS_A_AT", v_chain_sec_info.at.enc_cert, v_chain_sec_info.at.private_key, v_chain_sec_info.at.public_key_x, v_chain_sec_info.at.public_key_y, v_chain_sec_info.at.public_key_compressed, v_chain_sec_info.at.compressed_mode, v_chain_sec_info.at.hashedid8, v_chain_sec_info.at.issuer, omit, omit, omit, omit, omit);
// Create a basic GeoNetworking message
v_gnNonSecuredPacket := m_geoNwShbPacket(
......@@ -288,9 +288,9 @@ module TestCodec_ChainOfCertificates {
// Store Private key in binary format
fx_loadCertificates("/home/vagrant/tmp/Yann", "");
fx_store_certificate("CERT_TEST_B_ROOT", v_chain_sec_info.ca.enc_cert, v_chain_sec_info.ca.private_key, v_chain_sec_info.ca.public_key_x, v_chain_sec_info.ca.public_key_y, v_chain_sec_info.ca.public_key_compressed, v_chain_sec_info.ca.compressed_mode, v_chain_sec_info.ca.hashedid8, v_chain_sec_info.ca.issuer, omit, omit, omit);
fx_store_certificate("CERT_TS_B_AA", v_chain_sec_info.aa.enc_cert, v_chain_sec_info.aa.private_key, v_chain_sec_info.aa.public_key_x, v_chain_sec_info.aa.public_key_y, v_chain_sec_info.aa.public_key_compressed, v_chain_sec_info.aa.compressed_mode, v_chain_sec_info.aa.hashedid8, v_chain_sec_info.aa.issuer, omit, omit, omit);
fx_store_certificate("CERT_TS_B_AT", v_chain_sec_info.at.enc_cert, v_chain_sec_info.at.private_key, v_chain_sec_info.at.public_key_x, v_chain_sec_info.at.public_key_y, v_chain_sec_info.at.public_key_compressed, v_chain_sec_info.at.compressed_mode, v_chain_sec_info.at.hashedid8, v_chain_sec_info.at.issuer, omit, omit, omit);
fx_store_certificate("CERT_TEST_B_ROOT", v_chain_sec_info.ca.enc_cert, v_chain_sec_info.ca.private_key, v_chain_sec_info.ca.public_key_x, v_chain_sec_info.ca.public_key_y, v_chain_sec_info.ca.public_key_compressed, v_chain_sec_info.ca.compressed_mode, v_chain_sec_info.ca.hashedid8, v_chain_sec_info.ca.issuer, omit, omit, omit, omit, omit);
fx_store_certificate("CERT_TS_B_AA", v_chain_sec_info.aa.enc_cert, v_chain_sec_info.aa.private_key, v_chain_sec_info.aa.public_key_x, v_chain_sec_info.aa.public_key_y, v_chain_sec_info.aa.public_key_compressed, v_chain_sec_info.aa.compressed_mode, v_chain_sec_info.aa.hashedid8, v_chain_sec_info.aa.issuer, omit, omit, omit, omit, omit);
fx_store_certificate("CERT_TS_B_AT", v_chain_sec_info.at.enc_cert, v_chain_sec_info.at.private_key, v_chain_sec_info.at.public_key_x, v_chain_sec_info.at.public_key_y, v_chain_sec_info.at.public_key_compressed, v_chain_sec_info.at.compressed_mode, v_chain_sec_info.at.hashedid8, v_chain_sec_info.at.issuer, omit, omit, omit, omit, omit);
// Create a basic GeoNetworking message
v_gnNonSecuredPacket := m_geoNwShbPacket(
......
......@@ -275,10 +275,10 @@ module TestCodec_SignedAndEncryptedMessages {
var template (value) EtsiTs103097Data v_signed_data;
var EtsiTs103097Data v_signed_data_dec;
var octetstring v_raw_payload_to_be_signed := 'CAFFEDECA0000001'O;
var octetstring v_decrypted_data;
var HashedId8 v_digest := '0000000000000000'O;
var template (value) EtsiTs103097Data v_encrypted_data;
var EtsiTs103097Data v_decrypted_data;
var bitstring v_encMsg;
var Oct32 v_obuPrivateKey, v_obuPublicKeyX, v_obuPublicKeyY;
var Oct32 v_obuPublicKeyCompressed;
......@@ -355,28 +355,16 @@ module TestCodec_SignedAndEncryptedMessages {
)
);
log("v_encrypted_data = ", v_encrypted_data);
v_decrypted_data := f_decryptWithEciesNistp256WithSha256(
valueof(v_encrypted_data.content.encryptedData.ciphertext.aes128ccm.ccmCiphertext), // The encrypted message
v_tsPrivateKey,
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesNistP256.v.uncompressedP256.x), // The public ephemeral key X-coordinate
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesNistP256.v.uncompressedP256.y), // The public ephemeral key Y-coordinate
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesNistP256.c), // The encrypted symmetric key
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesNistP256.t), // The encrypted symmetric key tag
valueof(v_encrypted_data.content.encryptedData.ciphertext.aes128ccm.nonce) // The AES 128 nonce
);
v_encMsg := oct2bit(v_decrypted_data);
if (decvalue(v_encMsg, v_signed_data_dec) != 0) {
setverdict(fail, "decvalue failed");
stop;
if (f_decrypt(v_tsPrivateKey, valueof(v_encrypted_data), v_decrypted_data) == false) {
setverdict(fail, "f_decrypt failed");
} else {
log("v_decrypted_data = ", v_signed_data_dec);
if (not(match(valueof(v_signed_data), v_signed_data_dec))) {
log("v_decrypted_data = ", v_decrypted_data);
if (not(match(valueof(v_signed_data), v_decrypted_data))) {
setverdict(fail, "Encode/decode mismatch");
stop;
}
setverdict(pass, "Full encryption/decryption passed.");
}
setverdict(pass, "Full encryption/decryption passed.");
} // End of testcase tc_decrypted_signed_message_1
/**
......@@ -500,10 +488,10 @@ module TestCodec_SignedAndEncryptedMessages {
var template (value) EtsiTs103097Data v_signed_data;
var EtsiTs103097Data v_signed_data_dec;
var octetstring v_raw_payload_to_be_signed := 'CAFFEDECA0000001'O;
var octetstring v_decrypted_data;
var HashedId8 v_digest := '0000000000000000'O;
var template (value) EtsiTs103097Data v_encrypted_data;
var EtsiTs103097Data v_decrypted_data;
var bitstring v_encMsg;
var Oct32 v_obuPrivateKey, v_obuPublicKeyX, v_obuPublicKeyY;
var Oct32 v_obuPublicKeyCompressed;
......@@ -580,28 +568,16 @@ module TestCodec_SignedAndEncryptedMessages {
)
);
log("v_encrypted_data = ", v_encrypted_data);
v_decrypted_data := f_decryptWithEciesBrainpoolp256WithSha256(
valueof(v_encrypted_data.content.encryptedData.ciphertext.aes128ccm.ccmCiphertext), // The encrypted message
v_tsPrivateKey,
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesBrainpoolP256r1.v.uncompressedP256.x), // The public ephemeral key X-coordinate
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesBrainpoolP256r1.v.uncompressedP256.y), // The public ephemeral key Y-coordinate
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesBrainpoolP256r1.c), // The encrypted symmetric key
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesBrainpoolP256r1.t), // The encrypted symmetric key tag
valueof(v_encrypted_data.content.encryptedData.ciphertext.aes128ccm.nonce) // The AES 128 nonce
);
v_encMsg := oct2bit(v_decrypted_data);
if (decvalue(v_encMsg, v_signed_data_dec) != 0) {
setverdict(fail, "decvalue failed");
stop;
if (f_decrypt(v_tsPrivateKey, valueof(v_encrypted_data), v_decrypted_data) == false) {
setverdict(fail, "f_decrypt failed");
} else {
log("v_decrypted_data = ", v_signed_data_dec);
if (not(match(valueof(v_signed_data), v_signed_data_dec))) {
log("v_decrypted_data = ", v_decrypted_data);
if (not(match(valueof(v_signed_data), v_decrypted_data))) {
setverdict(fail, "Encode/decode mismatch");
stop;
}
setverdict(pass, "Full encryption/decryption passed.");
}
setverdict(pass, "Full encryption/decryption passed.");
} // End of testcase tc_decrypted_signed_message_3
/**
......@@ -697,7 +673,8 @@ module TestCodec_SignedAndEncryptedMessages {
)
);
log("v_encrypted_data = ", v_encrypted_data);
v_decrypted_data := f_decryptWithEciesBrainpoolp256WithSha256(
v_decrypted_data := ''O;
/* FIXME v_decrypted_data := f_decryptWithEciesBrainpoolp256WithSha256(
valueof(v_encrypted_data.content.encryptedData.ciphertext.aes128ccm.ccmCiphertext), // The encrypted message
v_obuPrivateKey,
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesBrainpoolP256r1.v.uncompressedP256.x), // The public ephemeral key X-coordinate
......@@ -705,7 +682,7 @@ module TestCodec_SignedAndEncryptedMessages {
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesBrainpoolP256r1.c), // The encrypted symmetric key
valueof(v_encrypted_data.content.encryptedData.recipients[0].signedDataRecipInfo.encKey.eciesBrainpoolP256r1.t), // The encrypted symmetric key tag
valueof(v_encrypted_data.content.encryptedData.ciphertext.aes128ccm.nonce) // The AES 128 nonce
);
);*/
v_encMsg := oct2bit(v_decrypted_data);
if (decvalue(v_encMsg, v_signed_data_dec) != 0) {
setverdict(fail, "decvalue failed");
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment