Loading ttcn/AtsGenCert/ItsGenCert_Functions.ttcn 0 → 100644 +67 −0 Original line number Diff line number Diff line 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 ttcn/AtsGenCert/ItsGenCert_Pics.ttcn 0 → 100644 +47 −0 Original line number Diff line number Diff line /** * @author ETSI / STF481 / STF507 / STF517 / STF538 * @version $URL$ * $Id$ * @desc Module containing Pics for Security ATS * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * */ module ItsGenCert_Pics { // 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_TypesAndValues all; import from ItsGenCert_TypeAndValues all; modulepar certificate_params_list PICS_CERTFICATES := { { "CERT_IUT_A_RCA", // certificate_id omit, // current_position { start_ := c_2018_01_01_gmt_paris, duration := c_six_months }, // validity_period omit, // app_permissions omit, // issuing_permissions sha256, // hash_algorithm e_nist_p256, // curve "CERT_IUT_A_RCA" // signed_by }, { "CERT_IUT_A_AA", // certificate_id omit, // current_position { start_ := c_2018_01_01_gmt_paris, duration := c_six_months }, // validity_period omit, // app_permissions omit, // issuing_permissions sha256, // hash_algorithm e_nist_p256, // curve "CERT_IUT_A_RCA" // signed_by } // { cc_iutCert_B, sha256, '0000000000000000'O, '0000000000000000'O, { circularRegion := { center := {0, 0}, radius := 1000 } } } // CERT_IUT_B_AT } } // End of module ItsGenCert_Pics ttcn/AtsGenCert/ItsGenCert_Templates.ttcn 0 → 100644 +38 −0 Original line number Diff line number Diff line module ItsGenCert_Templates { // 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_Pics all; template (omit) ToBeSignedCertificate m_toBeSignedCertificate( in template (value) CertificateId p_id, in template (value) VerificationKeyIndicator p_verifyKeyIndicator, in template (value) ValidityPeriod p_validityPeriod, in template (omit) GeographicRegion p_region := omit, in template (omit) SequenceOfPsidSsp p_appPermissions := omit, in template (omit) SubjectAssurance p_assuranceLevel := omit, in template (omit) PublicEncryptionKey p_encryptionKey := omit ) := { id := p_id, cracaId := '000000'O, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 2 crlSeries := 0, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 3 validityPeriod := p_validityPeriod, region := p_region, assuranceLevel := p_assuranceLevel, appPermissions := p_appPermissions, certIssuePermissions := omit, certRequestPermissions := omit, canRequestRollover := omit, encryptionKey := p_encryptionKey, verifyKeyIndicator := p_verifyKeyIndicator } // End of template m_toBeSignedCertificate_aa } // End of module ItsGenCert_Templates ttcn/AtsGenCert/ItsGenCert_TestSystem.ttcn 0 → 100644 +8 −0 Original line number Diff line number Diff line module ItsGenCert_TestSystem { // LibItsSecurity import from LibItsSecurity_TestSystem all; type component TCType extends ItsSecurityBaseComponent { } } // End of module ItsGenCert_TestSystem ttcn/AtsGenCert/ItsGenCert_TypeAndValues.ttcn 0 → 100644 +57 −0 Original line number Diff line number Diff line module ItsGenCert_TypeAndValues { // 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; const Time64 c_its_epoch := 1072911600000; /** * @desc Start date/time in milliseconds * @remark See https://www/epochconverter.com/ */ const Time32 c_2018_01_01_gmt_paris := 1514764800; const Time32 c_2020_01_01_gmt_paris := 1577836800; const Time32 c_2010_01_01_gmt_paris := 1262304000; /** * @desc Six months duration */ const Duration c_six_months := { hours := 6 * 30 * 24 }; /** * @desc One year duration */ const Duration c_one_year := { years := 1 }; /** * @desc This record contains, for each certificate, the parameters to generate it */ type record certificate_params { charstring certificate_id, GeographicRegion region optional, ValidityPeriod validity_period, SequenceOfPsidSsp app_permissions optional, SequenceOfPsidSspRange issuing_permissions optional, HashAlgorithm hash_algorithm, Curve curve, charstring signed_by } // End of type certificate_params type record of certificate_params certificate_params_list; type enumerated Curve { e_nist_p256, e_brainpool_p256, e_brainpool_p384 } // End of type Curve type record certificate_details { EtsiTs103097Certificate certificate, octetstring enc_cert, octetstring private_key, octetstring public_key_x, octetstring public_key_y, HashedId8 hashid8, HashedId8 issuer } // End of type certificate_details } // End of module ItsGenCert_TypeAndValues Loading
ttcn/AtsGenCert/ItsGenCert_Functions.ttcn 0 → 100644 +67 −0 Original line number Diff line number Diff line 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
ttcn/AtsGenCert/ItsGenCert_Pics.ttcn 0 → 100644 +47 −0 Original line number Diff line number Diff line /** * @author ETSI / STF481 / STF507 / STF517 / STF538 * @version $URL$ * $Id$ * @desc Module containing Pics for Security ATS * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * */ module ItsGenCert_Pics { // 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_TypesAndValues all; import from ItsGenCert_TypeAndValues all; modulepar certificate_params_list PICS_CERTFICATES := { { "CERT_IUT_A_RCA", // certificate_id omit, // current_position { start_ := c_2018_01_01_gmt_paris, duration := c_six_months }, // validity_period omit, // app_permissions omit, // issuing_permissions sha256, // hash_algorithm e_nist_p256, // curve "CERT_IUT_A_RCA" // signed_by }, { "CERT_IUT_A_AA", // certificate_id omit, // current_position { start_ := c_2018_01_01_gmt_paris, duration := c_six_months }, // validity_period omit, // app_permissions omit, // issuing_permissions sha256, // hash_algorithm e_nist_p256, // curve "CERT_IUT_A_RCA" // signed_by } // { cc_iutCert_B, sha256, '0000000000000000'O, '0000000000000000'O, { circularRegion := { center := {0, 0}, radius := 1000 } } } // CERT_IUT_B_AT } } // End of module ItsGenCert_Pics
ttcn/AtsGenCert/ItsGenCert_Templates.ttcn 0 → 100644 +38 −0 Original line number Diff line number Diff line module ItsGenCert_Templates { // 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_Pics all; template (omit) ToBeSignedCertificate m_toBeSignedCertificate( in template (value) CertificateId p_id, in template (value) VerificationKeyIndicator p_verifyKeyIndicator, in template (value) ValidityPeriod p_validityPeriod, in template (omit) GeographicRegion p_region := omit, in template (omit) SequenceOfPsidSsp p_appPermissions := omit, in template (omit) SubjectAssurance p_assuranceLevel := omit, in template (omit) PublicEncryptionKey p_encryptionKey := omit ) := { id := p_id, cracaId := '000000'O, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 2 crlSeries := 0, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 3 validityPeriod := p_validityPeriod, region := p_region, assuranceLevel := p_assuranceLevel, appPermissions := p_appPermissions, certIssuePermissions := omit, certRequestPermissions := omit, canRequestRollover := omit, encryptionKey := p_encryptionKey, verifyKeyIndicator := p_verifyKeyIndicator } // End of template m_toBeSignedCertificate_aa } // End of module ItsGenCert_Templates
ttcn/AtsGenCert/ItsGenCert_TestSystem.ttcn 0 → 100644 +8 −0 Original line number Diff line number Diff line module ItsGenCert_TestSystem { // LibItsSecurity import from LibItsSecurity_TestSystem all; type component TCType extends ItsSecurityBaseComponent { } } // End of module ItsGenCert_TestSystem
ttcn/AtsGenCert/ItsGenCert_TypeAndValues.ttcn 0 → 100644 +57 −0 Original line number Diff line number Diff line module ItsGenCert_TypeAndValues { // 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; const Time64 c_its_epoch := 1072911600000; /** * @desc Start date/time in milliseconds * @remark See https://www/epochconverter.com/ */ const Time32 c_2018_01_01_gmt_paris := 1514764800; const Time32 c_2020_01_01_gmt_paris := 1577836800; const Time32 c_2010_01_01_gmt_paris := 1262304000; /** * @desc Six months duration */ const Duration c_six_months := { hours := 6 * 30 * 24 }; /** * @desc One year duration */ const Duration c_one_year := { years := 1 }; /** * @desc This record contains, for each certificate, the parameters to generate it */ type record certificate_params { charstring certificate_id, GeographicRegion region optional, ValidityPeriod validity_period, SequenceOfPsidSsp app_permissions optional, SequenceOfPsidSspRange issuing_permissions optional, HashAlgorithm hash_algorithm, Curve curve, charstring signed_by } // End of type certificate_params type record of certificate_params certificate_params_list; type enumerated Curve { e_nist_p256, e_brainpool_p256, e_brainpool_p384 } // End of type Curve type record certificate_details { EtsiTs103097Certificate certificate, octetstring enc_cert, octetstring private_key, octetstring public_key_x, octetstring public_key_y, HashedId8 hashid8, HashedId8 issuer } // End of type certificate_details } // End of module ItsGenCert_TypeAndValues