Commit a11288b6 authored by garciay's avatar garciay
Browse files

STF538: Start Certificate generation script

parent 7e670cc1
Loading
Loading
Loading
Loading
+170 −149
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ module ItsGenCert_Functions {
                                   in certificate_params p_certificate_params,
                                   inout certificate_details p_certificate_details
                                   ) return integer {
        
    if (p_certificate_params.curve == e_nist_p256) {
      f_generate_key_pair_nistp256(p_certificate_details.private_key, p_certificate_details.public_key_x, p_certificate_details.public_key_y);
    } else if (p_certificate_params.curve == e_brainpool_p256) {
@@ -129,13 +128,12 @@ module ItsGenCert_Functions {
                                  inout certificate_details p_certificate_details
                                  ) return integer {
    // Set the issuer
        if (p_certificate_params.certificate_id == p_certificate_params.signed_by) { // Root certificate
             // Nothing to do, isuuer is already set to self
        } else { // Other certificate
    if (p_certificate_params.certificate_id != p_certificate_params.signed_by) { 
      // Find the issuer in the list
            var integer v_counter;
            for (v_counter := 0; v_counter < lengthof(p_certificate_details_list); v_counter := v_counter + 1) {
      var boolean v_found := false;
      for (var integer v_counter := 0; v_counter < lengthof(p_certificate_details_list); v_counter := v_counter + 1) {
        if (p_certificate_details_list[v_counter].certificate_id == p_certificate_params.signed_by) {
          v_found := true;
          p_certificate_details.issuer := p_certificate_details_list[v_counter].hashid8;
          if (p_certificate_params.hash_algorithm == sha256) {
            p_certificate_details.certificate.issuer.sha256AndDigest := p_certificate_details_list[v_counter].hashid8;
@@ -145,9 +143,10 @@ module ItsGenCert_Functions {
            log("f_finalyse_certificate: Unsupported hash algorithm");
            return -1;
          }
          break;
        }
      } // End of 'for' statement
            if (v_counter == lengthof(p_certificate_details_list)) {
      if (v_found == false) {
        log("f_finalyse_certificate: issuer not found");
        return -1;
      }
@@ -160,10 +159,32 @@ module ItsGenCert_Functions {
    } else {
      p_certificate_details.hashid8 := f_HashedId8FromSha384(f_hashWithSha384(p_certificate_details.enc_cert));
    }
    if (p_certificate_params.certificate_id == p_certificate_params.signed_by) { // Root certificate
      log("f_finalyse_certificate: Root certificate");
      p_certificate_details.issuer := p_certificate_details.hashid8
      }
        
    log("f_finalyse_certificate: p_certificate_details = ", p_certificate_details);
        
    return 0;
  } // End of function f_finalyse_certificate
    
  function f_store_certificates(
                                in certificate_details_list p_certificate_details_list
                                ) return integer {
    fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, "certificates");
    for (var integer v_counter := 0; v_counter < lengthof(p_certificate_details_list); v_counter := v_counter + 1) {
      fx_store_certificate(
                           p_certificate_details_list[v_counter].certificate_id,
                           p_certificate_details_list[v_counter].enc_cert,
                           p_certificate_details_list[v_counter].private_key,
                           p_certificate_details_list[v_counter].public_key_x,
                           p_certificate_details_list[v_counter].public_key_y,
                           p_certificate_details_list[v_counter].hashid8,
                           p_certificate_details_list[v_counter].issuer);
    } // End of 'for' statement
    
    return 0;
  } // End of function f_store_certificates
  
} // End of module ItsGenCert_Functions 
+97 −71
Original line number Diff line number Diff line
@@ -27,19 +27,20 @@ module ItsGencert_TestCases {
  import from ItsGenCert_TestSystem all;
  import from ItsGenCert_Pics all;
  
    testcase TC_GEN_CERT_BV() runs on TCType system TCType {
  testcase TC_GEN_CERT() runs on TCType system TCType {
    var certificate_details_list v_certificate_details_list;
    var integer v_idx := 0;
  
    for (var integer v_counter := 0; v_counter < lengthof(PICS_CERTFICATES); v_counter := v_counter + 1) {
            var certificate_details v_details := {};
      var certificate_details v_details;
      var template (value) EtsiTs103097Certificate v_certificate;
            var certificate_params v_certificate_params := PICS_CERTFICATES[v_counter];
      var certificate_params v_certificate_params;
      
      // Setup
      v_certificate_params := PICS_CERTFICATES[v_counter];
      v_details := { "", {}, ''O, ''O, ''O, ''O, '0000000000000000'O, '0000000000000000'O };
      v_certificate_details_list[v_idx] := v_details;
      v_details.certificate_id := v_certificate_params.certificate_id;
            log("v_certificate_details_list[", v_idx, "] = ", v_certificate_details_list[v_idx]);
      
      // Generate Private/Public keys for the certificate
      if (f_generate_signing_keys(v_certificate_params, v_details) == -1) {
@@ -58,21 +59,46 @@ module ItsGencert_TestCases {
        setverdict(fail, "Failed to generate the certificate");
        stop;
      }
            v_certificate_details_list[v_idx] := v_details;
      
      // Fianlyse certificate
      if (f_finalyse_certificate(v_certificate_params, v_certificate_details_list, v_details) == -1) {
        setverdict(fail, "Failed to finalyse the certificate");
        stop;
      }
      
            log("v_certificate_details_list[", v_idx, "] = ", v_certificate_details_list[v_idx]);
      v_idx := v_idx + 1;
    } // End of 'for' statement
    
    log("v_certificate_details_list = ", v_certificate_details_list);
    
    // Store them
    if (f_store_certificates(v_certificate_details_list) == -1) {
      setverdict(fail, "Failed to finalyse the certificate");
      stop;
    } else {
      setverdict(pass);
    }
    
  } // End of testcase TC_GEN_CERT
  
  testcase TC_VALIDATE_CERT() runs on TCType system TCType {

    for (var integer v_counter := 0; v_counter < lengthof(PICS_CERTFICATES); v_counter := v_counter + 1) {
      var EtsiTs103097Certificate v_certificate;

      fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, "certificates");
      if (f_readCertificate(PICS_CERTFICATES[v_counter].certificate_id, v_certificate) == false) {
        setverdict(fail, "Failed to read certificate ", PICS_CERTFICATES[v_counter].certificate_id);
        stop;
      }
    } // End of 'for' statement

    setverdict(pass);
    } // End of testcase TC_GEN_CERT_BV
  } // End of testcase TC_VALIDATE_CERT
  
  control {
      execute(TC_GEN_CERT_BV());
    execute(TC_GEN_CERT(), 1.0);
    execute(TC_VALIDATE_CERT(), 1.0);
  } // End of 'control' statement
  
} // End of module ItsGencert_TestCases
+29 −29

File changed.

Contains only whitespace changes.

+31 −31

File changed.

Contains only whitespace changes.