Loading ttcn/IVIM/LibItsIvim_Functions.ttcn +0 −16 Original line number Original line Diff line number Diff line Loading @@ -36,22 +36,6 @@ module LibItsIvim_Functions { import from LibItsIvim_Pics all; import from LibItsIvim_Pics all; import from LibItsIvim_Pixits all; import from LibItsIvim_Pixits all; group itsFunction { /** * @desc Gets the Provifr of test system * @return Test system's Provider value * @see PX_PROVIDER */ function f_getProvider() return Provider { return PX_PROVIDER; } // End of function f_getProvider } // End of group itsFunction group utFuntions { group utFuntions { /** /** Loading ttcn/IVIM/LibItsIvim_Templates.ttcn +17 −1 Original line number Original line Diff line number Diff line Loading @@ -31,7 +31,7 @@ module LibItsIvim_Templates { // LibItsIvim // LibItsIvim import from LibItsIvim_TestSystem all; import from LibItsIvim_TestSystem all; import from LibItsIvim_TypesAndValues all; import from LibItsIvim_TypesAndValues all; import from LibItsIvim_Functions all; import from LibItsIvim_Pixits all; import from LibItsIvim_ASN1_IVInamedNumbers all; import from LibItsIvim_ASN1_IVInamedNumbers all; group asn1Constants { group asn1Constants { Loading Loading @@ -597,4 +597,20 @@ module LibItsIvim_Templates { } // End of group roadConfigurationContainerGroup } // End of group roadConfigurationContainerGroup group itsFunction { /** * @desc Gets the Provifr of test system * @return Test system's Provider value * @see PX_PROVIDER */ function f_getProvider() return Provider { return PX_PROVIDER; } // End of function f_getProvider } // End of group itsFunction } // End of module LibItsIvimTemplates } // End of module LibItsIvimTemplates ttcn/Pki/LibItsPki_Functions.ttcn +12 −1 Original line number Original line Diff line number Diff line Loading @@ -3809,6 +3809,10 @@ module LibItsPki_Functions { // TODO Check that requested information are present // TODO Check that requested information are present if (f_verifySspPermissions(p_ec_certificate.toBeSigned.appPermissions, p_ea_certificate.toBeSigned.appPermissions) == false) { log("f_verify_ec_certificate: Ssp permissions not verified"); return false; } return true; return true; } // End of function f_verify_ec_certificate } // End of function f_verify_ec_certificate Loading Loading @@ -3848,6 +3852,13 @@ module LibItsPki_Functions { return false; return false; } } // TODO Check that requested information are present if (f_verifySspPermissions(p_aa_certificate.toBeSigned.appPermissions, p_at_certificate.toBeSigned.appPermissions) == false) { log("f_verify_ec_certificate: Ssp permissions not verified"); return false; } return true; return true; } // End of function f_verify_at_certificate } // End of function f_verify_at_certificate Loading ttcn/Security/LibItsSecurity_Functions.ttcn +60 −0 Original line number Original line Diff line number Diff line Loading @@ -2009,6 +2009,66 @@ module LibItsSecurity_Functions { } // End of group deviceSignatureHelpers } // End of group deviceSignatureHelpers group sspPermissions { function f_verifySspPermissions( in SequenceOfPsidSsp p_issuer_ssp_permissions, in SequenceOfPsidSsp p_subordinate_ssp_permissions ) return boolean { // Local variables var integer v_idx := 0; for (v_idx := 0; v_idx < lengthof(p_issuer_ssp_permissions); v_idx := v_idx + 1) { var PsidSsp v_issuerPsidSsp := p_issuer_ssp_permissions[v_idx]; var PsidSsp v_subordinatePsidSsp; var boolean v_found := false; var integer v_jdx := 0; // 1. Check permission from issuer is present for (v_jdx := 0; v_jdx < lengthof(p_subordinate_ssp_permissions); v_jdx := v_jdx + 1) { if (match(v_issuerPsidSsp, m_appPermissions(p_subordinate_ssp_permissions[v_jdx].psid, p_subordinate_ssp_permissions[v_jdx].ssp)) == true) { v_subordinatePsidSsp := p_subordinate_ssp_permissions[v_jdx]; v_found := true; break; } } // End of 'for' statement if (v_found == false) { log("f_verifySspPermissions: Permission set not found: ", v_issuerPsidSsp) return false; } // 2. Validate bits mask if (ispresent(v_issuerPsidSsp.ssp)) { if (ispresent(v_subordinatePsidSsp.ssp) == false) { log("f_verifySspPermissions: Ssp shall not be omitted: ", v_issuerPsidSsp) return false; } if ((ischosen(v_issuerPsidSsp.ssp.bitmapSsp) == false) or (ischosen(v_subordinatePsidSsp.ssp.bitmapSsp) == false)) { log("f_verifySspPermissions: Wrong variant : ", v_issuerPsidSsp.ssp, " / ", v_subordinatePsidSsp.ssp); return false; } if (lengthof(v_issuerPsidSsp.ssp.bitmapSsp) < lengthof(v_subordinatePsidSsp.ssp.bitmapSsp)) { log("f_verifySspPermissions: Ssp not be compliant: ", v_issuerPsidSsp.ssp, " / ", v_subordinatePsidSsp.ssp); return false; } else { var charstring v_issuerSsp := bit2str(oct2bit(v_issuerPsidSsp.ssp.bitmapSsp)); var charstring v_subordinateSsp := bit2str(oct2bit(v_subordinatePsidSsp.ssp.bitmapSsp)); for (var integer i := 0; i < lengthof(v_issuerSsp); i := i + 1) { if (v_issuerSsp[i] == "1") { // TODO How to check Permission using SspBitmask/SspValue if (v_subordinateSsp[i] != "1") { log("f_verifySspPermissions: Ssp bitmask mismatch at index: ", i); return false; } } // else, no restriction, subordinate certificate can have any value. } // End of 'for' statement } } } // End of 'for' statement return true; } // End of function f_verifySspPermissions } // End of group sspPermissions group messageGetters { group messageGetters { /** /** Loading ttcn/Pki/LibItsPki_Pics.ttcn +1 −1 File changed.Contains only whitespace changes. Show changes Loading
ttcn/IVIM/LibItsIvim_Functions.ttcn +0 −16 Original line number Original line Diff line number Diff line Loading @@ -36,22 +36,6 @@ module LibItsIvim_Functions { import from LibItsIvim_Pics all; import from LibItsIvim_Pics all; import from LibItsIvim_Pixits all; import from LibItsIvim_Pixits all; group itsFunction { /** * @desc Gets the Provifr of test system * @return Test system's Provider value * @see PX_PROVIDER */ function f_getProvider() return Provider { return PX_PROVIDER; } // End of function f_getProvider } // End of group itsFunction group utFuntions { group utFuntions { /** /** Loading
ttcn/IVIM/LibItsIvim_Templates.ttcn +17 −1 Original line number Original line Diff line number Diff line Loading @@ -31,7 +31,7 @@ module LibItsIvim_Templates { // LibItsIvim // LibItsIvim import from LibItsIvim_TestSystem all; import from LibItsIvim_TestSystem all; import from LibItsIvim_TypesAndValues all; import from LibItsIvim_TypesAndValues all; import from LibItsIvim_Functions all; import from LibItsIvim_Pixits all; import from LibItsIvim_ASN1_IVInamedNumbers all; import from LibItsIvim_ASN1_IVInamedNumbers all; group asn1Constants { group asn1Constants { Loading Loading @@ -597,4 +597,20 @@ module LibItsIvim_Templates { } // End of group roadConfigurationContainerGroup } // End of group roadConfigurationContainerGroup group itsFunction { /** * @desc Gets the Provifr of test system * @return Test system's Provider value * @see PX_PROVIDER */ function f_getProvider() return Provider { return PX_PROVIDER; } // End of function f_getProvider } // End of group itsFunction } // End of module LibItsIvimTemplates } // End of module LibItsIvimTemplates
ttcn/Pki/LibItsPki_Functions.ttcn +12 −1 Original line number Original line Diff line number Diff line Loading @@ -3809,6 +3809,10 @@ module LibItsPki_Functions { // TODO Check that requested information are present // TODO Check that requested information are present if (f_verifySspPermissions(p_ec_certificate.toBeSigned.appPermissions, p_ea_certificate.toBeSigned.appPermissions) == false) { log("f_verify_ec_certificate: Ssp permissions not verified"); return false; } return true; return true; } // End of function f_verify_ec_certificate } // End of function f_verify_ec_certificate Loading Loading @@ -3848,6 +3852,13 @@ module LibItsPki_Functions { return false; return false; } } // TODO Check that requested information are present if (f_verifySspPermissions(p_aa_certificate.toBeSigned.appPermissions, p_at_certificate.toBeSigned.appPermissions) == false) { log("f_verify_ec_certificate: Ssp permissions not verified"); return false; } return true; return true; } // End of function f_verify_at_certificate } // End of function f_verify_at_certificate Loading
ttcn/Security/LibItsSecurity_Functions.ttcn +60 −0 Original line number Original line Diff line number Diff line Loading @@ -2009,6 +2009,66 @@ module LibItsSecurity_Functions { } // End of group deviceSignatureHelpers } // End of group deviceSignatureHelpers group sspPermissions { function f_verifySspPermissions( in SequenceOfPsidSsp p_issuer_ssp_permissions, in SequenceOfPsidSsp p_subordinate_ssp_permissions ) return boolean { // Local variables var integer v_idx := 0; for (v_idx := 0; v_idx < lengthof(p_issuer_ssp_permissions); v_idx := v_idx + 1) { var PsidSsp v_issuerPsidSsp := p_issuer_ssp_permissions[v_idx]; var PsidSsp v_subordinatePsidSsp; var boolean v_found := false; var integer v_jdx := 0; // 1. Check permission from issuer is present for (v_jdx := 0; v_jdx < lengthof(p_subordinate_ssp_permissions); v_jdx := v_jdx + 1) { if (match(v_issuerPsidSsp, m_appPermissions(p_subordinate_ssp_permissions[v_jdx].psid, p_subordinate_ssp_permissions[v_jdx].ssp)) == true) { v_subordinatePsidSsp := p_subordinate_ssp_permissions[v_jdx]; v_found := true; break; } } // End of 'for' statement if (v_found == false) { log("f_verifySspPermissions: Permission set not found: ", v_issuerPsidSsp) return false; } // 2. Validate bits mask if (ispresent(v_issuerPsidSsp.ssp)) { if (ispresent(v_subordinatePsidSsp.ssp) == false) { log("f_verifySspPermissions: Ssp shall not be omitted: ", v_issuerPsidSsp) return false; } if ((ischosen(v_issuerPsidSsp.ssp.bitmapSsp) == false) or (ischosen(v_subordinatePsidSsp.ssp.bitmapSsp) == false)) { log("f_verifySspPermissions: Wrong variant : ", v_issuerPsidSsp.ssp, " / ", v_subordinatePsidSsp.ssp); return false; } if (lengthof(v_issuerPsidSsp.ssp.bitmapSsp) < lengthof(v_subordinatePsidSsp.ssp.bitmapSsp)) { log("f_verifySspPermissions: Ssp not be compliant: ", v_issuerPsidSsp.ssp, " / ", v_subordinatePsidSsp.ssp); return false; } else { var charstring v_issuerSsp := bit2str(oct2bit(v_issuerPsidSsp.ssp.bitmapSsp)); var charstring v_subordinateSsp := bit2str(oct2bit(v_subordinatePsidSsp.ssp.bitmapSsp)); for (var integer i := 0; i < lengthof(v_issuerSsp); i := i + 1) { if (v_issuerSsp[i] == "1") { // TODO How to check Permission using SspBitmask/SspValue if (v_subordinateSsp[i] != "1") { log("f_verifySspPermissions: Ssp bitmask mismatch at index: ", i); return false; } } // else, no restriction, subordinate certificate can have any value. } // End of 'for' statement } } } // End of 'for' statement return true; } // End of function f_verifySspPermissions } // End of group sspPermissions group messageGetters { group messageGetters { /** /** Loading