Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +30 −29 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ //GLA p_gla := v_prefixReady & v_interfaceIdReady; //LLA //SOL_NODE_MCA p_solNodeMca := 'FF0200000000000000000001FF'O & v_rightPartMac; Loading Loading @@ -207,9 +208,9 @@ //select ext hdrs that need special calculation for ( i := 0; i < sizeof ( p_extHdrList ) and ( v_ret != e_success ); i := i + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader ) ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions[j].mipBindingAuthorizationData ) == true ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions[j].mipBindingAuthorizationData ) == true ) { v_ret := e_success; } } Loading Loading @@ -241,9 +242,9 @@ //select ext hdrs that need special calculation for ( i := 0; i < sizeof ( p_extHdrList ) and ( v_ret != e_success ); i := i + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader ) ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions[j].mipOptBindingRefreshAdvice ) == true ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions[j].mipOptBindingRefreshAdvice ) == true ) { v_ret := e_success; } } Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn +15 −18 Original line number Diff line number Diff line Loading @@ -28,10 +28,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { const Ipv6Address c_unspecifiedAdd := c_16ZeroBytes; const UInt8 c_maxNrIpv6Address := 10; type record length(1 .. c_maxNrIpv6Address) of Ipv6Address Ipv6AddressList with { encode "present=isEOF()== false ;elements=valueOf(getTag('hdrExtLen'));" } type record length(1 .. c_maxNrIpv6Address) of Ipv6Address Ipv6AddressList; }//end group rfc4291AddressingArchitecture Loading Loading @@ -123,9 +120,9 @@ module LibIpv6_CommonRfcs_TypesAndValues { Oct6to15 linkLayerAddr } with { encode "present=bytes(0,1,1);"; encode (optionLength) "tag='SLA_optionLength';"; encode (linkLayerAddr) "length=valueOf(getTag('SLA_optionLength'))*8-2;"; variant "present=bytes(0,1,1);"; variant (optionLength) "tag='SLA_optionLength';"; variant (linkLayerAddr) "length=valueOf(getTag('SLA_optionLength'))*8-2;"; } }//end group slla Loading @@ -144,15 +141,15 @@ module LibIpv6_CommonRfcs_TypesAndValues { Oct6to15 linkLayerAddr } with { encode "present=bytes(0,1,2);"; encode (optionLength) "tag='TLA_optionLength';"; encode (linkLayerAddr) "length=valueOf(getTag('TLA_optionLength'))*8-2;"; variant "present=bytes(0,1,2);"; variant (optionLength) "tag='TLA_optionLength';"; variant (linkLayerAddr) "length=valueOf(getTag('TLA_optionLength'))*8-2;"; } }//end group tlla group mtu { group mtuOptions { const UInt8 c_mtuOption := 5; Loading @@ -167,7 +164,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt32 mtu } with { encode "present=bytes(0,1,5);" variant "present=bytes(0,1,5);" } }//end group mtu Loading @@ -188,7 +185,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt8 optTunnelEncapLimitValue } with { encode "present=bytes(0,1,4);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-3"; variant "present=bytes(0,1,4);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-3"; } }//end group rfc2473Options Loading @@ -209,7 +206,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt32 optJumboPayloadLength } with { encode "present=bytes(0,1,194);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-6"; variant "present=bytes(0,1,194);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-6"; } }//end group rfc2675Options Loading @@ -228,7 +225,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt16 optValue } with { encode "present=bytes(0,1,5);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-4"; variant "present=bytes(0,1,5);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-4"; } }//end group rfc2711Options Loading @@ -248,7 +245,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt32 advInterval } with { encode "present=bytes(1, 0x07)" variant "present=bytes(1, 0x07)" } /* Loading @@ -262,7 +259,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt16 homeAgentLifetime } with { encode "present=bytes(1, 0x08)" variant "present=bytes(1, 0x08)" } /* @desc Derived from RFCxxxx MIpv6, clause 6.2 Loading @@ -277,7 +274,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { Oct16 homeAddress } with { encode "present=bytes(0,1,201);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-18"; variant "present=bytes(0,1,201);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-18"; } group mipOptionValues { Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn +1 −65 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ //LibIpv6 import from LibIpv6_CommonRfcs_TypesAndValues { type all }; import from LibIpv6_Interface_TypesAndValues all; import from LibIpv6_Interface_TypesAndValues all; /* @desc This external function calculates the payload length * of a IPv6 packet Loading Loading @@ -75,31 +74,6 @@ // external function fx_dstOptHdrLength( in ExtensionHeader p_extHdr) // return UInt8; /* @desc Apply indicated encryption algorithm to the message. * * @param p_crypto Cryptographic function used to compute MAC * @param p_key Key used to compute the MAC * @param p_message Octetstring message * @return Message HMAC */ // external function fx_encrypt( EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) // return octetstring; external function fx_encrypt( in IpSecProtocolMode p_ipSecProtocolMode, in EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in PlaintextData p_plaintextData, out EncryptResult p_encryptResult) return FncRetCode; external function fx_decrypt( in UInt8 p_ivLength, in UInt8 p_icvLength, in IpSecProtocolMode p_ipSecProtocolMode, in EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_encryptedMsg, out PlaintextData p_plaintextData) return FncRetCode; /* @desc Apply indicated Integrity algorithm to the message. Message is an octetstring. * If e_sha1_96 is chosen, then the key input shall be ignored. Loading @@ -112,51 +86,13 @@ external function fx_integrity( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in octetstring p_message) return octetstring; /* @desc Apply indicated Integrity algorithm to the message. Message can only be an EspHeader. * If e_sha1_96 is chosen, then the key input shall be ignored. * * @param p_integrityAlgo Cryptographic function used to compute MAC * @param p_key Key used to compute the MAC * @param p_espHeader EspHeader * @param p_integrityResult Result of Integrity function * @return Message HMAC */ external function fx_integrityEspHdr( in IntegrityAlgo p_integrityAlgo, in octetstring p_key, in EspHeader p_espHeader, out IntegrityResult p_integrityResult) return FncRetCode; /* @desc This external function runs the MipHeader through Codec and returns * the octetstring representing the MipHeader * * @param p_mipHeader MIp Header to be encoded to octetstring * @param p_mipHeader Mip Header to be encoded to octetstring * @return octetstring */ external function fx_mipHdrToOct(MipHeader p_mipHeader) return octetstring; /* @desc This external function computes Integrity Check Value * @param p_ipv6Packet Ipv6 Packet * @param p_sa Security association * @return Integrity Check Value */ external function fx_integrityCheckValue( in Ipv6Packet p_ipv6Packet, in octetstring p_sa, out octetstring p_result) return FncRetCode; /* @desc This external function returns the padding octets that * are needed to align to a given Byte Boundary. * Example: Byte Boundary == 4 * If lenghtof EspHeader is 3, then result = 1 * @param p_byteBoundary Align to a multiple of this value * @param p_espHeader ESP-HDR to be aligned * @return Padding needed to align */ external function fx_byteAlignEspHeader( in UInt8 p_byteBoundary, in EspHeader p_espHeader, out octetstring p_result) return FncRetCode; }// end module LibIpv6_ExternalFunctions ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +323 −29 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ group rfc3775Mipv6_ExtHdrFunctions { //else if (ischosen(p_mipHeader.mipMessage.careOfTest) and (PX_TEST_IPSEC == true)) { //SMU TODO //} if (ischosen(p_mipHeader.mipMessage.bindingUpdate)) {//Authorization data is only needed for BU sent to CN=IUT if (ischosen(p_mipHeader.mipMessage.bindingUpdateMsg)) {//Authorization data is only needed for BU sent to CN=IUT var UInt8 v_position := 0; //Concept of including bindingAuthentication // specifiy on template level all options Loading @@ -155,19 +155,19 @@ group rfc3775Mipv6_ExtHdrFunctions { // because it's assumed that the correct value was set on template level // 3) same applies to nonceIndex etc if (f_isPresentNonceIndices(p_mipHeader.mipMessage.bindingUpdate, v_position) == e_success if (f_isPresentNonceIndices(p_mipHeader.mipMessage.bindingUpdateMsg, v_position) == e_success and vc_mipSec.mnSimuParams.receivedHomeNonceIndex != c_uInt16Zero and vc_mipSec.mnSimuParams.receivedCareOfNonceIndex != c_uInt16Zero) { p_mipHeader.mipMessage.bindingUpdate.mipOptions[v_position].mipOptNonceIndices.homeNonceIndex p_mipHeader.mipMessage.bindingUpdateMsg.mipOptions[v_position].mipOptNonceIndices.homeNonceIndex := vc_mipSec.mnSimuParams.receivedHomeNonceIndex; p_mipHeader.mipMessage.bindingUpdate.mipOptions[v_position].mipOptNonceIndices.careOfNonceIndex p_mipHeader.mipMessage.bindingUpdateMsg.mipOptions[v_position].mipOptNonceIndices.careOfNonceIndex := vc_mipSec.mnSimuParams.receivedCareOfNonceIndex; } else { log("f_setMipHeader: Error: NonceIndices included in Binding Update, but mnSimuParams.receivedCareOfNonceIndex/receivedHomeNonceIndex not initialized"); return e_error; } if (f_isPresentBindingAuthorizationDataOption(p_mipHeader.mipMessage.bindingUpdate, v_position) == e_success if (f_isPresentBindingAuthorizationDataOption(p_mipHeader.mipMessage.bindingUpdateMsg, v_position) == e_success and vc_mipSec.mnSimuParams.receivedHomeKeygenToken != c_64ZeroBits and vc_mipSec.mnSimuParams.receivedCareOfKeygenToken != c_64ZeroBits) { Loading @@ -180,7 +180,7 @@ group rfc3775Mipv6_ExtHdrFunctions { & p_dstAddr//cnAddr & fx_mipHdrToOct(p_mipHeader) ); p_mipHeader.mipMessage.bindingUpdate.mipOptions[v_position].mipBindingAuthorizationData := { p_mipHeader.mipMessage.bindingUpdateMsg.mipOptions[v_position].mipBindingAuthorizationData := { mipOptType := 5, mipOptLen := lengthof(v_bindingAuthenticator), authenticator := v_bindingAuthenticator Loading Loading @@ -217,7 +217,7 @@ group rfc3775Mipv6_ExtHdrFunctions { * @param v_position Position of the NonceIndicesOption in the MipOptionList * @return execution status */ function f_isPresentNonceIndices( in BindingUpdate p_bindingUpdate, function f_isPresentNonceIndices( in BindingUpdateMsg p_bindingUpdate, inout UInt8 v_position) runs on LibIpv6Node return FncRetCode { Loading @@ -241,7 +241,7 @@ group rfc3775Mipv6_ExtHdrFunctions { * @param v_position Position of the AuthorizationDataOption in the MipOptionList * @return execution status */ function f_isPresentBindingAuthorizationDataOption( in BindingUpdate p_bindingUpdate, function f_isPresentBindingAuthorizationDataOption( in BindingUpdateMsg p_bindingUpdate, inout UInt8 v_position) runs on LibIpv6Node return FncRetCode { Loading @@ -258,6 +258,299 @@ group rfc3775Mipv6_ExtHdrFunctions { return v_ret; }//end function f_isPresentBindingAuthorizationDataOption /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Update * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBU(template BindingUpdate p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingUpdate v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBU: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBU /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Acknowledgement * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBA(template BindingAcknowledgement p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingAcknowledgement v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBA: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBA /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Error * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBE(template BindingError p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingError v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBE: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBE /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Refresh Request * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBR(template BindingRefreshRequest p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingRefreshRequest v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBR: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBR /* * @desc This sends a IPv6 packet with MipExtHdr - Home Test * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendHot(template HomeTest p_msg) runs on LibIpv6Node return FncRetCode { //Variables var HomeTest v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHot: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendHot /* * @desc This sends a IPv6 packet with MipExtHdr - Home Test Init * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendHoti(template HomeTestInit p_msg) runs on LibIpv6Node return FncRetCode { //Variables var HomeTestInit v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHoti: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendHoti /* * @desc This sends a IPv6 packet with MipExtHdr - CareOfTestInit * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendCoti(template CareOfTestInit p_msg) runs on LibIpv6Node return FncRetCode { //Variables var CareOfTestInit v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendCoti: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendCoti /* * @desc This sends a IPv6 packet with MipExtHdr - CareOfTest * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendCot(template CareOfTest p_msg) runs on LibIpv6Node return FncRetCode { //Variables var CareOfTest v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendCoti: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendCot /* * @desc This sends a IPv6 packet with MipExtHdr - Fast Nbr Adv * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendFastNbrAdv(template FastNbrAdv p_msg) runs on LibIpv6Node return FncRetCode { //Variables var FastNbrAdv v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendFastNbrAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendFastNbrAdv }//end group rfc3775Mipv6_ExtHdrFunctions Loading @@ -267,20 +560,20 @@ group rfc4303Esp_ExtHdrFunctions { runs on LibIpv6Node { vc_sad[0] := { securityParametersIndex := f_createSpi(), sequenceNumber := c_uInt32Zero, spi := PX_SPI/*f_createSpi()*/, seqNr := c_uInt32Zero, // AH Integrity ahIntegrityAlgo := PX_INTEGRITY_ALGO, ahIntegrityKey := f_createSecretKey(), ahIntegrityKey := PX_INTEGRITY_KEY/*f_createSecretKey()*/, // ESP encryption espEncryptionAlgo := PX_ENCRYPTION_ALGO, espEncryptionKey := f_createSecretKey(), espEncryptionKey := PX_ESP_ENCR_KEY/*f_createSecretKey()*/, // ESP integrity espIntegrityAlgo := PX_INTEGRITY_ALGO, espIntegrityKey := f_createSecretKey(), espIntegrityKey := PX_INTEGRITY_KEY/*f_createSecretKey()*/, // Combined mode espCombinedModeAlgo := PX_COMBINED_MODE_ALGO, espCombinedModeKey := f_createSecretKey(), espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/, // Protocol mode ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE } Loading Loading @@ -312,18 +605,19 @@ group rfc4303Esp_ExtHdrFunctions { return v_key; }//end f_createSecretKey function f_buildEspExtHdr( in Sa p_sa, in PlaintextData p_plaintextData, out ExtensionHeader p_extensionHeader) runs on LibIpv6Node return FncRetCode { // Variables var EncryptResult v_encryptResult; var IntegrityResult v_integrityResult; var FncRetCode v_ret := e_error; var octetstring v_padding := c_1ZeroByte; // function f_buildEspExtHdr( // in Sa p_sa, // in PlaintextData p_plaintextData, // out ExtensionHeader p_extensionHeader) // runs on LibIpv6Node // return FncRetCode { // // Variables // var EncryptResult v_encryptResult; /// var IntegrityResult v_integrityResult; // var FncRetCode v_ret := e_error; // var octetstring v_padding := c_1ZeroByte; //TODO check this /* // Encrypt espPayloadData v_ret := fx_encrypt( p_sa.ipSecProtocolMode, p_sa.espEncryptionAlgo, Loading Loading @@ -369,10 +663,10 @@ group rfc4303Esp_ExtHdrFunctions { // Assign Plaintext EspPayload v_espHdr.espPayloadData.plaintextData := p_plaintextData; p_extensionHeader := {espHeader := v_espHdr}; */ // return e_success; return e_success; }//end function f_buildEspExtHdr // }//end function f_buildEspExtHdr }//end group rfc4303Esp_ExtHdrFunctions Loading ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn +123 −56 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +30 −29 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ //GLA p_gla := v_prefixReady & v_interfaceIdReady; //LLA //SOL_NODE_MCA p_solNodeMca := 'FF0200000000000000000001FF'O & v_rightPartMac; Loading Loading @@ -207,9 +208,9 @@ //select ext hdrs that need special calculation for ( i := 0; i < sizeof ( p_extHdrList ) and ( v_ret != e_success ); i := i + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader ) ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions[j].mipBindingAuthorizationData ) == true ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions[j].mipBindingAuthorizationData ) == true ) { v_ret := e_success; } } Loading Loading @@ -241,9 +242,9 @@ //select ext hdrs that need special calculation for ( i := 0; i < sizeof ( p_extHdrList ) and ( v_ret != e_success ); i := i + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader ) ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAck.mipOptions[j].mipOptBindingRefreshAdvice ) == true ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg ) ) { for ( j := 0; j < sizeof ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions ); j := j + 1 ) { if ( ischosen ( p_extHdrList[i].mipHeader.mipMessage.bindingAckMsg.mipOptions[j].mipOptBindingRefreshAdvice ) == true ) { v_ret := e_success; } } Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn +15 −18 Original line number Diff line number Diff line Loading @@ -28,10 +28,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { const Ipv6Address c_unspecifiedAdd := c_16ZeroBytes; const UInt8 c_maxNrIpv6Address := 10; type record length(1 .. c_maxNrIpv6Address) of Ipv6Address Ipv6AddressList with { encode "present=isEOF()== false ;elements=valueOf(getTag('hdrExtLen'));" } type record length(1 .. c_maxNrIpv6Address) of Ipv6Address Ipv6AddressList; }//end group rfc4291AddressingArchitecture Loading Loading @@ -123,9 +120,9 @@ module LibIpv6_CommonRfcs_TypesAndValues { Oct6to15 linkLayerAddr } with { encode "present=bytes(0,1,1);"; encode (optionLength) "tag='SLA_optionLength';"; encode (linkLayerAddr) "length=valueOf(getTag('SLA_optionLength'))*8-2;"; variant "present=bytes(0,1,1);"; variant (optionLength) "tag='SLA_optionLength';"; variant (linkLayerAddr) "length=valueOf(getTag('SLA_optionLength'))*8-2;"; } }//end group slla Loading @@ -144,15 +141,15 @@ module LibIpv6_CommonRfcs_TypesAndValues { Oct6to15 linkLayerAddr } with { encode "present=bytes(0,1,2);"; encode (optionLength) "tag='TLA_optionLength';"; encode (linkLayerAddr) "length=valueOf(getTag('TLA_optionLength'))*8-2;"; variant "present=bytes(0,1,2);"; variant (optionLength) "tag='TLA_optionLength';"; variant (linkLayerAddr) "length=valueOf(getTag('TLA_optionLength'))*8-2;"; } }//end group tlla group mtu { group mtuOptions { const UInt8 c_mtuOption := 5; Loading @@ -167,7 +164,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt32 mtu } with { encode "present=bytes(0,1,5);" variant "present=bytes(0,1,5);" } }//end group mtu Loading @@ -188,7 +185,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt8 optTunnelEncapLimitValue } with { encode "present=bytes(0,1,4);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-3"; variant "present=bytes(0,1,4);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-3"; } }//end group rfc2473Options Loading @@ -209,7 +206,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt32 optJumboPayloadLength } with { encode "present=bytes(0,1,194);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-6"; variant "present=bytes(0,1,194);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-6"; } }//end group rfc2675Options Loading @@ -228,7 +225,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt16 optValue } with { encode "present=bytes(0,1,5);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-4"; variant "present=bytes(0,1,5);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-4"; } }//end group rfc2711Options Loading @@ -248,7 +245,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt32 advInterval } with { encode "present=bytes(1, 0x07)" variant "present=bytes(1, 0x07)" } /* Loading @@ -262,7 +259,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { UInt16 homeAgentLifetime } with { encode "present=bytes(1, 0x08)" variant "present=bytes(1, 0x08)" } /* @desc Derived from RFCxxxx MIpv6, clause 6.2 Loading @@ -277,7 +274,7 @@ module LibIpv6_CommonRfcs_TypesAndValues { Oct16 homeAddress } with { encode "present=bytes(0,1,201);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-18"; variant "present=bytes(0,1,201);intTag='hdrExtIntLen',getIntTag('hdrExtIntLen')-18"; } group mipOptionValues { Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn +1 −65 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ //LibIpv6 import from LibIpv6_CommonRfcs_TypesAndValues { type all }; import from LibIpv6_Interface_TypesAndValues all; import from LibIpv6_Interface_TypesAndValues all; /* @desc This external function calculates the payload length * of a IPv6 packet Loading Loading @@ -75,31 +74,6 @@ // external function fx_dstOptHdrLength( in ExtensionHeader p_extHdr) // return UInt8; /* @desc Apply indicated encryption algorithm to the message. * * @param p_crypto Cryptographic function used to compute MAC * @param p_key Key used to compute the MAC * @param p_message Octetstring message * @return Message HMAC */ // external function fx_encrypt( EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) // return octetstring; external function fx_encrypt( in IpSecProtocolMode p_ipSecProtocolMode, in EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in PlaintextData p_plaintextData, out EncryptResult p_encryptResult) return FncRetCode; external function fx_decrypt( in UInt8 p_ivLength, in UInt8 p_icvLength, in IpSecProtocolMode p_ipSecProtocolMode, in EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_encryptedMsg, out PlaintextData p_plaintextData) return FncRetCode; /* @desc Apply indicated Integrity algorithm to the message. Message is an octetstring. * If e_sha1_96 is chosen, then the key input shall be ignored. Loading @@ -112,51 +86,13 @@ external function fx_integrity( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in octetstring p_message) return octetstring; /* @desc Apply indicated Integrity algorithm to the message. Message can only be an EspHeader. * If e_sha1_96 is chosen, then the key input shall be ignored. * * @param p_integrityAlgo Cryptographic function used to compute MAC * @param p_key Key used to compute the MAC * @param p_espHeader EspHeader * @param p_integrityResult Result of Integrity function * @return Message HMAC */ external function fx_integrityEspHdr( in IntegrityAlgo p_integrityAlgo, in octetstring p_key, in EspHeader p_espHeader, out IntegrityResult p_integrityResult) return FncRetCode; /* @desc This external function runs the MipHeader through Codec and returns * the octetstring representing the MipHeader * * @param p_mipHeader MIp Header to be encoded to octetstring * @param p_mipHeader Mip Header to be encoded to octetstring * @return octetstring */ external function fx_mipHdrToOct(MipHeader p_mipHeader) return octetstring; /* @desc This external function computes Integrity Check Value * @param p_ipv6Packet Ipv6 Packet * @param p_sa Security association * @return Integrity Check Value */ external function fx_integrityCheckValue( in Ipv6Packet p_ipv6Packet, in octetstring p_sa, out octetstring p_result) return FncRetCode; /* @desc This external function returns the padding octets that * are needed to align to a given Byte Boundary. * Example: Byte Boundary == 4 * If lenghtof EspHeader is 3, then result = 1 * @param p_byteBoundary Align to a multiple of this value * @param p_espHeader ESP-HDR to be aligned * @return Padding needed to align */ external function fx_byteAlignEspHeader( in UInt8 p_byteBoundary, in EspHeader p_espHeader, out octetstring p_result) return FncRetCode; }// end module LibIpv6_ExternalFunctions
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Functions.ttcn +323 −29 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ group rfc3775Mipv6_ExtHdrFunctions { //else if (ischosen(p_mipHeader.mipMessage.careOfTest) and (PX_TEST_IPSEC == true)) { //SMU TODO //} if (ischosen(p_mipHeader.mipMessage.bindingUpdate)) {//Authorization data is only needed for BU sent to CN=IUT if (ischosen(p_mipHeader.mipMessage.bindingUpdateMsg)) {//Authorization data is only needed for BU sent to CN=IUT var UInt8 v_position := 0; //Concept of including bindingAuthentication // specifiy on template level all options Loading @@ -155,19 +155,19 @@ group rfc3775Mipv6_ExtHdrFunctions { // because it's assumed that the correct value was set on template level // 3) same applies to nonceIndex etc if (f_isPresentNonceIndices(p_mipHeader.mipMessage.bindingUpdate, v_position) == e_success if (f_isPresentNonceIndices(p_mipHeader.mipMessage.bindingUpdateMsg, v_position) == e_success and vc_mipSec.mnSimuParams.receivedHomeNonceIndex != c_uInt16Zero and vc_mipSec.mnSimuParams.receivedCareOfNonceIndex != c_uInt16Zero) { p_mipHeader.mipMessage.bindingUpdate.mipOptions[v_position].mipOptNonceIndices.homeNonceIndex p_mipHeader.mipMessage.bindingUpdateMsg.mipOptions[v_position].mipOptNonceIndices.homeNonceIndex := vc_mipSec.mnSimuParams.receivedHomeNonceIndex; p_mipHeader.mipMessage.bindingUpdate.mipOptions[v_position].mipOptNonceIndices.careOfNonceIndex p_mipHeader.mipMessage.bindingUpdateMsg.mipOptions[v_position].mipOptNonceIndices.careOfNonceIndex := vc_mipSec.mnSimuParams.receivedCareOfNonceIndex; } else { log("f_setMipHeader: Error: NonceIndices included in Binding Update, but mnSimuParams.receivedCareOfNonceIndex/receivedHomeNonceIndex not initialized"); return e_error; } if (f_isPresentBindingAuthorizationDataOption(p_mipHeader.mipMessage.bindingUpdate, v_position) == e_success if (f_isPresentBindingAuthorizationDataOption(p_mipHeader.mipMessage.bindingUpdateMsg, v_position) == e_success and vc_mipSec.mnSimuParams.receivedHomeKeygenToken != c_64ZeroBits and vc_mipSec.mnSimuParams.receivedCareOfKeygenToken != c_64ZeroBits) { Loading @@ -180,7 +180,7 @@ group rfc3775Mipv6_ExtHdrFunctions { & p_dstAddr//cnAddr & fx_mipHdrToOct(p_mipHeader) ); p_mipHeader.mipMessage.bindingUpdate.mipOptions[v_position].mipBindingAuthorizationData := { p_mipHeader.mipMessage.bindingUpdateMsg.mipOptions[v_position].mipBindingAuthorizationData := { mipOptType := 5, mipOptLen := lengthof(v_bindingAuthenticator), authenticator := v_bindingAuthenticator Loading Loading @@ -217,7 +217,7 @@ group rfc3775Mipv6_ExtHdrFunctions { * @param v_position Position of the NonceIndicesOption in the MipOptionList * @return execution status */ function f_isPresentNonceIndices( in BindingUpdate p_bindingUpdate, function f_isPresentNonceIndices( in BindingUpdateMsg p_bindingUpdate, inout UInt8 v_position) runs on LibIpv6Node return FncRetCode { Loading @@ -241,7 +241,7 @@ group rfc3775Mipv6_ExtHdrFunctions { * @param v_position Position of the AuthorizationDataOption in the MipOptionList * @return execution status */ function f_isPresentBindingAuthorizationDataOption( in BindingUpdate p_bindingUpdate, function f_isPresentBindingAuthorizationDataOption( in BindingUpdateMsg p_bindingUpdate, inout UInt8 v_position) runs on LibIpv6Node return FncRetCode { Loading @@ -258,6 +258,299 @@ group rfc3775Mipv6_ExtHdrFunctions { return v_ret; }//end function f_isPresentBindingAuthorizationDataOption /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Update * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBU(template BindingUpdate p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingUpdate v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBU: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBU /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Acknowledgement * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBA(template BindingAcknowledgement p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingAcknowledgement v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBA: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBA /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Error * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBE(template BindingError p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingError v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBE: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBE /* * @desc This sends a IPv6 packet with MipExtHdr - Binding Refresh Request * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendBR(template BindingRefreshRequest p_msg) runs on LibIpv6Node return FncRetCode { //Variables var BindingRefreshRequest v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendBR: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendBR /* * @desc This sends a IPv6 packet with MipExtHdr - Home Test * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendHot(template HomeTest p_msg) runs on LibIpv6Node return FncRetCode { //Variables var HomeTest v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHot: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendHot /* * @desc This sends a IPv6 packet with MipExtHdr - Home Test Init * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendHoti(template HomeTestInit p_msg) runs on LibIpv6Node return FncRetCode { //Variables var HomeTestInit v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendHoti: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendHoti /* * @desc This sends a IPv6 packet with MipExtHdr - CareOfTestInit * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendCoti(template CareOfTestInit p_msg) runs on LibIpv6Node return FncRetCode { //Variables var CareOfTestInit v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendCoti: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendCoti /* * @desc This sends a IPv6 packet with MipExtHdr - CareOfTest * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendCot(template CareOfTest p_msg) runs on LibIpv6Node return FncRetCode { //Variables var CareOfTest v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendCoti: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendCot /* * @desc This sends a IPv6 packet with MipExtHdr - Fast Nbr Adv * from an IPv6 node to any NUT. * * @remark * @param p_msg MIPHeader to be sent * @return execution status */ function f_sendFastNbrAdv(template FastNbrAdv p_msg) runs on LibIpv6Node return FncRetCode { //Variables var FastNbrAdv v_ipPkt; v_ipPkt := valueof(p_msg); //set extensionHeaders if (ispresent(v_ipPkt.extHdrList)) { if(f_setExtensionHeaders( v_ipPkt.extHdrList, v_ipPkt.ipv6Hdr.sourceAddress, v_ipPkt.ipv6Hdr.destinationAddress, v_ipPkt) != e_success) { log(" **** f_sendFastNbrAdv: Error when calculating length of extension headers ****"); return e_error; } } //calc payloadLen v_ipPkt.ipv6Hdr.payloadLength := fx_payloadLength (v_ipPkt); //send ipPort.send(v_ipPkt); return e_success; }//end f_sendFastNbrAdv }//end group rfc3775Mipv6_ExtHdrFunctions Loading @@ -267,20 +560,20 @@ group rfc4303Esp_ExtHdrFunctions { runs on LibIpv6Node { vc_sad[0] := { securityParametersIndex := f_createSpi(), sequenceNumber := c_uInt32Zero, spi := PX_SPI/*f_createSpi()*/, seqNr := c_uInt32Zero, // AH Integrity ahIntegrityAlgo := PX_INTEGRITY_ALGO, ahIntegrityKey := f_createSecretKey(), ahIntegrityKey := PX_INTEGRITY_KEY/*f_createSecretKey()*/, // ESP encryption espEncryptionAlgo := PX_ENCRYPTION_ALGO, espEncryptionKey := f_createSecretKey(), espEncryptionKey := PX_ESP_ENCR_KEY/*f_createSecretKey()*/, // ESP integrity espIntegrityAlgo := PX_INTEGRITY_ALGO, espIntegrityKey := f_createSecretKey(), espIntegrityKey := PX_INTEGRITY_KEY/*f_createSecretKey()*/, // Combined mode espCombinedModeAlgo := PX_COMBINED_MODE_ALGO, espCombinedModeKey := f_createSecretKey(), espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/, // Protocol mode ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE } Loading Loading @@ -312,18 +605,19 @@ group rfc4303Esp_ExtHdrFunctions { return v_key; }//end f_createSecretKey function f_buildEspExtHdr( in Sa p_sa, in PlaintextData p_plaintextData, out ExtensionHeader p_extensionHeader) runs on LibIpv6Node return FncRetCode { // Variables var EncryptResult v_encryptResult; var IntegrityResult v_integrityResult; var FncRetCode v_ret := e_error; var octetstring v_padding := c_1ZeroByte; // function f_buildEspExtHdr( // in Sa p_sa, // in PlaintextData p_plaintextData, // out ExtensionHeader p_extensionHeader) // runs on LibIpv6Node // return FncRetCode { // // Variables // var EncryptResult v_encryptResult; /// var IntegrityResult v_integrityResult; // var FncRetCode v_ret := e_error; // var octetstring v_padding := c_1ZeroByte; //TODO check this /* // Encrypt espPayloadData v_ret := fx_encrypt( p_sa.ipSecProtocolMode, p_sa.espEncryptionAlgo, Loading Loading @@ -369,10 +663,10 @@ group rfc4303Esp_ExtHdrFunctions { // Assign Plaintext EspPayload v_espHdr.espPayloadData.plaintextData := p_plaintextData; p_extensionHeader := {espHeader := v_espHdr}; */ // return e_success; return e_success; }//end function f_buildEspExtHdr // }//end function f_buildEspExtHdr }//end group rfc4303Esp_ExtHdrFunctions Loading
ttcn3/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface_Templates.ttcn +123 −56 File changed.Preview size limit exceeded, changes collapsed. Show changes