Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ModuleParameters.ttcn +7 −7 Original line number Diff line number Diff line Loading @@ -37,22 +37,22 @@ module LibIpv6_ModuleParameters { modulepar { IpSecProtocol PX_IP_SEC_PROTOCOL := e_esp } /* * @desc Which protocol mode shall be used in vc_sad[c_saOut]? * @desc Which protocol mode shall be used in vc_sad[c_saRes]? */ modulepar { IpSecProtocolMode PX_IP_SEC_PROTOCOL_MODE := e_transportMode } /* * @desc Which Algo mode shall be used for Encryption in vc_sad[c_saOut]? * @desc Which Algo mode shall be used for Encryption in vc_sad[c_saRes]? */ modulepar { EncryptionAlgo PX_ENCRYPTION_ALGO := e_encr_3Des } /* * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saOut]? * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saRes]? */ modulepar { IntegrityAlgo PX_INTEGRITY_ALGO := e_auth_hmacSha1_96 } /* * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saOut]? * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saRes]? */ // modulepar { CombinedModeAlgo PX_COMBINED_MODE_ALGO := e_null } Loading @@ -67,17 +67,17 @@ module LibIpv6_ModuleParameters { //modulepar {octetstring PX_IV := '000102030405'O } /* * @desc Key for integrity vc_sad[c_saOut] * @desc Key for integrity vc_sad[c_saRes] */ modulepar {octetstring PX_INTEGRITY_KEY := '000102030405'O } /* * @desc Key for encryption in vc_sad[c_saOut] * @desc Key for encryption in vc_sad[c_saRes] */ modulepar {octetstring PX_ESP_ENCR_KEY := 'A1A2A3A4'O} /* * @desc Key for combined mode in vc_sad[c_saOut] * @desc Key for combined mode in vc_sad[c_saRes] */ // modulepar {octetstring PX_COMBINED_MODE_KEY := 'B1B2B3B4'O} Loading ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn +31 −31 Original line number Diff line number Diff line Loading @@ -467,7 +467,7 @@ group IcmpAndEspFns { return FncRetCode { var FncRetCode v_ret := e_error; if (vc_sad[0].ipSecProtocolMode != e_transportMode) { if (vc_sad[c_saIni].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[0].spi, vc_sad[c_saIni].spi, p_seqNr, m_espIpDatagram( omit, Loading @@ -507,7 +507,7 @@ group IcmpAndEspFns { p_paramsIut.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[0].spi, vc_sad[c_saRes].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[0].ipSecProtocolMode != e_tunnelMode) { if (vc_sad[c_saIni].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[0].spi, vc_sad[c_saIni].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[0].spi, vc_sad[c_saRes].spi, p_seqNr + 1, m_espIpDatagram( m_extHdrList_1Elem( Loading Loading @@ -627,15 +627,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.gla, Loading Loading @@ -678,15 +678,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr)), p_paramsRt.gla, p_paramsIut.gla, p_id, Loading @@ -720,15 +720,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.lla, Loading @@ -767,15 +767,15 @@ group IcmpAndAuthHeaderFns { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_fragHdr, vc_sad[0].spi, vc_sad[0].seqNr), // ICV is set to 0 before authentication vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr), m_extHdr_tunneledHeader ( c_fragHdr, p_paramsRt.gla, Loading Loading @@ -821,7 +821,7 @@ group IcmpAndAuthHeaderFns { var NeighborSolicitation v_nbrSol; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr)))); // ICV is set to 0 before authentication vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr)))); vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr)))); } return v_nbrSol; }// end f_generateNrbSolWithAh Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +35 −3 Original line number Diff line number Diff line Loading @@ -786,7 +786,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { vc_ikeSad[0].messageID := vc_ikeSad[0].messageID + 1; v_ret := f_analyzeIkeAuthReq(v_ipv6Packet,v_protocolId); p_protocolId := v_protocolId; vc_sad[0].ipSecProtocolMode := e_transportMode; vc_sad[c_saIni].ipSecProtocolMode := e_transportMode; } // Tunnel mode, Notify payload requesting 'UseTransportMode' is not included in IKE_AUTH request Loading @@ -803,7 +803,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { vc_ikeSad[0].messageID := vc_ikeSad[0].messageID + 1; v_ret := f_analyzeIkeAuthReq(v_ipv6Packet,v_protocolId); p_protocolId := v_protocolId; vc_sad[0].ipSecProtocolMode := e_tunnelMode; vc_sad[c_saIni].ipSecProtocolMode := e_tunnelMode; } [] tc_wait.timeout Loading Loading @@ -1189,7 +1189,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { mw_encryptedPLL(mw_ikeAuthRspTransportModePLL))) -> value v_ipv6Packet { tc_wait.stop; if (vc_sad[0].ipSecProtocolMode == e_transportMode) if (vc_sad[c_saIni].ipSecProtocolMode == e_transportMode) { vc_ikeSad[0].messageID := vc_ikeSad[0].messageID + 1; v_ret := f_analyzeIkeAuthRsp(v_ipv6Packet);} else Loading Loading @@ -2227,6 +2227,38 @@ group deleteSAFns { ); if (v_ret != e_success) { return v_ret;} tc_wait.start; alt { [] ipPort.receive( mw_ikeInfoResp ( p_addrIut, p_addrTn, vc_ikeSad[0].udpIutPort, vc_ikeSad[0].udpTnPort, vc_ikeSad[0].spiInitiator, vc_ikeSad[0].spiResponder, vc_ikeSad[0].messageID, m_ikePlList_1Elem( mw_encryptedPL( m_ikePlList_1Elem(mw_delIkeSaPL) ) ) ) ) { tc_wait.stop; log("**** f_delIkeSa: IKE SA deleted successfully! **** "); v_ret := e_success; } [] tc_wait.timeout { v_ret := e_timeout; log("**** f_delIkeSa: ERROR: tc_wait.timeout, IKE SA not deleted! **** "); v_ret := e_error; } } // end alt return v_ret; } // end deleteSAFns Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn +83 −0 Original line number Diff line number Diff line Loading @@ -416,6 +416,87 @@ } }//end group ikeInfoRequestTemplates group ikeInfoResponseTemplates { template InformationalResponse mw_ikeInfoResp (template Ipv6Address p_src, template Ipv6Address p_dst, UInt16 p_udpSourcePort, UInt16 p_udpDestPort, Oct8 p_initiatorSpi, Oct8 p_responderSpi, UInt32 p_messageID, template IkePayloadList p_ikepayloads) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { ikeMsg := { sourcePort := p_udpSourcePort, destPort := p_udpDestPort, msgLength := ?, checksum := ?, padding := c_4ZeroBytes ifpresent, // IKEv2 Header ikev2Header := { initiatorSpi := p_initiatorSpi, responderSpi := p_responderSpi, nextPayload := ?, majorVersion := c_ikeMajorVersion2, minorVersion := c_ikeMinorVersion0, exchangeType := c_informational, twoXFlags := ?, rFlag := c_rFlagResponse, vFlag := c_vFlag, iFlag := c_iFlagResponder, threeXFlags := ?, messageID := p_messageID, messageLength := ? }, // IKEv2 Payloads payloadList := p_ikepayloads }} } template InformationalResponse m_ikeInfoResp (template Ipv6Address p_src, template Ipv6Address p_dst, UInt16 p_udpsourcePort, UInt16 p_udpdestPort, Oct8 p_initiatorSpi, Oct8 p_responderSpi, UInt1 p_iFlag, UInt8 p_nextPayload, UInt32 p_messageID, template IkePayloadList p_ikepayloads) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { ikeMsg := { sourcePort := p_udpsourcePort, destPort := p_udpdestPort, msgLength := c_uInt16Zero, checksum := c_2ZeroBytes, padding := omit, // IKEv2 Header ikev2Header := { initiatorSpi := p_initiatorSpi, responderSpi := p_responderSpi, nextPayload := p_nextPayload, majorVersion := c_ikeMajorVersion2, minorVersion := c_ikeMinorVersion0, exchangeType := c_informational, twoXFlags := 0, rFlag := c_rFlagResponse, vFlag := c_vFlag, iFlag := p_iFlag, threeXFlags := 0, messageID := p_messageID, messageLength := 0 }, // IKEv2 Payloads payloadList := p_ikepayloads } } } }//end group ikeInfoResponseTemplates group payLoadListTemplates { template IkePayloadList mw_ikeSaInitReqPLL := Loading Loading @@ -919,6 +1000,7 @@ group identificationPLTmplts { nextPayload := ?, criticalFlag := 0, reserved := ?, payloadLength := ?, protocolId := c_protocolIke, spiSize := c_spiSize0, numberOfSpi := c_uInt16Zero, Loading @@ -931,6 +1013,7 @@ group identificationPLTmplts { nextPayload := p_nextPayload, criticalFlag := 0, reserved := c_uInt7Zero, payloadLength := 8, protocolId := c_protocolIke, spiSize := c_spiSize0, numberOfSpi := c_uInt16Zero, Loading ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn +1 −0 Original line number Diff line number Diff line Loading @@ -682,6 +682,7 @@ UInt8 nextPayload, UInt1 criticalFlag, UInt7 reserved, UInt16 payloadLength, UInt8 protocolId, UInt8 spiSize, UInt16 numberOfSpi, Loading Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ModuleParameters.ttcn +7 −7 Original line number Diff line number Diff line Loading @@ -37,22 +37,22 @@ module LibIpv6_ModuleParameters { modulepar { IpSecProtocol PX_IP_SEC_PROTOCOL := e_esp } /* * @desc Which protocol mode shall be used in vc_sad[c_saOut]? * @desc Which protocol mode shall be used in vc_sad[c_saRes]? */ modulepar { IpSecProtocolMode PX_IP_SEC_PROTOCOL_MODE := e_transportMode } /* * @desc Which Algo mode shall be used for Encryption in vc_sad[c_saOut]? * @desc Which Algo mode shall be used for Encryption in vc_sad[c_saRes]? */ modulepar { EncryptionAlgo PX_ENCRYPTION_ALGO := e_encr_3Des } /* * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saOut]? * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saRes]? */ modulepar { IntegrityAlgo PX_INTEGRITY_ALGO := e_auth_hmacSha1_96 } /* * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saOut]? * @desc Which Algo mode shall be used for Integrity in vc_sad[c_saRes]? */ // modulepar { CombinedModeAlgo PX_COMBINED_MODE_ALGO := e_null } Loading @@ -67,17 +67,17 @@ module LibIpv6_ModuleParameters { //modulepar {octetstring PX_IV := '000102030405'O } /* * @desc Key for integrity vc_sad[c_saOut] * @desc Key for integrity vc_sad[c_saRes] */ modulepar {octetstring PX_INTEGRITY_KEY := '000102030405'O } /* * @desc Key for encryption in vc_sad[c_saOut] * @desc Key for encryption in vc_sad[c_saRes] */ modulepar {octetstring PX_ESP_ENCR_KEY := 'A1A2A3A4'O} /* * @desc Key for combined mode in vc_sad[c_saOut] * @desc Key for combined mode in vc_sad[c_saRes] */ // modulepar {octetstring PX_COMBINED_MODE_KEY := 'B1B2B3B4'O} Loading
ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn +31 −31 Original line number Diff line number Diff line Loading @@ -467,7 +467,7 @@ group IcmpAndEspFns { return FncRetCode { var FncRetCode v_ret := e_error; if (vc_sad[0].ipSecProtocolMode != e_transportMode) { if (vc_sad[c_saIni].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[0].spi, vc_sad[c_saIni].spi, p_seqNr, m_espIpDatagram( omit, Loading @@ -507,7 +507,7 @@ group IcmpAndEspFns { p_paramsIut.gla, m_extHdrList_1Elem ( m_extHdr_espHeader( vc_sad[0].spi, vc_sad[c_saRes].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[0].ipSecProtocolMode != e_tunnelMode) { if (vc_sad[c_saIni].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[0].spi, vc_sad[c_saIni].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[0].spi, vc_sad[c_saRes].spi, p_seqNr + 1, m_espIpDatagram( m_extHdrList_1Elem( Loading Loading @@ -627,15 +627,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.gla, Loading Loading @@ -678,15 +678,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr)), p_paramsRt.gla, p_paramsIut.gla, p_id, Loading @@ -720,15 +720,15 @@ group IcmpAndAuthHeaderFns { { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_1Elem ( m_extHdr_AHHeaders( c_icmpHdr, vc_sad[0].spi, vc_sad[0].seqNr)), vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr), m_extHdr_tunneledHeader ( c_icmpHdr, p_paramsTn.lla, Loading @@ -767,15 +767,15 @@ group IcmpAndAuthHeaderFns { var EchoRequest v_echoRequest; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].ipSecProtocolMode == e_transportMode) { // Transport mode v_echoRequest := valueof(m_echoRequest_extHdr_noData ( c_authHdr, m_extHdrList_2Elem ( m_extHdr_AHHeaders( c_fragHdr, vc_sad[0].spi, vc_sad[0].seqNr), // ICV is set to 0 before authentication vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr), vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr), m_extHdr_tunneledHeader ( c_fragHdr, p_paramsRt.gla, Loading Loading @@ -821,7 +821,7 @@ group IcmpAndAuthHeaderFns { var NeighborSolicitation v_nbrSol; if (vc_sad[0].ipSecProtocolMode == e_transportMode) { if (vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr)))); // ICV is set to 0 before authentication vc_sad[c_saRes].spi, vc_sad[c_saRes].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[0].spi, vc_sad[0].seqNr)))); vc_sad[c_saRes].spi, vc_sad[c_saRes].seqNr)))); } return v_nbrSol; }// end f_generateNrbSolWithAh Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Functions.ttcn +35 −3 Original line number Diff line number Diff line Loading @@ -786,7 +786,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { vc_ikeSad[0].messageID := vc_ikeSad[0].messageID + 1; v_ret := f_analyzeIkeAuthReq(v_ipv6Packet,v_protocolId); p_protocolId := v_protocolId; vc_sad[0].ipSecProtocolMode := e_transportMode; vc_sad[c_saIni].ipSecProtocolMode := e_transportMode; } // Tunnel mode, Notify payload requesting 'UseTransportMode' is not included in IKE_AUTH request Loading @@ -803,7 +803,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { vc_ikeSad[0].messageID := vc_ikeSad[0].messageID + 1; v_ret := f_analyzeIkeAuthReq(v_ipv6Packet,v_protocolId); p_protocolId := v_protocolId; vc_sad[0].ipSecProtocolMode := e_tunnelMode; vc_sad[c_saIni].ipSecProtocolMode := e_tunnelMode; } [] tc_wait.timeout Loading Loading @@ -1189,7 +1189,7 @@ module LibIpv6_Rfc4306Ikev2_Functions { mw_encryptedPLL(mw_ikeAuthRspTransportModePLL))) -> value v_ipv6Packet { tc_wait.stop; if (vc_sad[0].ipSecProtocolMode == e_transportMode) if (vc_sad[c_saIni].ipSecProtocolMode == e_transportMode) { vc_ikeSad[0].messageID := vc_ikeSad[0].messageID + 1; v_ret := f_analyzeIkeAuthRsp(v_ipv6Packet);} else Loading Loading @@ -2227,6 +2227,38 @@ group deleteSAFns { ); if (v_ret != e_success) { return v_ret;} tc_wait.start; alt { [] ipPort.receive( mw_ikeInfoResp ( p_addrIut, p_addrTn, vc_ikeSad[0].udpIutPort, vc_ikeSad[0].udpTnPort, vc_ikeSad[0].spiInitiator, vc_ikeSad[0].spiResponder, vc_ikeSad[0].messageID, m_ikePlList_1Elem( mw_encryptedPL( m_ikePlList_1Elem(mw_delIkeSaPL) ) ) ) ) { tc_wait.stop; log("**** f_delIkeSa: IKE SA deleted successfully! **** "); v_ret := e_success; } [] tc_wait.timeout { v_ret := e_timeout; log("**** f_delIkeSa: ERROR: tc_wait.timeout, IKE SA not deleted! **** "); v_ret := e_error; } } // end alt return v_ret; } // end deleteSAFns Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_Templates.ttcn +83 −0 Original line number Diff line number Diff line Loading @@ -416,6 +416,87 @@ } }//end group ikeInfoRequestTemplates group ikeInfoResponseTemplates { template InformationalResponse mw_ikeInfoResp (template Ipv6Address p_src, template Ipv6Address p_dst, UInt16 p_udpSourcePort, UInt16 p_udpDestPort, Oct8 p_initiatorSpi, Oct8 p_responderSpi, UInt32 p_messageID, template IkePayloadList p_ikepayloads) := { ipv6Hdr := mw_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { ikeMsg := { sourcePort := p_udpSourcePort, destPort := p_udpDestPort, msgLength := ?, checksum := ?, padding := c_4ZeroBytes ifpresent, // IKEv2 Header ikev2Header := { initiatorSpi := p_initiatorSpi, responderSpi := p_responderSpi, nextPayload := ?, majorVersion := c_ikeMajorVersion2, minorVersion := c_ikeMinorVersion0, exchangeType := c_informational, twoXFlags := ?, rFlag := c_rFlagResponse, vFlag := c_vFlag, iFlag := c_iFlagResponder, threeXFlags := ?, messageID := p_messageID, messageLength := ? }, // IKEv2 Payloads payloadList := p_ikepayloads }} } template InformationalResponse m_ikeInfoResp (template Ipv6Address p_src, template Ipv6Address p_dst, UInt16 p_udpsourcePort, UInt16 p_udpdestPort, Oct8 p_initiatorSpi, Oct8 p_responderSpi, UInt1 p_iFlag, UInt8 p_nextPayload, UInt32 p_messageID, template IkePayloadList p_ikepayloads) := { ipv6Hdr := m_ipHdr_nextHdr_srcDst(c_udpHdr, p_src, p_dst), extHdrList := omit, ipv6Payload := { ikeMsg := { sourcePort := p_udpsourcePort, destPort := p_udpdestPort, msgLength := c_uInt16Zero, checksum := c_2ZeroBytes, padding := omit, // IKEv2 Header ikev2Header := { initiatorSpi := p_initiatorSpi, responderSpi := p_responderSpi, nextPayload := p_nextPayload, majorVersion := c_ikeMajorVersion2, minorVersion := c_ikeMinorVersion0, exchangeType := c_informational, twoXFlags := 0, rFlag := c_rFlagResponse, vFlag := c_vFlag, iFlag := p_iFlag, threeXFlags := 0, messageID := p_messageID, messageLength := 0 }, // IKEv2 Payloads payloadList := p_ikepayloads } } } }//end group ikeInfoResponseTemplates group payLoadListTemplates { template IkePayloadList mw_ikeSaInitReqPLL := Loading Loading @@ -919,6 +1000,7 @@ group identificationPLTmplts { nextPayload := ?, criticalFlag := 0, reserved := ?, payloadLength := ?, protocolId := c_protocolIke, spiSize := c_spiSize0, numberOfSpi := c_uInt16Zero, Loading @@ -931,6 +1013,7 @@ group identificationPLTmplts { nextPayload := p_nextPayload, criticalFlag := 0, reserved := c_uInt7Zero, payloadLength := 8, protocolId := c_protocolIke, spiSize := c_spiSize0, numberOfSpi := c_uInt16Zero, Loading
ttcn3/EtsiLibrary/LibIpv6/LibSec/LibIpv6_Rfc4306Ikev2_TypesAndValues.ttcn +1 −0 Original line number Diff line number Diff line Loading @@ -682,6 +682,7 @@ UInt8 nextPayload, UInt1 criticalFlag, UInt7 reserved, UInt16 payloadLength, UInt8 protocolId, UInt8 spiSize, UInt16 numberOfSpi, Loading