ItsGenCert_Functions.ttcn 3.32 KB
Newer Older
module ItsGenCert_Functions {
    
    // 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_Templates all;
    
    // AtsGenCert
    import from ItsGenCert_TypeAndValues all;
    import from ItsGenCert_Templates all;
    import from ItsGenCert_Pics all;
    
    function f_fill_certificate(
                                in certificate_params p_certificate_params,
                                inout certificate_details p_certificate_details
    ) return integer {
        p_certificate_details.certificate := valueof(
                                                 m_etsiTs103097Certificate(
                                                     m_issuerIdentifier_self(p_certificate_params.hash_algorithm),
                                                     m_toBeSignedCertificate(
                                                         { name := p_certificate_params.certificate_id },
                                                         m_verificationKeyIndicator_verificationKey(
                                                             m_publicVerificationKey_ecdsaNistP256(
                                                                 m_eccP256CurvePoint_uncompressed(
                                                                     p_certificate_details.public_key_x,
                                                                     p_certificate_details.public_key_y
                                                         ))),
                                                         p_certificate_params.validity_period,
                                                         p_certificate_params.region,
                                                         p_certificate_params.app_permissions
                                                 )));
        if (not(ispresent(p_certificate_params.issuing_permissions))) { // all required
            p_certificate_details.certificate.toBeSigned.certIssuePermissions := { valueof(m_psidGroupPermissions(m_subjectPermissions_all)) };
        } else {
            // TODO
        }
        
        log("p_certificate_details.certificate = ", p_certificate_details.certificate);
        
        return 0;
    } // End of function f_fill_certificate
    
    function f_finalyse_certificate(
                                    in certificate_params p_certificate_params,
                                    inout certificate_details p_certificate_details
    ) return integer {
        return -1;
    } // End of function f_finalyse_certificate
    
    function f_get_certificate_params(
                                      in charstring p_certificate_id,
                                      out certificate_params p_certificate_params
    ) return integer {
        for (var integer v_counter := 0; v_counter < lengthof(PICS_CERTFICATES); v_counter := v_counter + 1) {
          if (PICS_CERTFICATES[v_counter].certificate_id == p_certificate_id) {
            p_certificate_params := PICS_CERTFICATES[v_counter];
            return 0;
          }
        } // End of 'for' statement

      return -1;
    } // End of function f_get_certificate_params

} // End of module ItsGenCert_Functions