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
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -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
    
+1 −1
Original line number Diff line number Diff line
@@ -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;
+6 −6
Original line number Diff line number Diff line
@@ -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(
+17 −40
Original line number Diff line number Diff line
@@ -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.");
    
    }
  } // 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.");
    
    }
  } // 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");