Loading lib/LibItsSecurity_Pics.ttcn +91 −84 Original line number Diff line number Diff line Loading @@ -94,4 +94,11 @@ module LibItsSecurity_Pics { */ modulepar boolean PICS_SEC_ITS_AID_OTHER := true; /** * @desc Different set of parameters is used to generate the butterfly signing key associated with a certificate and the cocoon encryption key used to encrypt the certificate on issuance */ modulepar boolean PICS_SECPKI_ORIGINAL_BFK_KEY := true; modulepar boolean PICS_SECPKI_UNIFIED_BFK_KEY := false; modulepar boolean PICS_SECPKI_COMPACT_UNIFIED_BFK_KEY := false; } // End of module LibItsSecurity_Pics lib/LibItsSecurity_Pixits.ttcn +5 −0 Original line number Diff line number Diff line Loading @@ -95,4 +95,9 @@ module LibItsSecurity_Pixits { */ modulepar SignAlgorithm PX_EC_ALG_FOR_EC_SIGN := e_nist_p256; /** * @desc Set to true to use test vectors instead of random vectors */ modulepar boolean PX_BFK_TEST_VECTORS := false; } // End of module LibItsSecurity_Pixits lib_system/LibItsSecurity_Functions.ttcn +407 −302 Original line number Diff line number Diff line Loading @@ -3517,6 +3517,111 @@ module LibItsSecurity_Functions { } // End of group encryption group butterfly_expension_key { /** * @desc Produce a BKF expension key for signing as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ function f_generate_bkf_signing_expension_keys( out octetstring p_expansion_key ) return boolean { var integer v_i := f_random(1, 4294967296 - 1); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters var integer v_j := f_random(1, 20); if (PX_BFK_TEST_VECTORS) { // Test vectors v_i := oct2int('217D79E1'O); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters v_j := oct2int('00000011'O); } log("f_generate_bkf_signing_expension_keys: v_i=", v_i); log("f_generate_bkf_signing_expension_keys: v_j=", v_j); return fx_generate_bkf_signing_expension_keys(v_i, v_j, PX_BFK_TEST_VECTORS, p_expansion_key); } // End of function f_generate_bkf_signing_expension_keys /** * @desc Produce a BKF expension key for encryption as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ function f_generate_bkf_enc_expension_keys( out octetstring p_expansion_key ) return boolean { var integer v_i := f_random(1, 4294967296 - 1); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters var integer v_j := f_random(1, 20); if (PX_BFK_TEST_VECTORS) { // Test vectors v_i := oct2int('217D79E1'O); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters v_j := oct2int('00000011'O); } log("f_generate_bkf_enc_expension_keys: v_i=", v_i); log("f_generate_bkf_enc_expension_keys: v_j=", v_j); return fx_generate_bkf_enc_expension_keys(v_i, v_j, PX_BFK_TEST_VECTORS, p_expansion_key); } // End of function f_generate_bkf_enc_expension_keys function f_bfk_expend_private_key( in octetstring p_expansion_key, in octetstring p_private_key, out octetstring p_expended_private_key ) return boolean { log(">>> f_bfk_expend_private_key: p_compressed_public_key=", p_expansion_key); log(">>> f_bfk_expend_private_key: p_private_key=", p_private_key); return fx_bfk_expend_private_key(p_expansion_key, p_private_key, p_expended_private_key); } function f_bfk_expend_public_key( in octetstring p_expansion_key, in octetstring p_compressed_public_key, in integer p_compressed_mode, out octetstring p_expended_compressed_public_key, out integer p_expended_compressed_mode ) return boolean { log(">>> f_bfk_expend_public_key: p_expansion_key=", p_expansion_key); log(">>> f_bfk_expend_public_key: p_compressed_public_key=", p_compressed_public_key); log(">>> f_bfk_expend_public_key: p_compressed_mode=", p_compressed_mode); return fx_bfk_expend_public_key(p_expansion_key, p_compressed_public_key, p_compressed_mode, p_expended_compressed_public_key, p_expended_compressed_mode); } function f_bfk_verify_expended_keys( in octetstring p_expended_private_key, in octetstring p_expended_compressed_public_key, in integer p_expended_compressed_mode ) return boolean { log(">>> f_bfk_verify_expended_keys: p_expended_private_key=", p_expended_private_key); log(">>> f_bfk_verify_expended_keys: p_expended_compressed_public_key=", p_expended_compressed_public_key); log(">>> f_bfk_verify_expended_keys: p_expended_compressed_mode=", p_expended_compressed_mode); return f_bfk_verify_expended_keys(p_expended_private_key, p_expended_compressed_public_key, p_expended_compressed_mode); } /** * @desc Produce a BKF expension key for signing as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param p_i integers in the range 0 < iINT * @param p_j integers in the range jINT < 2^32– 1. * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ external function fx_generate_bkf_signing_expension_keys(in integer p_i, in integer p_j, in boolean p_debug := false, out octetstring p_expansion_key) return boolean; /** * @desc Produce a BKF expension key for encryption as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param p_i integers in the range 0 < iINT * @param p_j integers in the range jINT < 2^32– 1. * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ external function fx_generate_bkf_enc_expension_keys(in integer p_i, in integer p_j, in boolean p_debug := false, out octetstring p_expansion_key) return boolean; external function fx_bfk_expend_private_key(in octetstring p_expansion_key, in octetstring p_private_key, out octetstring p_expended_private_key) return boolean; external function fx_bfk_expend_public_key(in octetstring p_expansion_key, in octetstring p_compressed_public_key, in integer p_compressed_mode, out octetstring p_expended_compressed_public_key, out integer p_expended_compressed_mode) return boolean; external function fx_bfk_verify_expended_keys(in octetstring p_expended_private_key, in octetstring p_expended_compressed_public_key, in integer p_expended_compressed_mode) return boolean; } // End of group butterfly_expension_key group certificatesLoader { /** Loading Loading
lib/LibItsSecurity_Pics.ttcn +91 −84 Original line number Diff line number Diff line Loading @@ -94,4 +94,11 @@ module LibItsSecurity_Pics { */ modulepar boolean PICS_SEC_ITS_AID_OTHER := true; /** * @desc Different set of parameters is used to generate the butterfly signing key associated with a certificate and the cocoon encryption key used to encrypt the certificate on issuance */ modulepar boolean PICS_SECPKI_ORIGINAL_BFK_KEY := true; modulepar boolean PICS_SECPKI_UNIFIED_BFK_KEY := false; modulepar boolean PICS_SECPKI_COMPACT_UNIFIED_BFK_KEY := false; } // End of module LibItsSecurity_Pics
lib/LibItsSecurity_Pixits.ttcn +5 −0 Original line number Diff line number Diff line Loading @@ -95,4 +95,9 @@ module LibItsSecurity_Pixits { */ modulepar SignAlgorithm PX_EC_ALG_FOR_EC_SIGN := e_nist_p256; /** * @desc Set to true to use test vectors instead of random vectors */ modulepar boolean PX_BFK_TEST_VECTORS := false; } // End of module LibItsSecurity_Pixits
lib_system/LibItsSecurity_Functions.ttcn +407 −302 Original line number Diff line number Diff line Loading @@ -3517,6 +3517,111 @@ module LibItsSecurity_Functions { } // End of group encryption group butterfly_expension_key { /** * @desc Produce a BKF expension key for signing as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ function f_generate_bkf_signing_expension_keys( out octetstring p_expansion_key ) return boolean { var integer v_i := f_random(1, 4294967296 - 1); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters var integer v_j := f_random(1, 20); if (PX_BFK_TEST_VECTORS) { // Test vectors v_i := oct2int('217D79E1'O); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters v_j := oct2int('00000011'O); } log("f_generate_bkf_signing_expension_keys: v_i=", v_i); log("f_generate_bkf_signing_expension_keys: v_j=", v_j); return fx_generate_bkf_signing_expension_keys(v_i, v_j, PX_BFK_TEST_VECTORS, p_expansion_key); } // End of function f_generate_bkf_signing_expension_keys /** * @desc Produce a BKF expension key for encryption as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ function f_generate_bkf_enc_expension_keys( out octetstring p_expansion_key ) return boolean { var integer v_i := f_random(1, 4294967296 - 1); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters var integer v_j := f_random(1, 20); if (PX_BFK_TEST_VECTORS) { // Test vectors v_i := oct2int('217D79E1'O); // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters v_j := oct2int('00000011'O); } log("f_generate_bkf_enc_expension_keys: v_i=", v_i); log("f_generate_bkf_enc_expension_keys: v_j=", v_j); return fx_generate_bkf_enc_expension_keys(v_i, v_j, PX_BFK_TEST_VECTORS, p_expansion_key); } // End of function f_generate_bkf_enc_expension_keys function f_bfk_expend_private_key( in octetstring p_expansion_key, in octetstring p_private_key, out octetstring p_expended_private_key ) return boolean { log(">>> f_bfk_expend_private_key: p_compressed_public_key=", p_expansion_key); log(">>> f_bfk_expend_private_key: p_private_key=", p_private_key); return fx_bfk_expend_private_key(p_expansion_key, p_private_key, p_expended_private_key); } function f_bfk_expend_public_key( in octetstring p_expansion_key, in octetstring p_compressed_public_key, in integer p_compressed_mode, out octetstring p_expended_compressed_public_key, out integer p_expended_compressed_mode ) return boolean { log(">>> f_bfk_expend_public_key: p_expansion_key=", p_expansion_key); log(">>> f_bfk_expend_public_key: p_compressed_public_key=", p_compressed_public_key); log(">>> f_bfk_expend_public_key: p_compressed_mode=", p_compressed_mode); return fx_bfk_expend_public_key(p_expansion_key, p_compressed_public_key, p_compressed_mode, p_expended_compressed_public_key, p_expended_compressed_mode); } function f_bfk_verify_expended_keys( in octetstring p_expended_private_key, in octetstring p_expended_compressed_public_key, in integer p_expended_compressed_mode ) return boolean { log(">>> f_bfk_verify_expended_keys: p_expended_private_key=", p_expended_private_key); log(">>> f_bfk_verify_expended_keys: p_expended_compressed_public_key=", p_expended_compressed_public_key); log(">>> f_bfk_verify_expended_keys: p_expended_compressed_mode=", p_expended_compressed_mode); return f_bfk_verify_expended_keys(p_expended_private_key, p_expended_compressed_public_key, p_expended_compressed_mode); } /** * @desc Produce a BKF expension key for signing as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param p_i integers in the range 0 < iINT * @param p_j integers in the range jINT < 2^32– 1. * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ external function fx_generate_bkf_signing_expension_keys(in integer p_i, in integer p_j, in boolean p_debug := false, out octetstring p_expansion_key) return boolean; /** * @desc Produce a BKF expension key for encryption as defined in P1609.2.1/D7 Clause 9.3.3.1 Butterfly expansion functions * @param p_i integers in the range 0 < iINT * @param p_j integers in the range jINT < 2^32– 1. * @param The generated expansion key * @return true on success, false otherwise * @see // P1609.2.1/D7 Clause 9.3.3.1.2 Expansion function parameters */ external function fx_generate_bkf_enc_expension_keys(in integer p_i, in integer p_j, in boolean p_debug := false, out octetstring p_expansion_key) return boolean; external function fx_bfk_expend_private_key(in octetstring p_expansion_key, in octetstring p_private_key, out octetstring p_expended_private_key) return boolean; external function fx_bfk_expend_public_key(in octetstring p_expansion_key, in octetstring p_compressed_public_key, in integer p_compressed_mode, out octetstring p_expended_compressed_public_key, out integer p_expended_compressed_mode) return boolean; external function fx_bfk_verify_expended_keys(in octetstring p_expended_private_key, in octetstring p_expended_compressed_public_key, in integer p_expended_compressed_mode) return boolean; } // End of group butterfly_expension_key group certificatesLoader { /** Loading