Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +139 −6 Original line number Diff line number Diff line Loading @@ -346,6 +346,80 @@ group ipSecFns { return true; } //in units of octets function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out UInt8 p_keyLen) return FncRetCode { if(p_integrityAlgo == e_auth_hmacMd5_96){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_hmacSha1_96){ p_keyLen := 20; return e_success; } else if(p_integrityAlgo == e_auth_desMac){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_kpdkMd5){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_aesXcbc_96){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_sha1){ p_keyLen := 0; return e_success; } else if(p_integrityAlgo == e_auth_sha1_96){ p_keyLen := 0; return e_success; } else if(p_integrityAlgo == e_auth_hmacSha1_64){ p_keyLen := 20; return e_success; } else { log("**** f_getIntegrKeyLen: Error: Unknown integrity algorithm ****"); return e_error; } return e_success; }//end function f_getIntegrKeyLen //in units of octets function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out UInt8 p_keyLen) return FncRetCode { if(p_pseudoRandomFunction == e_prfHmacMd5){ p_keyLen := 16; return e_success; } else if(p_pseudoRandomFunction == e_prfHmacSha1){ p_keyLen := 20; return e_success; } else if(p_pseudoRandomFunction == e_prfHmacTiger){ p_keyLen := 16; return e_success; } else if(p_pseudoRandomFunction == e_prfAes128Xcbc){ p_keyLen := 16; return e_success; } else { log("**** f_getPrfKeyLen: Error: Unknown pseudo random function algorithm ****"); return e_error; } return e_success; }//end function f_getPrfKeyLen //in units of octets function f_getEncryptionIvLen(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node Loading Loading @@ -385,6 +459,63 @@ group ipSecFns { return true; } //in units of octets function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out UInt8 p_keyLen) return FncRetCode { if(p_encryptionAlgo == e_encr_desIv64){ p_keyLen := 8; return e_success; } else if(p_encryptionAlgo == e_encr_des){ p_keyLen := 8; return e_success; } else if(p_encryptionAlgo == e_encr_3Des){ p_keyLen := 24; return e_success; } else if(p_encryptionAlgo == e_encr_rc5){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_idea){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_cast){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_blowfish){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_3Idea){ p_keyLen := 48; return e_success; } else if(p_encryptionAlgo == e_encr_desIv32){ p_keyLen := 8; return e_success; } else if (p_encryptionAlgo == e_encr_aesCbc){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_aesCtr){ p_keyLen := 20; return e_success; } else { log("**** f_getEncrKeyLen: Error: Unknown encryption algorithm ****"); return e_error; } return e_success; }//end function f_getEncrKeyLen /* * @desc This generates Security Parameters Index * @return Security Parameters Index Loading Loading @@ -456,11 +587,6 @@ group ipSecFns { ikev2Header := omit, ikePayloadList := omit } //smu 2007 todo //if(active) { // prfKeyLen := f_getKeyLen // //} } // SAD-OUT Loading Loading @@ -686,6 +812,13 @@ group ipSecFns { } // function f_setTransformAttributeKeyLen(inout Ipv6Packet p_ipv6Packet) { // // //if (ischosen(p_ipv6Packet.IkeSaInitRequest)) // v_activeIpv6Packet.ipv6Payload.ikeMsg // // } }//end ipSecFns } // end module LibIpv6_CommonRfcs_Functions Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +4 −0 Original line number Diff line number Diff line Loading @@ -219,6 +219,10 @@ group rfc2460Root_Functions { // IKE message specific processing if(ischosen(v_activeIpv6Packet.ipv6Payload.ikeMsg)) { if (vc_ikeSad[0].udpTnPort == c_udpPort4500) { v_activeIpv6Packet.ipv6Payload.ikeMsg.padding := c_4ZeroBytes; } if(v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) + Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +33 −11 Original line number Diff line number Diff line Loading @@ -1061,7 +1061,10 @@ group sendResponses { var IkeSaInitResponse v_ipPkt; v_ipPkt := valueof(p_IkeSaInitres); //smu 2007 read out keyLen + padding if(f_setExtensionHeaders(v_ipPkt) != e_success) { log(" **** f_sendIkeSaInitRsp: Error when calculating length ****"); return e_error; } //send ipPort.send(v_ipPkt); Loading @@ -1083,6 +1086,30 @@ group establishSAFns_active { return FncRetCode { var FncRetCode v_ret := e_error; var SaTransform v_saTransformEncr := valueof ( m_saTransform ( c_moreTransform, c_transformTypeEncr, m_transformId_encr(vc_ikeSad[0].ikeEncryptionAlgo), omit ) ); if( vc_ikeSad[0].ikeEncryptionAlgo == e_encr_cast or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_blowfish 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) {f_selfOrClientSyncAndVerdict(c_prDone, v_ret);} v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_ikeSad[0].ikeEncrKeyLen) ) ); } if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { v_ret := f_sendIkeSaInitReq ( Loading @@ -1105,12 +1132,7 @@ group establishSAFns_active { c_4Transforms, omit,//spiInitiator m_saTransformList_4Elem ( m_saTransform ( c_moreTransform, c_transformTypeEncr, m_transformId_encr(vc_ikeSad[0].ikeEncryptionAlgo), omit//Attribute SMU check needed to add key ), v_saTransformEncr, m_saTransform ( c_moreTransform, c_transformTypeInteg, Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn +26 −1 Original line number Diff line number Diff line Loading @@ -734,4 +734,29 @@ group encrPLTmplts { }//end payloadTemplates group attributeTmplts { /* * @param p_ikePayload1 First element in SaTransformList * @param p_ikePayload2 Second element in SaTransformList */ template SaTransformAttributeList m_saTransformAttributeList_1Elem( template SaTransformAttribute p_saTransformAttribute1 ) := { p_saTransformAttribute1 } template SaTransformAttribute m_saTransformAttribute(UInt16 p_attributeValue) := { keyLength:= { attributeFormat := c_attributeFormatTv, attributeType := c_saTransformAttributeKeyLength, attributeValue := p_attributeValue } } }//end group attributeTmplts } // end module LibIpv6_Rfc4306Ikev2_Templates ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn +1 −1 File changed.Contains only whitespace changes. Show changes Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +139 −6 Original line number Diff line number Diff line Loading @@ -346,6 +346,80 @@ group ipSecFns { return true; } //in units of octets function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out UInt8 p_keyLen) return FncRetCode { if(p_integrityAlgo == e_auth_hmacMd5_96){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_hmacSha1_96){ p_keyLen := 20; return e_success; } else if(p_integrityAlgo == e_auth_desMac){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_kpdkMd5){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_aesXcbc_96){ p_keyLen := 16; return e_success; } else if(p_integrityAlgo == e_auth_sha1){ p_keyLen := 0; return e_success; } else if(p_integrityAlgo == e_auth_sha1_96){ p_keyLen := 0; return e_success; } else if(p_integrityAlgo == e_auth_hmacSha1_64){ p_keyLen := 20; return e_success; } else { log("**** f_getIntegrKeyLen: Error: Unknown integrity algorithm ****"); return e_error; } return e_success; }//end function f_getIntegrKeyLen //in units of octets function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out UInt8 p_keyLen) return FncRetCode { if(p_pseudoRandomFunction == e_prfHmacMd5){ p_keyLen := 16; return e_success; } else if(p_pseudoRandomFunction == e_prfHmacSha1){ p_keyLen := 20; return e_success; } else if(p_pseudoRandomFunction == e_prfHmacTiger){ p_keyLen := 16; return e_success; } else if(p_pseudoRandomFunction == e_prfAes128Xcbc){ p_keyLen := 16; return e_success; } else { log("**** f_getPrfKeyLen: Error: Unknown pseudo random function algorithm ****"); return e_error; } return e_success; }//end function f_getPrfKeyLen //in units of octets function f_getEncryptionIvLen(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node Loading Loading @@ -385,6 +459,63 @@ group ipSecFns { return true; } //in units of octets function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out UInt8 p_keyLen) return FncRetCode { if(p_encryptionAlgo == e_encr_desIv64){ p_keyLen := 8; return e_success; } else if(p_encryptionAlgo == e_encr_des){ p_keyLen := 8; return e_success; } else if(p_encryptionAlgo == e_encr_3Des){ p_keyLen := 24; return e_success; } else if(p_encryptionAlgo == e_encr_rc5){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_idea){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_cast){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_blowfish){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_3Idea){ p_keyLen := 48; return e_success; } else if(p_encryptionAlgo == e_encr_desIv32){ p_keyLen := 8; return e_success; } else if (p_encryptionAlgo == e_encr_aesCbc){ p_keyLen := 16; return e_success; } else if(p_encryptionAlgo == e_encr_aesCtr){ p_keyLen := 20; return e_success; } else { log("**** f_getEncrKeyLen: Error: Unknown encryption algorithm ****"); return e_error; } return e_success; }//end function f_getEncrKeyLen /* * @desc This generates Security Parameters Index * @return Security Parameters Index Loading Loading @@ -456,11 +587,6 @@ group ipSecFns { ikev2Header := omit, ikePayloadList := omit } //smu 2007 todo //if(active) { // prfKeyLen := f_getKeyLen // //} } // SAD-OUT Loading Loading @@ -686,6 +812,13 @@ group ipSecFns { } // function f_setTransformAttributeKeyLen(inout Ipv6Packet p_ipv6Packet) { // // //if (ischosen(p_ipv6Packet.IkeSaInitRequest)) // v_activeIpv6Packet.ipv6Payload.ikeMsg // // } }//end ipSecFns } // end module LibIpv6_CommonRfcs_Functions Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +4 −0 Original line number Diff line number Diff line Loading @@ -219,6 +219,10 @@ group rfc2460Root_Functions { // IKE message specific processing if(ischosen(v_activeIpv6Packet.ipv6Payload.ikeMsg)) { if (vc_ikeSad[0].udpTnPort == c_udpPort4500) { v_activeIpv6Packet.ipv6Payload.ikeMsg.padding := c_4ZeroBytes; } if(v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) + Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +33 −11 Original line number Diff line number Diff line Loading @@ -1061,7 +1061,10 @@ group sendResponses { var IkeSaInitResponse v_ipPkt; v_ipPkt := valueof(p_IkeSaInitres); //smu 2007 read out keyLen + padding if(f_setExtensionHeaders(v_ipPkt) != e_success) { log(" **** f_sendIkeSaInitRsp: Error when calculating length ****"); return e_error; } //send ipPort.send(v_ipPkt); Loading @@ -1083,6 +1086,30 @@ group establishSAFns_active { return FncRetCode { var FncRetCode v_ret := e_error; var SaTransform v_saTransformEncr := valueof ( m_saTransform ( c_moreTransform, c_transformTypeEncr, m_transformId_encr(vc_ikeSad[0].ikeEncryptionAlgo), omit ) ); if( vc_ikeSad[0].ikeEncryptionAlgo == e_encr_cast or vc_ikeSad[0].ikeEncryptionAlgo == e_encr_blowfish 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) {f_selfOrClientSyncAndVerdict(c_prDone, v_ret);} v_saTransformEncr.saTransformAttributeList := valueof( m_saTransformAttributeList_1Elem( m_saTransformAttribute(vc_ikeSad[0].ikeEncrKeyLen) ) ); } if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { v_ret := f_sendIkeSaInitReq ( Loading @@ -1105,12 +1132,7 @@ group establishSAFns_active { c_4Transforms, omit,//spiInitiator m_saTransformList_4Elem ( m_saTransform ( c_moreTransform, c_transformTypeEncr, m_transformId_encr(vc_ikeSad[0].ikeEncryptionAlgo), omit//Attribute SMU check needed to add key ), v_saTransformEncr, m_saTransform ( c_moreTransform, c_transformTypeInteg, Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn +26 −1 Original line number Diff line number Diff line Loading @@ -734,4 +734,29 @@ group encrPLTmplts { }//end payloadTemplates group attributeTmplts { /* * @param p_ikePayload1 First element in SaTransformList * @param p_ikePayload2 Second element in SaTransformList */ template SaTransformAttributeList m_saTransformAttributeList_1Elem( template SaTransformAttribute p_saTransformAttribute1 ) := { p_saTransformAttribute1 } template SaTransformAttribute m_saTransformAttribute(UInt16 p_attributeValue) := { keyLength:= { attributeFormat := c_attributeFormatTv, attributeType := c_saTransformAttributeKeyLength, attributeValue := p_attributeValue } } }//end group attributeTmplts } // end module LibIpv6_Rfc4306Ikev2_Templates
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn +1 −1 File changed.Contains only whitespace changes. Show changes