Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +48 −12 Original line number Diff line number Diff line Loading @@ -171,14 +171,19 @@ group rfc2460Root_Functions { // Active packet has to be updated once the recursion call returns else if (ischosen(v_activeIpv6Packet.extHdrList[i].espHeader)) { var integer v_idx := -1; if (f_getSaBySpi(vc_sad, v_activeIpv6Packet.extHdrList[i].espHeader.spi, v_idx) == e_error) { return e_error; } // set IV if needed. // Payload length may change. if (vc_sad[v_activeIpv6Packet.extHdrList[i].espHeader.spi].espEncryptionAlgo == e_encr_null) { if (vc_sad[v_idx].espEncryptionAlgo == e_encr_null) { v_activeIpv6Packet.extHdrList[i].espHeader.espPayload.iv := omit; } else { v_activeIpv6Packet.extHdrList[i].espHeader.espPayload.iv := vc_sad[c_saOut].espIv; //int2oct(128, f_getEncryptionIvLen(vc_sad[v_activeIpv6Packet.extHdrList[i].espHeader.spi].espEncryptionAlgo)); v_activeIpv6Packet.extHdrList[i].espHeader.espPayload.iv := vc_sad[v_idx].espIv; //int2oct(128, f_getEncryptionIvLen(vc_sad[v_idx].espEncryptionAlgo)); } v_ret := f_getOriginalIpv6Packet( Loading Loading @@ -268,30 +273,34 @@ group rfc2460Root_Functions { and ischosen(v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader)) { //Set Dummy ICV of correct length v_spi := v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.securityParametersIndex; if (vc_sad[v_spi].ahIcvLen == 0) { var integer v_idx := -1; if (f_getSaBySpi(vc_sad, v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.securityParametersIndex, v_idx) == e_error) { return e_error; } if (vc_sad[v_idx].ahIcvLen == 0) { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := omit; } else { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := int2oct(0, vc_sad[v_spi].ahIcvLen); v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := int2oct(0, vc_sad[v_idx].ahIcvLen); } // Check ICV padding if (vc_sad[v_spi].ahIcvPadLen == 0) { if (vc_sad[v_idx].ahIcvPadLen == 0) { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icvPadding := omit; } else { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icvPadding := int2oct(0, vc_sad[v_spi].ahIcvPadLen); v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icvPadding := int2oct(0, vc_sad[v_idx].ahIcvPadLen); } // Update AuthHeader payloadLen v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.payloadLen := (12 + vc_sad[v_spi].ahIcvLen + vc_sad[v_spi].ahIcvPadLen) / 4 - 2; v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.payloadLen := (12 + vc_sad[v_idx].ahIcvLen + vc_sad[v_idx].ahIcvPadLen) / 4 - 2; //Update IPv6 payload based on the calculated ICV + padding v_activeIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (p_ipv6Packet); //compute icv if (vc_sad[v_spi].ahIcvLen != 0) { if (vc_sad[v_idx].ahIcvLen != 0) { // work on a temporary copy in order to be able to zero mutable fields v_tempIpv6Packet := v_activeIpv6Packet; Loading @@ -301,7 +310,8 @@ group rfc2460Root_Functions { // Compute ICV // !!!!! PS: changed ahIntegrityKey to ahIntegrityKeyInitiator, CHECK !!!!! v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := fx_mac( vc_sad[v_spi].ahIntegrityAlgo , vc_sad[v_spi].ahIntegrityKeyInitiator, fx_encodeMessage(v_tempIpv6Packet)); v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := fx_mac( vc_sad[v_idx].ahIntegrityAlgo , vc_sad[v_idx].ahIntegrityKeyInitiator, fx_encodeMessage(v_tempIpv6Packet)); } } Loading Loading @@ -1063,6 +1073,8 @@ group rfc4303Esp_ExtHdrFunctions { //Build original packet p_originalIpv6Packet.ipv6Hdr := p_ipv6Packet.ipv6Hdr; p_originalIpv6Packet.ipv6Hdr.nextHeader := p_espHeader.nextHeader; if (ispresent(p_espHeader.espPayload.espIpDatagram.extHdrList)) { p_originalIpv6Packet.extHdrList := p_espHeader.espPayload.espIpDatagram.extHdrList; } Loading Loading @@ -1161,6 +1173,30 @@ group rfc4303Esp_ExtHdrFunctions { }//end f_setEspHeader */ /* * @desc * This function is used to retrieve the index * within the SecurityAssociationList corresponding * to the given SPI. * * @param p_sad SecurityAssociationList to be treated * @param p_spi SPI used to search for the list index * @param p_idx Index of the SA corresponding to p_spi * @return execution status */ function f_getSaBySpi(in Sad p_sad, in integer p_spi, out integer p_idx) return FncRetCode { var integer i := 0; for (i:=0; i<sizeof(p_sad); i:=i+1) { if (p_sad[i].spi == p_spi) { p_idx := i; return e_success; } } log("**** f_getSaBySpi: Could not find SPI! ****") ; return e_error; } }//end group rfc4303Esp_ExtHdrFunctions Loading ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn +42 −42 Original line number Diff line number Diff line Loading @@ -335,7 +335,7 @@ group IcmpAndEspFns { var FncRetCode v_ret := e_error; var EchoReply v_msg; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { v_ret := f_sendEchoRequest ( m_echoRequest_esp ( Loading @@ -344,8 +344,8 @@ group IcmpAndEspFns { p_paramsIut.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr, vc_sad[0].spi, vc_sad[0].seqNr, m_espIpDatagram( omit, m_ipv6Payload_echoRequestMsg( Loading @@ -355,7 +355,7 @@ group IcmpAndEspFns { c_icmpHdr)) ) ); //increment SA-based seqNr vc_sad[c_saOut].seqNr := vc_sad[c_saOut].seqNr + 1; vc_sad[0].seqNr := vc_sad[0].seqNr + 1; if (v_ret != e_success) {return v_ret;} tc_ac.start; Loading @@ -367,7 +367,7 @@ group IcmpAndEspFns { p_paramsTn.gla, m_extHdrList_1Elem ( mw_extHdr_espHeader( vc_sad[c_saIn].spi, vc_sad[0].spi, ?, m_espIpDatagram( omit, Loading @@ -379,7 +379,7 @@ group IcmpAndEspFns { )) -> value v_msg { tc_ac.stop; //Save seqNr of IN SAD vc_sad[c_saIn].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; vc_sad[0].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; v_ret := e_success; } [] tc_ac.timeout{ Loading @@ -396,8 +396,8 @@ group IcmpAndEspFns { p_paramsTunnelEnd.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr, vc_sad[0].spi, vc_sad[0].seqNr, m_espIpDatagram( m_extHdrList_1Elem( m_extHdr_tunneledHeader ( Loading @@ -411,7 +411,7 @@ group IcmpAndEspFns { c_tunneledIpHdr)) ) ); //increment SA-based seqNr vc_sad[c_saOut].seqNr := vc_sad[c_saOut].seqNr + 1; vc_sad[0].seqNr := vc_sad[0].seqNr + 1; if (v_ret != e_success) {return v_ret;} tc_ac.start; Loading @@ -423,7 +423,7 @@ group IcmpAndEspFns { p_paramsTunnelStart.gla, mw_extHdrList_1Elem_superSet ( mw_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, ?, m_espIpDatagram( m_extHdrList_1Elem( Loading @@ -439,7 +439,7 @@ group IcmpAndEspFns { )) -> value v_msg { tc_ac.stop; //Save seqNr of IN SAD vc_sad[c_saIn].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; vc_sad[0].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; v_ret := e_success; } [] tc_ac.timeout{ Loading Loading @@ -467,7 +467,7 @@ group IcmpAndEspFns { return FncRetCode { var FncRetCode v_ret := e_error; if (vc_sad[c_saOut].ipSecProtocolMode != e_transportMode) { if (vc_sad[0].ipSecProtocolMode != e_transportMode) { log("**** f_replyToEchoReq_transportMode; Error SA does not indicate transport Mode, but transport Mode is required****"); return e_error; } Loading @@ -481,7 +481,7 @@ group IcmpAndEspFns { p_paramsTn.gla, m_extHdrList_1Elem ( mw_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr, m_espIpDatagram( omit, Loading @@ -507,7 +507,7 @@ group IcmpAndEspFns { p_paramsIut.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr + 1, m_espIpDatagram( omit, Loading Loading @@ -539,7 +539,7 @@ group IcmpAndEspFns { return FncRetCode { var FncRetCode v_ret := e_error; if (vc_sad[c_saOut].ipSecProtocolMode != e_tunnelMode) { if (vc_sad[0].ipSecProtocolMode != e_tunnelMode) { log("**** f_replyToEchoReq_tunnelMode; Error SA does not indicate tunnel Mode, but tunnel Mode is required****"); return e_error; } Loading @@ -553,7 +553,7 @@ group IcmpAndEspFns { p_paramsTunnelStart.gla, mw_extHdrList_1Elem_superSet ( mw_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr, m_espIpDatagram( m_extHdrList_1Elem( Loading Loading @@ -583,7 +583,7 @@ group IcmpAndEspFns { p_paramsTunnelEnd.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr + 1, m_espIpDatagram( m_extHdrList_1Elem( Loading Loading @@ -627,15 +627,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsTn.gla, p_paramsIut.gla, c_defId, Loading @@ -649,8 +649,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), vc_sad[0].spi, vc_sad[0].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.gla, Loading Loading @@ -678,15 +678,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsRt.gla, p_paramsIut.gla, p_id, Loading @@ -698,8 +698,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsRt.gla, p_paramsIut.gla, p_id, Loading @@ -720,15 +720,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsTn.lla, p_paramsIut.lla, c_defId, Loading @@ -742,8 +742,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), vc_sad[0].spi, vc_sad[0].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.lla, Loading @@ -767,15 +767,15 @@ group IcmpAndAuthHeaderFns { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_fragHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), // ICV is set to 0 before authentication vc_sad[0].spi, vc_sad[0].seqNr), // ICV is set to 0 before authentication m_extHdr_fragmentHeader( c_icmpHdr, c_fragOffset2, Loading @@ -792,8 +792,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_3Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), vc_sad[0].spi, vc_sad[0].seqNr), m_extHdr_tunneledHeader ( c_fragHdr, p_paramsRt.gla, Loading Loading @@ -821,7 +821,7 @@ group IcmpAndAuthHeaderFns { var NeighborSolicitation v_nbrSol; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_nbrSol := valueof(m_nbrSol_extHdr ( c_authHdr, Loading @@ -831,8 +831,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)))); // ICV is set to 0 before authentication vc_sad[0].spi, vc_sad[0].seqNr)))); // ICV is set to 0 before authentication }else{ // Generate a Neigbor Solicitation message with Authentication Header in tunnel mode v_nbrSol := valueof(m_nbrSol_extHdr ( Loading @@ -843,8 +843,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)))); vc_sad[0].spi, vc_sad[0].seqNr)))); } return v_nbrSol; }// end f_generateNrbSolWithAh Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -449,7 +449,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { v_ret := fx_calculateKEYMATandDistribute(p_ikeSad.ikePseudoRandomFunction, p_ikeSad.sevenSecrets.sK_d, (p_ikeSad.nI & p_ikeSad.nR), v_encIntKeys) v_encIntKeys); if (v_ret != e_success) {return v_ret;} Loading Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +48 −12 Original line number Diff line number Diff line Loading @@ -171,14 +171,19 @@ group rfc2460Root_Functions { // Active packet has to be updated once the recursion call returns else if (ischosen(v_activeIpv6Packet.extHdrList[i].espHeader)) { var integer v_idx := -1; if (f_getSaBySpi(vc_sad, v_activeIpv6Packet.extHdrList[i].espHeader.spi, v_idx) == e_error) { return e_error; } // set IV if needed. // Payload length may change. if (vc_sad[v_activeIpv6Packet.extHdrList[i].espHeader.spi].espEncryptionAlgo == e_encr_null) { if (vc_sad[v_idx].espEncryptionAlgo == e_encr_null) { v_activeIpv6Packet.extHdrList[i].espHeader.espPayload.iv := omit; } else { v_activeIpv6Packet.extHdrList[i].espHeader.espPayload.iv := vc_sad[c_saOut].espIv; //int2oct(128, f_getEncryptionIvLen(vc_sad[v_activeIpv6Packet.extHdrList[i].espHeader.spi].espEncryptionAlgo)); v_activeIpv6Packet.extHdrList[i].espHeader.espPayload.iv := vc_sad[v_idx].espIv; //int2oct(128, f_getEncryptionIvLen(vc_sad[v_idx].espEncryptionAlgo)); } v_ret := f_getOriginalIpv6Packet( Loading Loading @@ -268,30 +273,34 @@ group rfc2460Root_Functions { and ischosen(v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader)) { //Set Dummy ICV of correct length v_spi := v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.securityParametersIndex; if (vc_sad[v_spi].ahIcvLen == 0) { var integer v_idx := -1; if (f_getSaBySpi(vc_sad, v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.securityParametersIndex, v_idx) == e_error) { return e_error; } if (vc_sad[v_idx].ahIcvLen == 0) { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := omit; } else { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := int2oct(0, vc_sad[v_spi].ahIcvLen); v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := int2oct(0, vc_sad[v_idx].ahIcvLen); } // Check ICV padding if (vc_sad[v_spi].ahIcvPadLen == 0) { if (vc_sad[v_idx].ahIcvPadLen == 0) { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icvPadding := omit; } else { v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icvPadding := int2oct(0, vc_sad[v_spi].ahIcvPadLen); v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icvPadding := int2oct(0, vc_sad[v_idx].ahIcvPadLen); } // Update AuthHeader payloadLen v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.payloadLen := (12 + vc_sad[v_spi].ahIcvLen + vc_sad[v_spi].ahIcvPadLen) / 4 - 2; v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.payloadLen := (12 + vc_sad[v_idx].ahIcvLen + vc_sad[v_idx].ahIcvPadLen) / 4 - 2; //Update IPv6 payload based on the calculated ICV + padding v_activeIpv6Packet.ipv6Hdr.payloadLength := fx_payloadLength (p_ipv6Packet); //compute icv if (vc_sad[v_spi].ahIcvLen != 0) { if (vc_sad[v_idx].ahIcvLen != 0) { // work on a temporary copy in order to be able to zero mutable fields v_tempIpv6Packet := v_activeIpv6Packet; Loading @@ -301,7 +310,8 @@ group rfc2460Root_Functions { // Compute ICV // !!!!! PS: changed ahIntegrityKey to ahIntegrityKeyInitiator, CHECK !!!!! v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := fx_mac( vc_sad[v_spi].ahIntegrityAlgo , vc_sad[v_spi].ahIntegrityKeyInitiator, fx_encodeMessage(v_tempIpv6Packet)); v_activeIpv6Packet.extHdrList[v_authHdrIndex].authHeader.icv := fx_mac( vc_sad[v_idx].ahIntegrityAlgo , vc_sad[v_idx].ahIntegrityKeyInitiator, fx_encodeMessage(v_tempIpv6Packet)); } } Loading Loading @@ -1063,6 +1073,8 @@ group rfc4303Esp_ExtHdrFunctions { //Build original packet p_originalIpv6Packet.ipv6Hdr := p_ipv6Packet.ipv6Hdr; p_originalIpv6Packet.ipv6Hdr.nextHeader := p_espHeader.nextHeader; if (ispresent(p_espHeader.espPayload.espIpDatagram.extHdrList)) { p_originalIpv6Packet.extHdrList := p_espHeader.espPayload.espIpDatagram.extHdrList; } Loading Loading @@ -1161,6 +1173,30 @@ group rfc4303Esp_ExtHdrFunctions { }//end f_setEspHeader */ /* * @desc * This function is used to retrieve the index * within the SecurityAssociationList corresponding * to the given SPI. * * @param p_sad SecurityAssociationList to be treated * @param p_spi SPI used to search for the list index * @param p_idx Index of the SA corresponding to p_spi * @return execution status */ function f_getSaBySpi(in Sad p_sad, in integer p_spi, out integer p_idx) return FncRetCode { var integer i := 0; for (i:=0; i<sizeof(p_sad); i:=i+1) { if (p_sad[i].spi == p_spi) { p_idx := i; return e_success; } } log("**** f_getSaBySpi: Could not find SPI! ****") ; return e_error; } }//end group rfc4303Esp_ExtHdrFunctions Loading
ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn +42 −42 Original line number Diff line number Diff line Loading @@ -335,7 +335,7 @@ group IcmpAndEspFns { var FncRetCode v_ret := e_error; var EchoReply v_msg; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { v_ret := f_sendEchoRequest ( m_echoRequest_esp ( Loading @@ -344,8 +344,8 @@ group IcmpAndEspFns { p_paramsIut.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr, vc_sad[0].spi, vc_sad[0].seqNr, m_espIpDatagram( omit, m_ipv6Payload_echoRequestMsg( Loading @@ -355,7 +355,7 @@ group IcmpAndEspFns { c_icmpHdr)) ) ); //increment SA-based seqNr vc_sad[c_saOut].seqNr := vc_sad[c_saOut].seqNr + 1; vc_sad[0].seqNr := vc_sad[0].seqNr + 1; if (v_ret != e_success) {return v_ret;} tc_ac.start; Loading @@ -367,7 +367,7 @@ group IcmpAndEspFns { p_paramsTn.gla, m_extHdrList_1Elem ( mw_extHdr_espHeader( vc_sad[c_saIn].spi, vc_sad[0].spi, ?, m_espIpDatagram( omit, Loading @@ -379,7 +379,7 @@ group IcmpAndEspFns { )) -> value v_msg { tc_ac.stop; //Save seqNr of IN SAD vc_sad[c_saIn].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; vc_sad[0].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; v_ret := e_success; } [] tc_ac.timeout{ Loading @@ -396,8 +396,8 @@ group IcmpAndEspFns { p_paramsTunnelEnd.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr, vc_sad[0].spi, vc_sad[0].seqNr, m_espIpDatagram( m_extHdrList_1Elem( m_extHdr_tunneledHeader ( Loading @@ -411,7 +411,7 @@ group IcmpAndEspFns { c_tunneledIpHdr)) ) ); //increment SA-based seqNr vc_sad[c_saOut].seqNr := vc_sad[c_saOut].seqNr + 1; vc_sad[0].seqNr := vc_sad[0].seqNr + 1; if (v_ret != e_success) {return v_ret;} tc_ac.start; Loading @@ -423,7 +423,7 @@ group IcmpAndEspFns { p_paramsTunnelStart.gla, mw_extHdrList_1Elem_superSet ( mw_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, ?, m_espIpDatagram( m_extHdrList_1Elem( Loading @@ -439,7 +439,7 @@ group IcmpAndEspFns { )) -> value v_msg { tc_ac.stop; //Save seqNr of IN SAD vc_sad[c_saIn].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; vc_sad[0].seqNr := v_msg.extHdrList[0].espHeader.seqNbr; v_ret := e_success; } [] tc_ac.timeout{ Loading Loading @@ -467,7 +467,7 @@ group IcmpAndEspFns { return FncRetCode { var FncRetCode v_ret := e_error; if (vc_sad[c_saOut].ipSecProtocolMode != e_transportMode) { if (vc_sad[0].ipSecProtocolMode != e_transportMode) { log("**** f_replyToEchoReq_transportMode; Error SA does not indicate transport Mode, but transport Mode is required****"); return e_error; } Loading @@ -481,7 +481,7 @@ group IcmpAndEspFns { p_paramsTn.gla, m_extHdrList_1Elem ( mw_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr, m_espIpDatagram( omit, Loading @@ -507,7 +507,7 @@ group IcmpAndEspFns { p_paramsIut.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr + 1, m_espIpDatagram( omit, Loading Loading @@ -539,7 +539,7 @@ group IcmpAndEspFns { return FncRetCode { var FncRetCode v_ret := e_error; if (vc_sad[c_saOut].ipSecProtocolMode != e_tunnelMode) { if (vc_sad[0].ipSecProtocolMode != e_tunnelMode) { log("**** f_replyToEchoReq_tunnelMode; Error SA does not indicate tunnel Mode, but tunnel Mode is required****"); return e_error; } Loading @@ -553,7 +553,7 @@ group IcmpAndEspFns { p_paramsTunnelStart.gla, mw_extHdrList_1Elem_superSet ( mw_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr, m_espIpDatagram( m_extHdrList_1Elem( Loading Loading @@ -583,7 +583,7 @@ group IcmpAndEspFns { p_paramsTunnelEnd.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[c_saOut].spi, vc_sad[0].spi, p_seqNr + 1, m_espIpDatagram( m_extHdrList_1Elem( Loading Loading @@ -627,15 +627,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsTn.gla, p_paramsIut.gla, c_defId, Loading @@ -649,8 +649,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), vc_sad[0].spi, vc_sad[0].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.gla, Loading Loading @@ -678,15 +678,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsRt.gla, p_paramsIut.gla, p_id, Loading @@ -698,8 +698,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsRt.gla, p_paramsIut.gla, p_id, Loading @@ -720,15 +720,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)), vc_sad[0].spi, vc_sad[0].seqNr)), p_paramsTn.lla, p_paramsIut.lla, c_defId, Loading @@ -742,8 +742,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), vc_sad[0].spi, vc_sad[0].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.lla, Loading @@ -767,15 +767,15 @@ group IcmpAndAuthHeaderFns { var EchoRequest v_echoRequest; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_fragHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), // ICV is set to 0 before authentication vc_sad[0].spi, vc_sad[0].seqNr), // ICV is set to 0 before authentication m_extHdr_fragmentHeader( c_icmpHdr, c_fragOffset2, Loading @@ -792,8 +792,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_3Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr), vc_sad[0].spi, vc_sad[0].seqNr), m_extHdr_tunneledHeader ( c_fragHdr, p_paramsRt.gla, Loading Loading @@ -821,7 +821,7 @@ group IcmpAndAuthHeaderFns { var NeighborSolicitation v_nbrSol; if (vc_sad[c_saOut].ipSecProtocolMode == e_transportMode) { if (vc_sad[0].ipSecProtocolMode == e_transportMode) { // Transport mode v_nbrSol := valueof(m_nbrSol_extHdr ( c_authHdr, Loading @@ -831,8 +831,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)))); // ICV is set to 0 before authentication vc_sad[0].spi, vc_sad[0].seqNr)))); // ICV is set to 0 before authentication }else{ // Generate a Neigbor Solicitation message with Authentication Header in tunnel mode v_nbrSol := valueof(m_nbrSol_extHdr ( Loading @@ -843,8 +843,8 @@ group IcmpAndAuthHeaderFns { m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_tunneledIpHdr, vc_sad[c_saOut].spi, vc_sad[c_saOut].seqNr)))); vc_sad[0].spi, vc_sad[0].seqNr)))); } return v_nbrSol; }// end f_generateNrbSolWithAh Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -449,7 +449,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { v_ret := fx_calculateKEYMATandDistribute(p_ikeSad.ikePseudoRandomFunction, p_ikeSad.sevenSecrets.sK_d, (p_ikeSad.nI & p_ikeSad.nR), v_encIntKeys) v_encIntKeys); if (v_ret != e_success) {return v_ret;} Loading