Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +72 −133 Original line number Diff line number Diff line Loading @@ -349,77 +349,62 @@ group ipSecFns { } //in units of octets function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out UInt8 p_keyLen) return FncRetCode { function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo) return UInt8 { if(p_integrityAlgo == e_auth_hmacMd5_96){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_hmacSha1_96){ p_keyLen := 20; return e_success; return 20; } else if(p_integrityAlgo == e_auth_desMac){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_kpdkMd5){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_aesXcbc_96){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_sha1){ p_keyLen := 0; return e_success; return 0; } else if(p_integrityAlgo == e_auth_sha1_96){ p_keyLen := 0; return e_success; return 0; } else if(p_integrityAlgo == e_auth_hmacSha1_64){ p_keyLen := 20; return e_success; return 20; } else { log("**** f_getIntegrKeyLen: Error: Unknown integrity algorithm ****"); return e_error; return 255; } return e_success; }//end function f_getIntegrKeyLen //in units of octets function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out UInt8 p_keyLen) return FncRetCode { function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction) return UInt8 { if(p_pseudoRandomFunction == e_prfHmacMd5){ p_keyLen := 16; return e_success; return 16; } else if(p_pseudoRandomFunction == e_prfHmacSha1){ p_keyLen := 20; return e_success; return 20; } else if(p_pseudoRandomFunction == e_prfHmacTiger){ p_keyLen := 16; return e_success; return 16; } else if(p_pseudoRandomFunction == e_prfAes128Xcbc){ p_keyLen := 16; return e_success; return 16; } else { log("**** f_getPrfKeyLen: Error: Unknown pseudo random function algorithm ****"); return e_error; log("**** f_getPrfKeyLen: Error: Unknown pseudo random function ****"); return 255; } return e_success; }//end function f_getPrfKeyLen //in units of octets Loading Loading @@ -463,14 +448,16 @@ group ipSecFns { else if(p_encryptionAlgo == e_encr_null) { return 0; } return 0; else { log("**** f_getEncryptionIvLen: Error: Unknown encryption algorithm ****"); return 255; } } //in units of octets function f_getIv(EncryptionAlgo p_encryptionAlgo, out octetstring p_iv) function f_getIv(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node return FncRetCode { return octetstring { var UInt8 v_keyLen := 0; if (p_encryptionAlgo == e_encr_desIv64){ Loading Loading @@ -511,126 +498,95 @@ group ipSecFns { } else { log("**** f_getIvLen: Error: Unknown encryption algorithm ****"); v_keyLen := 255; p_iv := int2oct(float2int(int2float(20000-5000)*rnd())+5000, v_keyLen); return e_error; return 'FFFFFF'O; } p_iv := int2oct(float2int(int2float(20000-5000)*rnd())+5000, v_keyLen); return e_success; return int2oct(float2int(int2float(20000-5000)*rnd())+5000, v_keyLen); } //in units of octets function f_getEncrBlockSize(EncryptionAlgo p_encryptionAlgo, out UInt8 p_blockSize) function f_getEncrBlockSize(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node return FncRetCode { return UInt8 { if (p_encryptionAlgo == e_encr_desIv64){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_des/*e_des_cbc*/) { p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_3Des/*e_tripleDes_cbc*/) { p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_rc5){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_idea){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_cast){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_blowfish){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_3Idea){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_desIv32){ p_blockSize := 8; return e_success; return 8; } else if (p_encryptionAlgo == e_encr_aesCbc/*e_aes_cbc*/){ p_blockSize := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_aesCtr/*e_aes_ctr*/) { p_blockSize := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_null) { p_blockSize := 1; return e_success; return 1; } else { log("**** f_getIvLen: Error: Unknown encryption algorithm ****"); p_blockSize := 255; return e_error; return 255; } return e_success; } //in units of octets function f_getIntegrBlockSize(IntegrityAlgo p_integrityAlgo, out UInt8 p_blockSize) function f_getIntegrBlockSize(IntegrityAlgo p_integrityAlgo) runs on LibIpv6Node return FncRetCode { return UInt8 { if(p_integrityAlgo == e_auth_hmacMd5_96){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_hmacSha1_96){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_desMac){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_kpdkMd5){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_aesXcbc_96){ p_blockSize := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_sha1){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_sha1_96){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_hmacSha1_64){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_null){ p_blockSize := 1; return e_success; return 1; } else { log("**** f_getIntegrBlockSize: Error: Unknown integrity algorithm ****"); p_blockSize := 255; return e_error; return 255; } return e_success; } //in units of octets Loading @@ -654,61 +610,47 @@ group ipSecFns { } //in units of octets function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out UInt8 p_keyLen) return FncRetCode { function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo) return UInt8 { if(p_encryptionAlgo == e_encr_desIv64){ p_keyLen := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_des){ p_keyLen := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_3Des){ p_keyLen := 24; return e_success; return 24; } else if(p_encryptionAlgo == e_encr_rc5){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_idea){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_cast){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_blowfish){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_3Idea){ p_keyLen := 48; return e_success; return 48; } else if(p_encryptionAlgo == e_encr_desIv32){ p_keyLen := 8; return e_success; return 8; } else if (p_encryptionAlgo == e_encr_aesCbc){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_aesCtr){ p_keyLen := 20; return e_success; return 20; } else { log("**** f_getEncrKeyLen: Error: Unknown encryption algorithm ****"); p_keyLen := 255; return e_error; return 255; } return e_success; }//end function f_getEncrKeyLen /* Loading Loading @@ -791,12 +733,9 @@ group ipSecFns { } } v_ret := f_getIv(vc_sad[c_saOut].espEncryptionAlgo, v_espIv); if (v_ret != e_success) { return v_ret;} v_ret := f_getEncrBlockSize(vc_sad[c_saOut].espEncryptionAlgo, v_espEncrBlockSize); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrBlockSize(vc_sad[c_saOut].espIntegrityAlgo, v_espIntegrBlockSize); if (v_ret != e_success) { return v_ret;} v_espIv := f_getIv(PX_ENCRYPTION_ALGO); v_espEncrBlockSize := f_getEncrBlockSize(PX_ENCRYPTION_ALGO); v_espIntegrBlockSize := f_getIntegrBlockSize(PX_INTEGRITY_ALGO); //TODO v_ahIntegrBlockSize Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +18 −35 Original line number Diff line number Diff line Loading @@ -1196,8 +1196,7 @@ group sendRequests { or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_aesCbc or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_aesCtr) { v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeEncrKeyLen := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo); v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_ikeSad[0].ikeEncrKeyLen) Loading Loading @@ -1322,8 +1321,7 @@ group sendRequests { or vc_sad[c_saOut].espEncryptionAlgo == e_encr_aesCbc or vc_sad[c_saOut].espEncryptionAlgo == e_encr_aesCtr) { v_ret := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espEncrKeyLen := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo); v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_sad[c_saOut].espEncrKeyLen) Loading Loading @@ -1675,8 +1673,7 @@ group sendResponses { or vc_sad[c_saIn].espEncryptionAlgo == e_encr_aesCbc or vc_sad[c_saIn].espEncryptionAlgo == e_encr_aesCtr) { v_ret := f_getEncrKeyLen(vc_sad[c_saIn].espEncryptionAlgo, vc_sad[c_saIn].espEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saIn].espEncrKeyLen := f_getEncrKeyLen(vc_sad[c_saIn].espEncryptionAlgo); v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_sad[c_saIn].espEncrKeyLen) Loading Loading @@ -1803,20 +1800,14 @@ group establishSAFns_active { if (v_ret != e_success) { return v_ret;} //fill keyLen v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrKeyLen); if (v_ret != e_success) { return v_ret;} v_ret := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction, vc_ikeSad[0].prfKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeEncrKeyLen := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo); vc_ikeSad[0].ikeIntegrKeyLen := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo); vc_ikeSad[0].prfKeyLen := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction); //fill iv and block sizes v_ret := f_getIv(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeIv); if (v_ret != e_success) { return v_ret;} v_ret := f_getEncrBlockSize(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrBlockSize); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrBlockSize(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrBlockSize); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeIv := f_getIv(vc_ikeSad[0].ikeEncryptionAlgo); vc_ikeSad[0].ikeEncrBlockSize := f_getEncrBlockSize(vc_ikeSad[0].ikeEncryptionAlgo); vc_ikeSad[0].ikeIntegrBlockSize := f_getIntegrBlockSize(vc_ikeSad[0].ikeIntegrityAlgo); // calculate and store the seven secrets vc_ikeSad[0].sevenSecrets := f_calculateSevenSecrets(vc_ikeSad[0]); Loading Loading @@ -1846,20 +1837,13 @@ group establishSAFns_active { if (v_ret != e_success) { return v_ret;} //fill keyLen vc_sad[c_saOut].espEncrKeyLen := 0; v_ret := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espIntegrKeyLen := 0; v_ret := f_getIntegrKeyLen(vc_sad[c_saOut].espIntegrityAlgo, vc_sad[c_saOut].espIntegrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espEncrKeyLen := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo); vc_sad[c_saOut].espIntegrKeyLen := f_getIntegrKeyLen(vc_sad[c_saOut].espIntegrityAlgo); //fill iv and block sizes v_ret := f_getIv(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espIv); if (v_ret != e_success) { return v_ret;} v_ret := f_getEncrBlockSize(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espEncrBlockSize); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrBlockSize(vc_sad[c_saOut].espIntegrityAlgo, vc_sad[c_saOut].espIntegrBlockSize); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espIv := f_getIv(vc_sad[c_saOut].espEncryptionAlgo); vc_sad[c_saOut].espEncrBlockSize := f_getEncrBlockSize(vc_sad[c_saOut].espEncryptionAlgo); vc_sad[c_saOut].espIntegrBlockSize := f_getIntegrBlockSize(vc_sad[c_saOut].espIntegrityAlgo); v_ret := fx_setSecurityParameters(vc_sad); Loading Loading @@ -1887,8 +1871,7 @@ group establishSAFns_active { //fill keyLen vc_sad[c_saOut].ahIntegrKeyLen := 0; v_ret := f_getIntegrKeyLen(vc_sad[c_saOut].ahIntegrityAlgo, vc_sad[c_saOut].ahIntegrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].ahIntegrKeyLen := f_getIntegrKeyLen(vc_sad[c_saOut].ahIntegrityAlgo); //fill icv and pad length vc_sad[c_saOut].ahIcvLen := f_getIcvLen(vc_sad[c_saOut].ahIntegrityAlgo); Loading Loading @@ -1927,12 +1910,12 @@ group establishSAFns_passive { or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_aesCtr)) { //fill keyLen v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); vc_ikeSad[0].ikeEncrKeyLen := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo); } // there is no variable key length for integrity and PRF // now the fixed key len is saved to IkeSa v_ret := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrKeyLen); v_ret := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction, vc_ikeSad[0].prfKeyLen); vc_ikeSad[0].ikeIntegrKeyLen := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo); vc_ikeSad[0].prfKeyLen := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction); // calculate and store the seven secrets vc_ikeSad[0].sevenSecrets := f_calculateSevenSecrets(vc_ikeSad[0]); Loading Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +72 −133 Original line number Diff line number Diff line Loading @@ -349,77 +349,62 @@ group ipSecFns { } //in units of octets function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out UInt8 p_keyLen) return FncRetCode { function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo) return UInt8 { if(p_integrityAlgo == e_auth_hmacMd5_96){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_hmacSha1_96){ p_keyLen := 20; return e_success; return 20; } else if(p_integrityAlgo == e_auth_desMac){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_kpdkMd5){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_aesXcbc_96){ p_keyLen := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_sha1){ p_keyLen := 0; return e_success; return 0; } else if(p_integrityAlgo == e_auth_sha1_96){ p_keyLen := 0; return e_success; return 0; } else if(p_integrityAlgo == e_auth_hmacSha1_64){ p_keyLen := 20; return e_success; return 20; } else { log("**** f_getIntegrKeyLen: Error: Unknown integrity algorithm ****"); return e_error; return 255; } return e_success; }//end function f_getIntegrKeyLen //in units of octets function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out UInt8 p_keyLen) return FncRetCode { function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction) return UInt8 { if(p_pseudoRandomFunction == e_prfHmacMd5){ p_keyLen := 16; return e_success; return 16; } else if(p_pseudoRandomFunction == e_prfHmacSha1){ p_keyLen := 20; return e_success; return 20; } else if(p_pseudoRandomFunction == e_prfHmacTiger){ p_keyLen := 16; return e_success; return 16; } else if(p_pseudoRandomFunction == e_prfAes128Xcbc){ p_keyLen := 16; return e_success; return 16; } else { log("**** f_getPrfKeyLen: Error: Unknown pseudo random function algorithm ****"); return e_error; log("**** f_getPrfKeyLen: Error: Unknown pseudo random function ****"); return 255; } return e_success; }//end function f_getPrfKeyLen //in units of octets Loading Loading @@ -463,14 +448,16 @@ group ipSecFns { else if(p_encryptionAlgo == e_encr_null) { return 0; } return 0; else { log("**** f_getEncryptionIvLen: Error: Unknown encryption algorithm ****"); return 255; } } //in units of octets function f_getIv(EncryptionAlgo p_encryptionAlgo, out octetstring p_iv) function f_getIv(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node return FncRetCode { return octetstring { var UInt8 v_keyLen := 0; if (p_encryptionAlgo == e_encr_desIv64){ Loading Loading @@ -511,126 +498,95 @@ group ipSecFns { } else { log("**** f_getIvLen: Error: Unknown encryption algorithm ****"); v_keyLen := 255; p_iv := int2oct(float2int(int2float(20000-5000)*rnd())+5000, v_keyLen); return e_error; return 'FFFFFF'O; } p_iv := int2oct(float2int(int2float(20000-5000)*rnd())+5000, v_keyLen); return e_success; return int2oct(float2int(int2float(20000-5000)*rnd())+5000, v_keyLen); } //in units of octets function f_getEncrBlockSize(EncryptionAlgo p_encryptionAlgo, out UInt8 p_blockSize) function f_getEncrBlockSize(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node return FncRetCode { return UInt8 { if (p_encryptionAlgo == e_encr_desIv64){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_des/*e_des_cbc*/) { p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_3Des/*e_tripleDes_cbc*/) { p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_rc5){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_idea){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_cast){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_blowfish){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_3Idea){ p_blockSize := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_desIv32){ p_blockSize := 8; return e_success; return 8; } else if (p_encryptionAlgo == e_encr_aesCbc/*e_aes_cbc*/){ p_blockSize := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_aesCtr/*e_aes_ctr*/) { p_blockSize := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_null) { p_blockSize := 1; return e_success; return 1; } else { log("**** f_getIvLen: Error: Unknown encryption algorithm ****"); p_blockSize := 255; return e_error; return 255; } return e_success; } //in units of octets function f_getIntegrBlockSize(IntegrityAlgo p_integrityAlgo, out UInt8 p_blockSize) function f_getIntegrBlockSize(IntegrityAlgo p_integrityAlgo) runs on LibIpv6Node return FncRetCode { return UInt8 { if(p_integrityAlgo == e_auth_hmacMd5_96){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_hmacSha1_96){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_desMac){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_kpdkMd5){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_aesXcbc_96){ p_blockSize := 16; return e_success; return 16; } else if(p_integrityAlgo == e_auth_sha1){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_sha1_96){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_hmacSha1_64){ p_blockSize := 64; return e_success; return 64; } else if(p_integrityAlgo == e_auth_null){ p_blockSize := 1; return e_success; return 1; } else { log("**** f_getIntegrBlockSize: Error: Unknown integrity algorithm ****"); p_blockSize := 255; return e_error; return 255; } return e_success; } //in units of octets Loading @@ -654,61 +610,47 @@ group ipSecFns { } //in units of octets function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out UInt8 p_keyLen) return FncRetCode { function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo) return UInt8 { if(p_encryptionAlgo == e_encr_desIv64){ p_keyLen := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_des){ p_keyLen := 8; return e_success; return 8; } else if(p_encryptionAlgo == e_encr_3Des){ p_keyLen := 24; return e_success; return 24; } else if(p_encryptionAlgo == e_encr_rc5){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_idea){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_cast){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_blowfish){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_3Idea){ p_keyLen := 48; return e_success; return 48; } else if(p_encryptionAlgo == e_encr_desIv32){ p_keyLen := 8; return e_success; return 8; } else if (p_encryptionAlgo == e_encr_aesCbc){ p_keyLen := 16; return e_success; return 16; } else if(p_encryptionAlgo == e_encr_aesCtr){ p_keyLen := 20; return e_success; return 20; } else { log("**** f_getEncrKeyLen: Error: Unknown encryption algorithm ****"); p_keyLen := 255; return e_error; return 255; } return e_success; }//end function f_getEncrKeyLen /* Loading Loading @@ -791,12 +733,9 @@ group ipSecFns { } } v_ret := f_getIv(vc_sad[c_saOut].espEncryptionAlgo, v_espIv); if (v_ret != e_success) { return v_ret;} v_ret := f_getEncrBlockSize(vc_sad[c_saOut].espEncryptionAlgo, v_espEncrBlockSize); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrBlockSize(vc_sad[c_saOut].espIntegrityAlgo, v_espIntegrBlockSize); if (v_ret != e_success) { return v_ret;} v_espIv := f_getIv(PX_ENCRYPTION_ALGO); v_espEncrBlockSize := f_getEncrBlockSize(PX_ENCRYPTION_ALGO); v_espIntegrBlockSize := f_getIntegrBlockSize(PX_INTEGRITY_ALGO); //TODO v_ahIntegrBlockSize Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +18 −35 Original line number Diff line number Diff line Loading @@ -1196,8 +1196,7 @@ group sendRequests { or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_aesCbc or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_aesCtr) { v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeEncrKeyLen := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo); v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_ikeSad[0].ikeEncrKeyLen) Loading Loading @@ -1322,8 +1321,7 @@ group sendRequests { or vc_sad[c_saOut].espEncryptionAlgo == e_encr_aesCbc or vc_sad[c_saOut].espEncryptionAlgo == e_encr_aesCtr) { v_ret := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espEncrKeyLen := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo); v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_sad[c_saOut].espEncrKeyLen) Loading Loading @@ -1675,8 +1673,7 @@ group sendResponses { or vc_sad[c_saIn].espEncryptionAlgo == e_encr_aesCbc or vc_sad[c_saIn].espEncryptionAlgo == e_encr_aesCtr) { v_ret := f_getEncrKeyLen(vc_sad[c_saIn].espEncryptionAlgo, vc_sad[c_saIn].espEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saIn].espEncrKeyLen := f_getEncrKeyLen(vc_sad[c_saIn].espEncryptionAlgo); v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_sad[c_saIn].espEncrKeyLen) Loading Loading @@ -1803,20 +1800,14 @@ group establishSAFns_active { if (v_ret != e_success) { return v_ret;} //fill keyLen v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrKeyLen); if (v_ret != e_success) { return v_ret;} v_ret := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction, vc_ikeSad[0].prfKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeEncrKeyLen := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo); vc_ikeSad[0].ikeIntegrKeyLen := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo); vc_ikeSad[0].prfKeyLen := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction); //fill iv and block sizes v_ret := f_getIv(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeIv); if (v_ret != e_success) { return v_ret;} v_ret := f_getEncrBlockSize(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrBlockSize); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrBlockSize(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrBlockSize); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeIv := f_getIv(vc_ikeSad[0].ikeEncryptionAlgo); vc_ikeSad[0].ikeEncrBlockSize := f_getEncrBlockSize(vc_ikeSad[0].ikeEncryptionAlgo); vc_ikeSad[0].ikeIntegrBlockSize := f_getIntegrBlockSize(vc_ikeSad[0].ikeIntegrityAlgo); // calculate and store the seven secrets vc_ikeSad[0].sevenSecrets := f_calculateSevenSecrets(vc_ikeSad[0]); Loading Loading @@ -1846,20 +1837,13 @@ group establishSAFns_active { if (v_ret != e_success) { return v_ret;} //fill keyLen vc_sad[c_saOut].espEncrKeyLen := 0; v_ret := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espIntegrKeyLen := 0; v_ret := f_getIntegrKeyLen(vc_sad[c_saOut].espIntegrityAlgo, vc_sad[c_saOut].espIntegrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espEncrKeyLen := f_getEncrKeyLen(vc_sad[c_saOut].espEncryptionAlgo); vc_sad[c_saOut].espIntegrKeyLen := f_getIntegrKeyLen(vc_sad[c_saOut].espIntegrityAlgo); //fill iv and block sizes v_ret := f_getIv(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espIv); if (v_ret != e_success) { return v_ret;} v_ret := f_getEncrBlockSize(vc_sad[c_saOut].espEncryptionAlgo, vc_sad[c_saOut].espEncrBlockSize); if (v_ret != e_success) { return v_ret;} v_ret := f_getIntegrBlockSize(vc_sad[c_saOut].espIntegrityAlgo, vc_sad[c_saOut].espIntegrBlockSize); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].espIv := f_getIv(vc_sad[c_saOut].espEncryptionAlgo); vc_sad[c_saOut].espEncrBlockSize := f_getEncrBlockSize(vc_sad[c_saOut].espEncryptionAlgo); vc_sad[c_saOut].espIntegrBlockSize := f_getIntegrBlockSize(vc_sad[c_saOut].espIntegrityAlgo); v_ret := fx_setSecurityParameters(vc_sad); Loading Loading @@ -1887,8 +1871,7 @@ group establishSAFns_active { //fill keyLen vc_sad[c_saOut].ahIntegrKeyLen := 0; v_ret := f_getIntegrKeyLen(vc_sad[c_saOut].ahIntegrityAlgo, vc_sad[c_saOut].ahIntegrKeyLen); if (v_ret != e_success) { return v_ret;} vc_sad[c_saOut].ahIntegrKeyLen := f_getIntegrKeyLen(vc_sad[c_saOut].ahIntegrityAlgo); //fill icv and pad length vc_sad[c_saOut].ahIcvLen := f_getIcvLen(vc_sad[c_saOut].ahIntegrityAlgo); Loading Loading @@ -1927,12 +1910,12 @@ group establishSAFns_passive { or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_aesCtr)) { //fill keyLen v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); vc_ikeSad[0].ikeEncrKeyLen := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo); } // there is no variable key length for integrity and PRF // now the fixed key len is saved to IkeSa v_ret := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrKeyLen); v_ret := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction, vc_ikeSad[0].prfKeyLen); vc_ikeSad[0].ikeIntegrKeyLen := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo); vc_ikeSad[0].prfKeyLen := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction); // calculate and store the seven secrets vc_ikeSad[0].sevenSecrets := f_calculateSevenSecrets(vc_ikeSad[0]); Loading