Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +37 −7 Original line number Diff line number Diff line Loading @@ -292,6 +292,7 @@ group ipSecFns { function f_getIcvLen(IntegrityAlgo p_integrityAlgo) runs on LibIpv6Node return UInt8 { if(p_integrityAlgo == e_auth_sha1/*e_sha1*/) { return 20; } Loading @@ -305,6 +306,7 @@ group ipSecFns { return 12; } //in units of octets function f_getIcvPadLen(IntegrityAlgo p_integrityAlgo) runs on LibIpv6Node Loading Loading @@ -347,7 +349,7 @@ group ipSecFns { } //in units of octets function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out UInt8 p_keyLen) function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out template UInt8 p_keyLen) return FncRetCode { if(p_integrityAlgo == e_auth_hmacMd5_96){ Loading Loading @@ -392,7 +394,7 @@ group ipSecFns { }//end function f_getIntegrKeyLen //in units of octets function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out UInt8 p_keyLen) function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out template UInt8 p_keyLen) return FncRetCode { if(p_pseudoRandomFunction == e_prfHmacMd5){ Loading Loading @@ -424,18 +426,44 @@ group ipSecFns { function f_getEncryptionIvLen(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node return UInt8 { if(p_encryptionAlgo == e_encr_3Des/*e_tripleDes_cbc*/) { if (p_encryptionAlgo == e_encr_desIv64){ return 8; } else if(p_encryptionAlgo == e_encr_des/*e_des_cbc*/) { return 8; } else if(p_encryptionAlgo == e_encr_3Des/*e_tripleDes_cbc*/) { return 8; } else if(p_encryptionAlgo == e_encr_rc5){ return 0; } else if(p_encryptionAlgo == e_encr_idea){ return 0; } else if(p_encryptionAlgo == e_encr_cast){ return 0; } else if(p_encryptionAlgo == e_encr_blowfish){ return 0; } else if(p_encryptionAlgo == e_encr_3Idea){ return 0; } else if(p_encryptionAlgo == e_encr_desIv32){ return 4; } else if (p_encryptionAlgo == e_encr_aesCbc/*e_aes_cbc*/){ return 16; } else if(p_encryptionAlgo == e_encr_aesCtr/*e_aes_ctr*/) { return 8; } else if(p_encryptionAlgo == e_encr_des/*e_des_cbc*/) { return 8; else if(p_encryptionAlgo == e_encr_null) { return 0; } return 0; } Loading @@ -460,7 +488,7 @@ group ipSecFns { } //in units of octets function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out UInt8 p_keyLen) function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out template UInt8 p_keyLen) return FncRetCode { if(p_encryptionAlgo == e_encr_desIv64){ Loading Loading @@ -509,6 +537,7 @@ group ipSecFns { } else { log("**** f_getEncrKeyLen: Error: Unknown encryption algorithm ****"); p_keyLen := 255; return e_error; } Loading Loading @@ -788,6 +817,7 @@ group ipSecFns { return UInt8 { var UInt8 v_len := 0; //FIXME if ( match(p_saTransformAttributeList, SaTransformAttributeList:omit)) { log("**** SaTransformAttributeList omitted ****"); } Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +26 −4 Original line number Diff line number Diff line Loading @@ -223,21 +223,43 @@ group rfc2460Root_Functions { v_activeIpv6Packet.ipv6Payload.ikeMsg.padding := c_4ZeroBytes; } if(ischosen(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted)) { // set IV if needed. if (f_getEncryptionIvLen(vc_ikeSad[0].ikeEncryptionAlgo) == 0) { v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.iv := omit; } else { v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.iv := int2oct(128, f_getEncryptionIvLen(vc_ikeSad[0].ikeEncryptionAlgo)); } //Payload length if(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.payloadLength == 0) { v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.payloadLength := fx_ikeEncPayloadLength(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted); } v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header.messageLength := c_ikev2HeaderLen + lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); } if(v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) + lengthof(fx_ikev2HeaderToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header)) + lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) //lengthof(fx_ikev2HeaderToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header)) //+ lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); + v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header.messageLength; } } // Update the active packet v_activeIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (v_activeIpv6Packet); // Compute payload checksum (Icmpv6, UDP, ...) v_ret := f_calcIpv6PayloadChecksum(v_pseudoSrcAddr, v_pseudoDstAddr, v_activeIpv6Packet.ipv6Payload); } // Proccess Authentication, non-recursive // Compute ICV and ICV-Padding if ( v_authHdrIndex<sizeof(v_activeIpv6Packet.extHdrList) if ( ispresent(v_activeIpv6Packet.extHdrList) and v_authHdrIndex<sizeof(v_activeIpv6Packet.extHdrList) and ischosen(v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader)) { //Set Dummy ICV of correct length Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +30 −16 Original line number Diff line number Diff line Loading @@ -711,8 +711,8 @@ module LibIpv6_Rfc4306Ikev2_Functions { in template Ipv6Address p_dst) runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret; var FncRetCode v_ret_local; var FncRetCode v_ret := e_success; var FncRetCode v_ret_local := e_success; var Ipv6Packet v_ipv6Packet; // next payload from IKE header var UInt8 v_nextPayload; Loading Loading @@ -753,6 +753,10 @@ module LibIpv6_Rfc4306Ikev2_Functions { { if (vc_ikeSad[0].diffieHellmanGroup != v_ikePayload.keyExchange.dhGroup) { v_ret := e_error; log("**** f_waitForIkeSaInitRsp: ERROR: Key Exchange payload indicates wrong Diffie-Hellman group **** "); } // calculate shared Diffie-Hellman secret vc_ikeSad[0].diffieHellmanSharedSecret := fx_dHSharedSecret(vc_ikeSad[0].diffieHellmanGroup, PX_IKE_DIFFIEHELLMAN_PRIVKEY, v_ikePayload.keyExchange.data); } else { log("**** f_waitForIkeSaInitRsp: ERROR: No Key Exchange payload in payload list **** "); Loading Loading @@ -1254,14 +1258,17 @@ group establishSAFns_active { } // wait for IKE_SA_INIT response v_ret := f_waitForIkeSaInitRsp(p_addrIut,p_addrTn); v_ret := f_waitForIkeSaInitRsp(p_addrIut,p_addrTn);//todo smu 2007 add tunnel mode if (v_ret != e_success) { return v_ret;} //fill keyLen vc_ikeSad[0].ikeEncrKeyLen := 0; v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeIntegrKeyLen := 0; v_ret := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].prfKeyLen :=0; v_ret := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction, vc_ikeSad[0].prfKeyLen); if (v_ret != e_success) { return v_ret;} Loading Loading @@ -1320,13 +1327,13 @@ group establishSAFns_active { m_ikePlList_1Elem( m_encryptedPL( c_idInitiatorPL, m_ikePlList_4Elem( m_ikePlList_5Elem( m_idInitiatorPL ( c_authenticationPL, p_addrTn ), m_authPL ( c_authenticationPL, c_saPL, f_calculateAUTH(vc_ikeSad[0],c_initiator) ), m_securityAssociationPL( Loading @@ -1351,15 +1358,20 @@ group establishSAFns_active { ), m_tsInitiatorPL( c_noNextPL, m_trafficSelectorList_2Elem ( m_trafficSelectorList_1Elem ( m_icmpv6Ts( c_echoRequestMsg, p_addrTn, p_addrIut p_addrTn ) ) ), m_tsResponderPL( c_noNextPL, m_trafficSelectorList_1Elem ( m_icmpv6Ts( c_echoReplyMsg, p_addrTn, c_echoRequestMsg, p_addrIut, p_addrIut ) ) Loading @@ -1380,8 +1392,10 @@ 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;} Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn +49 −7 Original line number Diff line number Diff line Loading @@ -223,7 +223,7 @@ UInt8 p_nextPayload, UInt32 p_messageID, template IkePayloadList p_ikepayloads) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { ikeMsg := { Loading @@ -246,7 +246,7 @@ iFlag := c_iFlagInitiator, threeXFlags := 0, messageID := p_messageID, messageLength := c_uInt32Zero messageLength := 0 }, // IKEv2 Payloads payloadList := p_ikepayloads Loading Loading @@ -508,6 +508,27 @@ group payloadTemplates { p_ikePayload4 } /* * @param p_ikePayload1 First element in IkePayloadList * @param p_ikePayload2 Second element in IkePayloadList * @param p_ikePayload3 Third element in IkePayloadList * @param p_ikePayload4 Third element in IkePayloadList * @param p_ikePayload5 Third element in IkePayloadList */ template IkePayloadList m_ikePlList_5Elem( template IkePayload p_ikePayload1, template IkePayload p_ikePayload2, template IkePayload p_ikePayload3, template IkePayload p_ikePayload4, template IkePayload p_ikePayload5) := { p_ikePayload1, p_ikePayload2, p_ikePayload3, p_ikePayload4, p_ikePayload5 } group ikeKeyExchangePayloadTemplates { template IkePayload mw_keyExchangePL := { Loading Loading @@ -688,13 +709,34 @@ group trafficSelectionPLTmplts { nextPayload := p_nextPayload, criticalFlag := 0, reserved1 := c_uInt7Zero, payloadLength := sizeof(valueof(p_trafficSelectorList)) * 40, payloadLength := 8 + sizeof(valueof(p_trafficSelectorList)) * 40, numberOfTs := sizeof(valueof(p_trafficSelectorList)), reserved2 := c_uInt24Zero, trafficSelectorList := p_trafficSelectorList } } template IkePayload m_tsResponderPL( UInt8 p_nextPayload, template TrafficSelectorList p_trafficSelectorList) := { tsResponder := { nextPayload := p_nextPayload, criticalFlag := 0, reserved1 := c_uInt7Zero, payloadLength := 8 + sizeof(valueof(p_trafficSelectorList)) * 40, numberOfTs := sizeof(valueof(p_trafficSelectorList)), reserved2 := c_uInt24Zero, trafficSelectorList := p_trafficSelectorList } } template TrafficSelectorList m_trafficSelectorList_1Elem( template TsTrafficSelector p_tsTrafficSelector1 ) := { p_tsTrafficSelector1 } template TrafficSelectorList m_trafficSelectorList_2Elem( template TsTrafficSelector p_tsTrafficSelector1, template TsTrafficSelector p_tsTrafficSelector2 Loading @@ -703,16 +745,16 @@ group trafficSelectionPLTmplts { } template TsTrafficSelector m_icmpv6Ts( UInt8 p_ipProtocolId, UInt8 p_icmpType, template Ipv6Address p_startAddress, template Ipv6Address p_endAddress ) := { tsIpv6TrafficSelector := { tsType := c_tsIpv6AddrRange, ipProtocolId := p_ipProtocolId, ipProtocolId := c_icmpHdr, tsLength := 40, startPort := c_uInt16Zero, endPort := c_uInt16Zero, startPort := p_icmpType, endPort := p_icmpType, startAddress := p_startAddress, endAddress := p_endAddress } Loading Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +37 −7 Original line number Diff line number Diff line Loading @@ -292,6 +292,7 @@ group ipSecFns { function f_getIcvLen(IntegrityAlgo p_integrityAlgo) runs on LibIpv6Node return UInt8 { if(p_integrityAlgo == e_auth_sha1/*e_sha1*/) { return 20; } Loading @@ -305,6 +306,7 @@ group ipSecFns { return 12; } //in units of octets function f_getIcvPadLen(IntegrityAlgo p_integrityAlgo) runs on LibIpv6Node Loading Loading @@ -347,7 +349,7 @@ group ipSecFns { } //in units of octets function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out UInt8 p_keyLen) function f_getIntegrKeyLen( in IntegrityAlgo p_integrityAlgo, out template UInt8 p_keyLen) return FncRetCode { if(p_integrityAlgo == e_auth_hmacMd5_96){ Loading Loading @@ -392,7 +394,7 @@ group ipSecFns { }//end function f_getIntegrKeyLen //in units of octets function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out UInt8 p_keyLen) function f_getPrfKeyLen( in PseudoRandomFunction p_pseudoRandomFunction, out template UInt8 p_keyLen) return FncRetCode { if(p_pseudoRandomFunction == e_prfHmacMd5){ Loading Loading @@ -424,18 +426,44 @@ group ipSecFns { function f_getEncryptionIvLen(EncryptionAlgo p_encryptionAlgo) runs on LibIpv6Node return UInt8 { if(p_encryptionAlgo == e_encr_3Des/*e_tripleDes_cbc*/) { if (p_encryptionAlgo == e_encr_desIv64){ return 8; } else if(p_encryptionAlgo == e_encr_des/*e_des_cbc*/) { return 8; } else if(p_encryptionAlgo == e_encr_3Des/*e_tripleDes_cbc*/) { return 8; } else if(p_encryptionAlgo == e_encr_rc5){ return 0; } else if(p_encryptionAlgo == e_encr_idea){ return 0; } else if(p_encryptionAlgo == e_encr_cast){ return 0; } else if(p_encryptionAlgo == e_encr_blowfish){ return 0; } else if(p_encryptionAlgo == e_encr_3Idea){ return 0; } else if(p_encryptionAlgo == e_encr_desIv32){ return 4; } else if (p_encryptionAlgo == e_encr_aesCbc/*e_aes_cbc*/){ return 16; } else if(p_encryptionAlgo == e_encr_aesCtr/*e_aes_ctr*/) { return 8; } else if(p_encryptionAlgo == e_encr_des/*e_des_cbc*/) { return 8; else if(p_encryptionAlgo == e_encr_null) { return 0; } return 0; } Loading @@ -460,7 +488,7 @@ group ipSecFns { } //in units of octets function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out UInt8 p_keyLen) function f_getEncrKeyLen( in EncryptionAlgo p_encryptionAlgo, out template UInt8 p_keyLen) return FncRetCode { if(p_encryptionAlgo == e_encr_desIv64){ Loading Loading @@ -509,6 +537,7 @@ group ipSecFns { } else { log("**** f_getEncrKeyLen: Error: Unknown encryption algorithm ****"); p_keyLen := 255; return e_error; } Loading Loading @@ -788,6 +817,7 @@ group ipSecFns { return UInt8 { var UInt8 v_len := 0; //FIXME if ( match(p_saTransformAttributeList, SaTransformAttributeList:omit)) { log("**** SaTransformAttributeList omitted ****"); } Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +26 −4 Original line number Diff line number Diff line Loading @@ -223,21 +223,43 @@ group rfc2460Root_Functions { v_activeIpv6Packet.ipv6Payload.ikeMsg.padding := c_4ZeroBytes; } if(ischosen(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted)) { // set IV if needed. if (f_getEncryptionIvLen(vc_ikeSad[0].ikeEncryptionAlgo) == 0) { v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.iv := omit; } else { v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.iv := int2oct(128, f_getEncryptionIvLen(vc_ikeSad[0].ikeEncryptionAlgo)); } //Payload length if(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.payloadLength == 0) { v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted.payloadLength := fx_ikeEncPayloadLength(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList[0].encrypted); } v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header.messageLength := c_ikev2HeaderLen + lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); } if(v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength == 0) { //calc payloadLen of UDP msg v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) + lengthof(fx_ikev2HeaderToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header)) + lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); v_activeIpv6Packet.ipv6Payload.ikeMsg.msgLength := 8 + f_getLenPadding(v_activeIpv6Packet.ipv6Payload.ikeMsg) //lengthof(fx_ikev2HeaderToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header)) //+ lengthof(fx_ikePayloadListToOct(v_activeIpv6Packet.ipv6Payload.ikeMsg.payloadList)); + v_activeIpv6Packet.ipv6Payload.ikeMsg.ikev2Header.messageLength; } } // Update the active packet v_activeIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (v_activeIpv6Packet); // Compute payload checksum (Icmpv6, UDP, ...) v_ret := f_calcIpv6PayloadChecksum(v_pseudoSrcAddr, v_pseudoDstAddr, v_activeIpv6Packet.ipv6Payload); } // Proccess Authentication, non-recursive // Compute ICV and ICV-Padding if ( v_authHdrIndex<sizeof(v_activeIpv6Packet.extHdrList) if ( ispresent(v_activeIpv6Packet.extHdrList) and v_authHdrIndex<sizeof(v_activeIpv6Packet.extHdrList) and ischosen(v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader)) { //Set Dummy ICV of correct length Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +30 −16 Original line number Diff line number Diff line Loading @@ -711,8 +711,8 @@ module LibIpv6_Rfc4306Ikev2_Functions { in template Ipv6Address p_dst) runs on LibIpv6Node return FncRetCode { var FncRetCode v_ret; var FncRetCode v_ret_local; var FncRetCode v_ret := e_success; var FncRetCode v_ret_local := e_success; var Ipv6Packet v_ipv6Packet; // next payload from IKE header var UInt8 v_nextPayload; Loading Loading @@ -753,6 +753,10 @@ module LibIpv6_Rfc4306Ikev2_Functions { { if (vc_ikeSad[0].diffieHellmanGroup != v_ikePayload.keyExchange.dhGroup) { v_ret := e_error; log("**** f_waitForIkeSaInitRsp: ERROR: Key Exchange payload indicates wrong Diffie-Hellman group **** "); } // calculate shared Diffie-Hellman secret vc_ikeSad[0].diffieHellmanSharedSecret := fx_dHSharedSecret(vc_ikeSad[0].diffieHellmanGroup, PX_IKE_DIFFIEHELLMAN_PRIVKEY, v_ikePayload.keyExchange.data); } else { log("**** f_waitForIkeSaInitRsp: ERROR: No Key Exchange payload in payload list **** "); Loading Loading @@ -1254,14 +1258,17 @@ group establishSAFns_active { } // wait for IKE_SA_INIT response v_ret := f_waitForIkeSaInitRsp(p_addrIut,p_addrTn); v_ret := f_waitForIkeSaInitRsp(p_addrIut,p_addrTn);//todo smu 2007 add tunnel mode if (v_ret != e_success) { return v_ret;} //fill keyLen vc_ikeSad[0].ikeEncrKeyLen := 0; v_ret := f_getEncrKeyLen(vc_ikeSad[0].ikeEncryptionAlgo, vc_ikeSad[0].ikeEncrKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].ikeIntegrKeyLen := 0; v_ret := f_getIntegrKeyLen(vc_ikeSad[0].ikeIntegrityAlgo, vc_ikeSad[0].ikeIntegrKeyLen); if (v_ret != e_success) { return v_ret;} vc_ikeSad[0].prfKeyLen :=0; v_ret := f_getPrfKeyLen(vc_ikeSad[0].ikePseudoRandomFunction, vc_ikeSad[0].prfKeyLen); if (v_ret != e_success) { return v_ret;} Loading Loading @@ -1320,13 +1327,13 @@ group establishSAFns_active { m_ikePlList_1Elem( m_encryptedPL( c_idInitiatorPL, m_ikePlList_4Elem( m_ikePlList_5Elem( m_idInitiatorPL ( c_authenticationPL, p_addrTn ), m_authPL ( c_authenticationPL, c_saPL, f_calculateAUTH(vc_ikeSad[0],c_initiator) ), m_securityAssociationPL( Loading @@ -1351,15 +1358,20 @@ group establishSAFns_active { ), m_tsInitiatorPL( c_noNextPL, m_trafficSelectorList_2Elem ( m_trafficSelectorList_1Elem ( m_icmpv6Ts( c_echoRequestMsg, p_addrTn, p_addrIut p_addrTn ) ) ), m_tsResponderPL( c_noNextPL, m_trafficSelectorList_1Elem ( m_icmpv6Ts( c_echoReplyMsg, p_addrTn, c_echoRequestMsg, p_addrIut, p_addrIut ) ) Loading @@ -1380,8 +1392,10 @@ 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;} Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn +49 −7 Original line number Diff line number Diff line Loading @@ -223,7 +223,7 @@ UInt8 p_nextPayload, UInt32 p_messageID, template IkePayloadList p_ikepayloads) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { ikeMsg := { Loading @@ -246,7 +246,7 @@ iFlag := c_iFlagInitiator, threeXFlags := 0, messageID := p_messageID, messageLength := c_uInt32Zero messageLength := 0 }, // IKEv2 Payloads payloadList := p_ikepayloads Loading Loading @@ -508,6 +508,27 @@ group payloadTemplates { p_ikePayload4 } /* * @param p_ikePayload1 First element in IkePayloadList * @param p_ikePayload2 Second element in IkePayloadList * @param p_ikePayload3 Third element in IkePayloadList * @param p_ikePayload4 Third element in IkePayloadList * @param p_ikePayload5 Third element in IkePayloadList */ template IkePayloadList m_ikePlList_5Elem( template IkePayload p_ikePayload1, template IkePayload p_ikePayload2, template IkePayload p_ikePayload3, template IkePayload p_ikePayload4, template IkePayload p_ikePayload5) := { p_ikePayload1, p_ikePayload2, p_ikePayload3, p_ikePayload4, p_ikePayload5 } group ikeKeyExchangePayloadTemplates { template IkePayload mw_keyExchangePL := { Loading Loading @@ -688,13 +709,34 @@ group trafficSelectionPLTmplts { nextPayload := p_nextPayload, criticalFlag := 0, reserved1 := c_uInt7Zero, payloadLength := sizeof(valueof(p_trafficSelectorList)) * 40, payloadLength := 8 + sizeof(valueof(p_trafficSelectorList)) * 40, numberOfTs := sizeof(valueof(p_trafficSelectorList)), reserved2 := c_uInt24Zero, trafficSelectorList := p_trafficSelectorList } } template IkePayload m_tsResponderPL( UInt8 p_nextPayload, template TrafficSelectorList p_trafficSelectorList) := { tsResponder := { nextPayload := p_nextPayload, criticalFlag := 0, reserved1 := c_uInt7Zero, payloadLength := 8 + sizeof(valueof(p_trafficSelectorList)) * 40, numberOfTs := sizeof(valueof(p_trafficSelectorList)), reserved2 := c_uInt24Zero, trafficSelectorList := p_trafficSelectorList } } template TrafficSelectorList m_trafficSelectorList_1Elem( template TsTrafficSelector p_tsTrafficSelector1 ) := { p_tsTrafficSelector1 } template TrafficSelectorList m_trafficSelectorList_2Elem( template TsTrafficSelector p_tsTrafficSelector1, template TsTrafficSelector p_tsTrafficSelector2 Loading @@ -703,16 +745,16 @@ group trafficSelectionPLTmplts { } template TsTrafficSelector m_icmpv6Ts( UInt8 p_ipProtocolId, UInt8 p_icmpType, template Ipv6Address p_startAddress, template Ipv6Address p_endAddress ) := { tsIpv6TrafficSelector := { tsType := c_tsIpv6AddrRange, ipProtocolId := p_ipProtocolId, ipProtocolId := c_icmpHdr, tsLength := 40, startPort := c_uInt16Zero, endPort := c_uInt16Zero, startPort := p_icmpType, endPort := p_icmpType, startAddress := p_startAddress, endAddress := p_endAddress } Loading