Loading NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +1 −54 Original line number Original line Diff line number Diff line Loading @@ -19,62 +19,9 @@ import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_Rfc2460Root_TypesAndValues { type all; const all }; import from LibIpv6_Rfc2460Root_TypesAndValues { type all; const all }; //import from LibIpv6_Rfc2460Root_Templates all; //import from LibIpv6_Rfc2460Root_Templates all; import from LibIpv6_Rfc3775Mipv6_ExtHdrFunctions all; group extHdrFns { /* * @desc This goes through the extension header list and calculates length, checksum * and other specific functions of the different extension headers * @param p_srcAddr Source Address of IPv6 packet * @param p_dstAddr Dst Address of IPv6 packet * @param p_extHdrList Extension Header List * @return execution status */ function f_setExtensionHeaders( inout ExtensionHeaderList p_extHdrList, in Ipv6Address p_srcAddr, in Ipv6Address p_dstAddr, in Ipv6Packet p_ipv6Packet) runs on LibIpv6Node return FncRetCode { var UInt8 i; var Ipv6Address v_homeAddress := c_16ZeroBytes; var UInt8 v_nrOfTunnelHdr := 0; for (i:=0; i<sizeof(p_extHdrList);i:=i+1) { if (ischosen(p_extHdrList[i].mipHeader)) { if (f_isPresentHomeAddressOption(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( v_homeAddress, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } else if (f_isPresentRoutingHeaderType2(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( p_srcAddr, v_homeAddress, p_extHdrList[i].mipHeader, p_ipv6Packet); } else { f_setMipHeader( p_srcAddr, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } } else if (ischosen(p_extHdrList[i].tunneledIpv6)) { v_nrOfTunnelHdr := v_nrOfTunnelHdr + 1; p_extHdrList[i].tunneledIpv6.payloadLength := fx_tunnelledPayloadLength(p_ipv6Packet, v_nrOfTunnelHdr); } /* else if (ischosen(p_extHdrList[i].)) { f_setSecurityHdr(); } */ }//end for return e_success; }//end f_setExtensionHeaders }//end group extHdrFns group calcPrefixFns { group calcPrefixFns { Loading NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn +20 −3 Original line number Original line Diff line number Diff line Loading @@ -402,8 +402,25 @@ module LibIpv6_CommonRfcs_TypesAndValues { type record EncryptResult { type record EncryptResult { octetstring iv optional, octetstring iv optional, octetstring espPayloadData, octetstring encryptedData optional, octetstring tfcPadding octetstring tfcPadding optional } type record IntegrityExtHdr { octetstring icv optional } /* * @desc PDU type to be used when building ESP payload for encryption */ //TODO as well possibe to delete this type and make Ipv6Packet.ipv6Hdr optional type record ModularIpv6Packet { Ipv6Header ipv6Hdr optional, ExtensionHeaderList extHdrList optional, Ipv6Payload ipv6Payload optional } with { encode "TODO"; } } } // end security } // end security Loading NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn +34 −12 Original line number Original line Diff line number Diff line Loading @@ -85,11 +85,15 @@ * @param p_message Octetstring message * @param p_message Octetstring message * @return Message HMAC * @return Message HMAC */ */ external function fx_encrypt( EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) // external function fx_encrypt( EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) return octetstring; // return octetstring; external function fx_encryptModularIpPacket( in IpSecProtocolMode p_ipSecProtocolMode, EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in ModularIpv6Packet p_message) external function fx_encryptModularIpPacket( in IpSecProtocolMode p_ipSecProtocolMode, return EncryptResult; in EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in ModularIpv6Packet p_message, out EncryptResult p_encryptResult) return FncRetCode; external function fx_decryptEspPayload( in UInt8 p_ivLength, in UInt8 p_icvLength, in IpSecProtocolMode p_ipSecProtocolMode, EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) external function fx_decryptEspPayload( in UInt8 p_ivLength, in UInt8 p_icvLength, in IpSecProtocolMode p_ipSecProtocolMode, EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) return DecryptedEspHeaderData; return DecryptedEspHeaderData; Loading @@ -103,11 +107,14 @@ * @param p_message Octetstring message * @param p_message Octetstring message * @return Message HMAC * @return Message HMAC */ */ external function fx_integrity( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in octetstring p_message) // external function fx_integrity( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in octetstring p_message) return octetstring; // return octetstring; external function fx_integrityExtHdr( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in ExtensionHeader p_message) external function fx_integrityEspHdr( in IntegrityAlgo p_integrityAlgo, return octetstring; in octetstring p_key, in EspHeader p_espHeader, out IntegrityResult p_integrityResult) return FncRetCode; /* @desc This external function computes the Authenticator for /* @desc This external function computes the Authenticator for Loading @@ -122,8 +129,9 @@ external function fx_bindingAuthenticator(in Ipv6Address p_careOfAddr, external function fx_bindingAuthenticator(in Ipv6Address p_careOfAddr, in Ipv6Address p_cnAddr, in Ipv6Address p_cnAddr, in Ipv6Packet p_ipv6Packet, in Ipv6Packet p_ipv6Packet, in Oct20 p_kbm) in Oct20 p_kbm, return octetstring; out octetstring p_result) return FncRetCode; /* @desc This external function computes Integrity Check Value /* @desc This external function computes Integrity Check Value * @param p_ipv6Packet Ipv6 Packet * @param p_ipv6Packet Ipv6 Packet Loading @@ -131,7 +139,21 @@ * @return Integrity Check Value * @return Integrity Check Value */ */ external function fx_integrityCheckValue( in Ipv6Packet p_ipv6Packet, external function fx_integrityCheckValue( in Ipv6Packet p_ipv6Packet, in octetstring p_sa) in octetstring p_sa, return octetstring; 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 }// end module LibIpv6_ExternalFunctions NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface.ttcn +0 −13 Original line number Original line Diff line number Diff line Loading @@ -88,19 +88,6 @@ module LibIpv6_Interface { encode "TODO"; encode "TODO"; } } /* * @desc PDU type to be used when building ESP payload for encryption */ //TODO as well possib;e todelete this type and make Ipv6Packet.ipv6Hdr optional type record ModularIpv6Packet { Ipv6Header ipv6Hdr optional, ExtensionHeaderList extHdrList optional, Ipv6Payload ipv6Payload optional } with { encode "TODO"; } //Alias //Alias //Imported from Rfc 2463 //Imported from Rfc 2463 type Ipv6Packet DestinationUnreachable; type Ipv6Packet DestinationUnreachable; Loading NewTypeStructure/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2460Root_Functions.ttcn +56 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ import from LibIpv6_ExternalFunctions all; import from LibIpv6_ExternalFunctions all; import from LibIpv6_CommonRfcs_Functions all; import from LibIpv6_CommonRfcs_Functions all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_ExtHdrFunctions all; group ipv6Packets { group ipv6Packets { Loading Loading @@ -54,6 +55,61 @@ return e_success; return e_success; }//end f_sendGeneralIpv6 }//end f_sendGeneralIpv6 group extHdrFns { /* * @desc This goes through the extension header list and calculates length, checksum * and other specific functions of the different extension headers * @param p_srcAddr Source Address of IPv6 packet * @param p_dstAddr Dst Address of IPv6 packet * @param p_extHdrList Extension Header List * @return execution status */ function f_setExtensionHeaders( inout ExtensionHeaderList p_extHdrList, in Ipv6Address p_srcAddr, in Ipv6Address p_dstAddr, in Ipv6Packet p_ipv6Packet) runs on LibIpv6Node return FncRetCode { var UInt8 i; var Ipv6Address v_homeAddress := c_16ZeroBytes; var UInt8 v_nrOfTunnelHdr := 0; for (i:=0; i<sizeof(p_extHdrList);i:=i+1) { if (ischosen(p_extHdrList[i].mipHeader)) { if (f_isPresentHomeAddressOption(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( v_homeAddress, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } else if (f_isPresentRoutingHeaderType2(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( p_srcAddr, v_homeAddress, p_extHdrList[i].mipHeader, p_ipv6Packet); } else { f_setMipHeader( p_srcAddr, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } } else if (ischosen(p_extHdrList[i].tunneledIpv6)) { v_nrOfTunnelHdr := v_nrOfTunnelHdr + 1; p_extHdrList[i].tunneledIpv6.payloadLength := fx_tunnelledPayloadLength(p_ipv6Packet, v_nrOfTunnelHdr); } /* else if (ischosen(p_extHdrList[i].)) { f_setSecurityHdr(); } */ }//end for return e_success; }//end f_setExtensionHeaders }//end group extHdrFns } //end group ipv6Packets } //end group ipv6Packets Loading Loading
NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_Functions.ttcn +1 −54 Original line number Original line Diff line number Diff line Loading @@ -19,62 +19,9 @@ import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_CommonRfcs_Templates all; import from LibIpv6_Rfc2460Root_TypesAndValues { type all; const all }; import from LibIpv6_Rfc2460Root_TypesAndValues { type all; const all }; //import from LibIpv6_Rfc2460Root_Templates all; //import from LibIpv6_Rfc2460Root_Templates all; import from LibIpv6_Rfc3775Mipv6_ExtHdrFunctions all; group extHdrFns { /* * @desc This goes through the extension header list and calculates length, checksum * and other specific functions of the different extension headers * @param p_srcAddr Source Address of IPv6 packet * @param p_dstAddr Dst Address of IPv6 packet * @param p_extHdrList Extension Header List * @return execution status */ function f_setExtensionHeaders( inout ExtensionHeaderList p_extHdrList, in Ipv6Address p_srcAddr, in Ipv6Address p_dstAddr, in Ipv6Packet p_ipv6Packet) runs on LibIpv6Node return FncRetCode { var UInt8 i; var Ipv6Address v_homeAddress := c_16ZeroBytes; var UInt8 v_nrOfTunnelHdr := 0; for (i:=0; i<sizeof(p_extHdrList);i:=i+1) { if (ischosen(p_extHdrList[i].mipHeader)) { if (f_isPresentHomeAddressOption(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( v_homeAddress, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } else if (f_isPresentRoutingHeaderType2(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( p_srcAddr, v_homeAddress, p_extHdrList[i].mipHeader, p_ipv6Packet); } else { f_setMipHeader( p_srcAddr, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } } else if (ischosen(p_extHdrList[i].tunneledIpv6)) { v_nrOfTunnelHdr := v_nrOfTunnelHdr + 1; p_extHdrList[i].tunneledIpv6.payloadLength := fx_tunnelledPayloadLength(p_ipv6Packet, v_nrOfTunnelHdr); } /* else if (ischosen(p_extHdrList[i].)) { f_setSecurityHdr(); } */ }//end for return e_success; }//end f_setExtensionHeaders }//end group extHdrFns group calcPrefixFns { group calcPrefixFns { Loading
NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_CommonRfcs_TypesAndValues.ttcn +20 −3 Original line number Original line Diff line number Diff line Loading @@ -402,8 +402,25 @@ module LibIpv6_CommonRfcs_TypesAndValues { type record EncryptResult { type record EncryptResult { octetstring iv optional, octetstring iv optional, octetstring espPayloadData, octetstring encryptedData optional, octetstring tfcPadding octetstring tfcPadding optional } type record IntegrityExtHdr { octetstring icv optional } /* * @desc PDU type to be used when building ESP payload for encryption */ //TODO as well possibe to delete this type and make Ipv6Packet.ipv6Hdr optional type record ModularIpv6Packet { Ipv6Header ipv6Hdr optional, ExtensionHeaderList extHdrList optional, Ipv6Payload ipv6Payload optional } with { encode "TODO"; } } } // end security } // end security Loading
NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_ExternalFunctions.ttcn +34 −12 Original line number Original line Diff line number Diff line Loading @@ -85,11 +85,15 @@ * @param p_message Octetstring message * @param p_message Octetstring message * @return Message HMAC * @return Message HMAC */ */ external function fx_encrypt( EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) // external function fx_encrypt( EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) return octetstring; // return octetstring; external function fx_encryptModularIpPacket( in IpSecProtocolMode p_ipSecProtocolMode, EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in ModularIpv6Packet p_message) external function fx_encryptModularIpPacket( in IpSecProtocolMode p_ipSecProtocolMode, return EncryptResult; in EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in ModularIpv6Packet p_message, out EncryptResult p_encryptResult) return FncRetCode; external function fx_decryptEspPayload( in UInt8 p_ivLength, in UInt8 p_icvLength, in IpSecProtocolMode p_ipSecProtocolMode, EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) external function fx_decryptEspPayload( in UInt8 p_ivLength, in UInt8 p_icvLength, in IpSecProtocolMode p_ipSecProtocolMode, EncryptionAlgo p_encryptionAlgo, in octetstring p_key, in octetstring p_message) return DecryptedEspHeaderData; return DecryptedEspHeaderData; Loading @@ -103,11 +107,14 @@ * @param p_message Octetstring message * @param p_message Octetstring message * @return Message HMAC * @return Message HMAC */ */ external function fx_integrity( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in octetstring p_message) // external function fx_integrity( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in octetstring p_message) return octetstring; // return octetstring; external function fx_integrityExtHdr( IntegrityAlgo p_integrityAlgo, in octetstring p_key, in ExtensionHeader p_message) external function fx_integrityEspHdr( in IntegrityAlgo p_integrityAlgo, return octetstring; in octetstring p_key, in EspHeader p_espHeader, out IntegrityResult p_integrityResult) return FncRetCode; /* @desc This external function computes the Authenticator for /* @desc This external function computes the Authenticator for Loading @@ -122,8 +129,9 @@ external function fx_bindingAuthenticator(in Ipv6Address p_careOfAddr, external function fx_bindingAuthenticator(in Ipv6Address p_careOfAddr, in Ipv6Address p_cnAddr, in Ipv6Address p_cnAddr, in Ipv6Packet p_ipv6Packet, in Ipv6Packet p_ipv6Packet, in Oct20 p_kbm) in Oct20 p_kbm, return octetstring; out octetstring p_result) return FncRetCode; /* @desc This external function computes Integrity Check Value /* @desc This external function computes Integrity Check Value * @param p_ipv6Packet Ipv6 Packet * @param p_ipv6Packet Ipv6 Packet Loading @@ -131,7 +139,21 @@ * @return Integrity Check Value * @return Integrity Check Value */ */ external function fx_integrityCheckValue( in Ipv6Packet p_ipv6Packet, external function fx_integrityCheckValue( in Ipv6Packet p_ipv6Packet, in octetstring p_sa) in octetstring p_sa, return octetstring; 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 }// end module LibIpv6_ExternalFunctions
NewTypeStructure/EtsiLibrary/LibIpv6/LibCommonRfcs/LibIpv6_Interface.ttcn +0 −13 Original line number Original line Diff line number Diff line Loading @@ -88,19 +88,6 @@ module LibIpv6_Interface { encode "TODO"; encode "TODO"; } } /* * @desc PDU type to be used when building ESP payload for encryption */ //TODO as well possib;e todelete this type and make Ipv6Packet.ipv6Hdr optional type record ModularIpv6Packet { Ipv6Header ipv6Hdr optional, ExtensionHeaderList extHdrList optional, Ipv6Payload ipv6Payload optional } with { encode "TODO"; } //Alias //Alias //Imported from Rfc 2463 //Imported from Rfc 2463 type Ipv6Packet DestinationUnreachable; type Ipv6Packet DestinationUnreachable; Loading
NewTypeStructure/EtsiLibrary/LibIpv6/LibCore/LibIpv6_Rfc2460Root_Functions.ttcn +56 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ import from LibIpv6_ExternalFunctions all; import from LibIpv6_ExternalFunctions all; import from LibIpv6_CommonRfcs_Functions all; import from LibIpv6_CommonRfcs_Functions all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_CommonRfcs_TypesAndValues all; import from LibIpv6_Rfc3775Mipv6_ExtHdrFunctions all; group ipv6Packets { group ipv6Packets { Loading Loading @@ -54,6 +55,61 @@ return e_success; return e_success; }//end f_sendGeneralIpv6 }//end f_sendGeneralIpv6 group extHdrFns { /* * @desc This goes through the extension header list and calculates length, checksum * and other specific functions of the different extension headers * @param p_srcAddr Source Address of IPv6 packet * @param p_dstAddr Dst Address of IPv6 packet * @param p_extHdrList Extension Header List * @return execution status */ function f_setExtensionHeaders( inout ExtensionHeaderList p_extHdrList, in Ipv6Address p_srcAddr, in Ipv6Address p_dstAddr, in Ipv6Packet p_ipv6Packet) runs on LibIpv6Node return FncRetCode { var UInt8 i; var Ipv6Address v_homeAddress := c_16ZeroBytes; var UInt8 v_nrOfTunnelHdr := 0; for (i:=0; i<sizeof(p_extHdrList);i:=i+1) { if (ischosen(p_extHdrList[i].mipHeader)) { if (f_isPresentHomeAddressOption(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( v_homeAddress, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } else if (f_isPresentRoutingHeaderType2(p_extHdrList, v_homeAddress) == e_success) { f_setMipHeader( p_srcAddr, v_homeAddress, p_extHdrList[i].mipHeader, p_ipv6Packet); } else { f_setMipHeader( p_srcAddr, p_dstAddr, p_extHdrList[i].mipHeader, p_ipv6Packet); } } else if (ischosen(p_extHdrList[i].tunneledIpv6)) { v_nrOfTunnelHdr := v_nrOfTunnelHdr + 1; p_extHdrList[i].tunneledIpv6.payloadLength := fx_tunnelledPayloadLength(p_ipv6Packet, v_nrOfTunnelHdr); } /* else if (ischosen(p_extHdrList[i].)) { f_setSecurityHdr(); } */ }//end for return e_success; }//end f_setExtensionHeaders }//end group extHdrFns } //end group ipv6Packets } //end group ipv6Packets Loading