Commit d42e40e7 authored by YannGarcia's avatar YannGarcia
Browse files

Start validation of AtsPki; Add missing AcSecurity primitive implementation in Facilities

parent 132ed07c
Loading
Loading
Loading
Loading
+16 −16
Original line number Diff line number Diff line
@@ -5209,7 +5209,7 @@ module ItsPki_TestCases {
     * @reference ETSI TS 103 097 [2], clause 6
     *            IEEE Std 1609.2 [3], clause 6.4.3
     */
    testcase TC_SECPKI_CA_CERTGEN_01_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_01_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -5281,7 +5281,7 @@ module ItsPki_TestCases {
     * @reference ETSI TS 103 097 [2], clause 6
     *            IEEE Std 1609.2 [3], clause 6.4.3
     */
    testcase TC_SECPKI_CA_CERTGEN_02_BV_01() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_02_BV_01() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -5353,7 +5353,7 @@ module ItsPki_TestCases {
       * @reference ETSI TS 103 097 [2], clause 6
       *            IEEE Std 1609.2 [3], clause 6.4.3
       */
    testcase TC_SECPKI_CA_CERTGEN_02_BV_02() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_02_BV_02() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6117,7 +6117,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_10_BV
     * @reference IEEE Std 1609.2 [3], clause 6.3.29, 6.3.30, 6.3.31
     */
    testcase TC_SECPKI_CA_CERTGEN_10_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_10_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6185,7 +6185,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_11_BV
     * @reference IEEE Std 1609.2 [3], clause 6.3.38
     */
    testcase TC_SECPKI_CA_CERTGEN_11_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_11_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6254,7 +6254,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_12_BV
     * @reference IEEE Std 1609.2 [3], clause 6.3.38
     */
    testcase TC_SECPKI_CA_CERTGEN_12_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_12_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6331,7 +6331,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_13_BV_01
     * @reference ETSI TS 103 097 [1], clause 6
     */
    testcase TC_SECPKI_CA_CERTGEN_13_BV_01() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_13_BV_01() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6408,7 +6408,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_13_BV_02
     * @reference ETSI TS 103 097 [1], clause 6
     */
    testcase TC_SECPKI_CA_CERTGEN_13_BV_02() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_13_BV_02() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6477,7 +6477,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_14_BV
     * @reference ETSI TS 103 097 [1], clauses 6.4.28, 5.1.2.4
     */
    testcase TC_SECPKI_CA_CERTGEN_14_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_14_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6563,7 +6563,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_15_BV
     * @reference ETSI TS 103 097 [1], clauses 6.4.28, 5.1.2.4
     */
    testcase TC_SECPKI_CA_CERTGEN_15_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_15_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6640,7 +6640,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_16_BV
     * @reference ETSI TS 103 097 [1], clauses 6.4.28, 5.1.2.4
     */
    testcase TC_SECPKI_CA_CERTGEN_16_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_16_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6730,7 +6730,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_17_BV
     * @reference ETSI TS 103 097 [1], clauses 6.4.28, 5.1.2.4
     */
    testcase TC_SECPKI_CA_CERTGEN_17_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_17_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -6811,7 +6811,7 @@ module ItsPki_TestCases {
     * @see       ETSI TS 103 525-2 v1.1.4 SECPKI_CA_CERTGEN_18_BV
     * @reference ETSI TS 103 097 [1], clauses 6.4.28, 5.1.2.4
     */
    testcase TC_SECPKI_CA_CERTGEN_18_BV() runs on ItsMtc system ItsPkiHttpSystem {
    testcase TC_SECPKI_CA_CERTGEN_18_BV() runs on ItsPkiHttp system ItsPkiHttpSystem {
      // Local variables
      var integer v_result;
      var Certificate v_root_certificate;
@@ -10699,9 +10699,9 @@ module ItsPki_TestCases {
      
    } // End of group authorization_validation_response
    
    group ca_ceetificate_request {
    group ca_certificate_request {
      // TODO
    } // End of group ca_ceetificate_request
    } // End of group ca_certificate_request
    
  } // End of group ea_behavior
@@ -13551,7 +13551,7 @@ module ItsPki_TestCases {
                                                                                                                                                                                                  mw_toBeSignedData(
                                                                                                                                                                                                                    mw_signedDataPayload
                                                                                                                                                                                                                    ),
                                                                                                                                                                                                  mw_signerIdentifier_digest
                                                                                                                                                                                                  ?
                                                                                                                                                                                                  ))))))) -> value v_response {
            var ToBeSignedRcaCtl v_to_be_signed_rca_ctl;
+5 −5
Original line number Diff line number Diff line
@@ -184,12 +184,12 @@ module LibItsPki_Pics {
  /**
   * @desc Factory private key for verification Nist P256
   */
  modulepar octetstring PICS_ITS_S_SIGN_NITSP256_PRIVATE_KEY := '5C25F97607DFC62972A147FAD8B7A7C939569F0F95ECD4C641724A68B51836E5'O;
  modulepar octetstring PICS_ITS_S_SIGN_NITSP256_PRIVATE_KEY := 'FE95786F01D7E1666CCDFAB7BAEE9BF9B30BBEA15A838A58994E65E684A8BB34'O;
  
  /**
   * @desc Factory compressed public key for verification Nist P256
   */
  modulepar octetstring PICS_ITS_S_SIGN_NISTP256_PUBLIC_KEY := '020144E5174B0AFDA86BDB8B643B68D40030F5BDB9A9F090C64852CC3C20C9D5AD'O;
  modulepar octetstring PICS_ITS_S_SIGN_NISTP256_PUBLIC_KEY := '038038f5490cd5a58ff5465d3b577ee830047336ac5dac07036b798aaecae7273f'O;
  
  /**
   * @desc Factory private key for encryption Nist P256
@@ -247,12 +247,12 @@ module LibItsPki_Pics {
  modulepar octetstring PICS_INVALID_ITS_S_CANONICAL_ID := '455453492D4954532D30303145454545'O;
  
  /**
   * @desc Set to true if the IUT support CertificateId shall be set to the choice name
   * @desc Set to true if the IUT support CertificateId shall be set to the choice name, false if it shall be omitted
   * @see ETSI TS 103 097 Clause 7.2.2 Enrolment credential 
   */
  modulepar boolean PICS_EC_SUBJECT_ATTRIBUT_ID := false;
  modulepar boolean PICS_EC_SUBJECT_ATTRIBUT_ID := true;

  modulepar boolean PICS_SEC_IMPLICIT_CERTIFICATES := false;
  modulepar boolean PICS_SEC_IMPLICIT_CERTIFICATES := true;

  modulepar boolean PICS_SEC_EXPLICIT_CERTIFICATES := true;

Compare 39a50de3 to 70b74d38
Original line number Diff line number Diff line
Subproject commit 39a50de38ac029c554bb832609d1a3f128279bc4
Subproject commit 70b74d3806cd2b26ef294763e4610807b4e1d591
+57 −20
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ module LibItsPki_Functions {
  import from LibItsHttp_BinaryTemplates all;
  import from LibItsHttp_Functions all;
  import from LibItsHttp_TestSystem all;
  import from LibItsHttp_Pics all;
  
  // LibItsPki
  import from LibItsPki_TypesAndValues all;
@@ -3305,13 +3306,24 @@ module LibItsPki_Functions {
      // 1. Verify signature
      log("f_verify_rca_ctl_response_message: p_etsi_ts_103097_signed_data.content.signedData.tbsData= ", p_etsi_ts_103097_signed_data.content.signedData.tbsData);
      v_tbs := encvalue(p_etsi_ts_103097_signed_data.content.signedData.tbsData);
      if (ispresent(p_etsi_ts_103097_signed_data.content.signedData.signer.digest)) {
        if (f_getCertificateFromDigest(p_etsi_ts_103097_signed_data.content.signedData.signer.digest, v_certificate, v_certificate_id) == false) {
          log("f_verify_rca_ctl_response_message: Failed to retrieve certificate from ", p_etsi_ts_103097_signed_data.content.signedData.signer.digest);
          if (p_check_security == true) {
            return false;
          }
        }
        log("===========================", v_certificate);
        f_getCertificateHash(v_certificate_id, v_issuer);
      } else {
        v_certificate := p_etsi_ts_103097_signed_data.content.signedData.signer.certificate[0];
        log("+++++++++++++++++++++++++++", v_certificate);
        if (ispresent(v_certificate.issuer.sha256AndDigest)) {
          v_issuer := v_certificate.issuer.sha256AndDigest;
        } else {
          v_issuer := v_certificate.issuer.sha384AndDigest;
        }
      }
      if (f_verifyEcdsa(bit2oct(v_tbs), v_issuer, p_etsi_ts_103097_signed_data.content.signedData.signature_, v_certificate.toBeSigned.verifyKeyIndicator.verificationKey) == false) {
        log("f_verify_rca_ctl_response_message: Failed to verify signature");
        if (p_check_security == true) {
@@ -3552,34 +3564,59 @@ module LibItsPki_Functions {
     * @param p_certificate The root certificate
     * @return 0 on success, -1 otherwise
     */
    external function fx_get_root_ca_certificate(
                                                 in charstring p_iut_certificate := "CERT_IUT_A_RCA",//"CERT_IUT_A_CA",
                                                 in boolean p_explicit_type := false,
                                                 out octetstring p_certificate
                                                 ) return integer;

    function f_get_root_ca_certificate(
                                       in charstring p_iut_certificate := "CERT_IUT_A_CA",
                                       in boolean p_explicit_type := false,
                                       out Certificate p_certificate
                                       ) return integer {
                                       ) runs on ItsPkiHttp return integer {
      var Headers v_headers;
      var HttpMessage v_response;
      var octetstring v_os;
      var bitstring v_msg_bit;

      log(">>> f_get_root_ca_certificate");

      // Get root certificate
      if (fx_get_root_ca_certificate(p_iut_certificate, p_explicit_type, v_os) != 0) {
        log("f_get_root_ca_certificate: fail to get certificate");
        return -1;
      f_cfHttpUp_ca();
      f_init_default_headers_list(PICS_HEADER_CTL_CONTENT_TYPE, "ca_request", v_headers);
      // Test Body
      f_http_send(
                  v_headers,
                  m_http_request(
                                  m_http_request_get(
                                                    PICS_HTTP_GET_URI_CA,
                                                    v_headers
                                                    )));
      tc_ac.start;
      alt {
        [not(PICS_MULTIPLE_END_POINT)] httpPort.receive(
                                                        mw_http_response(
                                                                          mw_http_response_ok(
                                                                                              mw_http_message_body_binary(
                                                                                                                          mw_binary_body_ieee1609dot2_certificate
                                                                                                                          )))) -> value v_response {
          tc_ac.stop;
        }
      log("f_get_root_ca_certificate: v_os=", v_os);
      // Decode it
      v_msg_bit := oct2bit(v_os);
      if (decvalue(v_msg_bit, p_certificate) != 0) {
        log("f_get_root_ca_certificate: fail to decode certificate");
        [PICS_MULTIPLE_END_POINT] httpCaPort.receive(
                                                      mw_http_response(
                                                                      mw_http_response_ok(
                                                                                          mw_http_message_body_binary(
                                                                                                                      mw_binary_body_ieee1609dot2_certificate
                                                                                                                      )))) -> value v_response {
          tc_ac.stop;
        }
        [] tc_ac.timeout {
        }
      } // End of 'alt' statement
      f_cfHttpDown_ca();

      if (not(isvalue(v_response))) {
        log("f_get_root_ca_certificate: fail to get certificate");
        return -1;
      }
      log("v_response.response.body.binary_body.ieee1609dot2_certificate: ", v_response.response.body.binary_body.ieee1609dot2_certificate);
      p_certificate := v_response.response.body.binary_body.ieee1609dot2_certificate;

      log("<<< f_get_root_ca_certificate: ", p_certificate);
      return 0;
    }
+1 −0
Original line number Diff line number Diff line
@@ -40,5 +40,6 @@ modules := lib \
            /ccsrc/Protocols/Http \
            /ccsrc/Protocols/Security \
            /ccsrc/Protocols/Pki \
            /ccsrc/Protocols/Tcp \
            ../modules/titan.TestPorts.Common_Components.Abstract_Socket \