Loading ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_ExternalFunctions.ttcn +40 −0 Original line number Original line Diff line number Diff line Loading @@ -75,5 +75,45 @@ // external function fx_dstOptHdrLength( in ExtensionHeader p_extHdr) // external function fx_dstOptHdrLength( in ExtensionHeader p_extHdr) // return UInt8; // return UInt8; /* @desc This external function calculates a Message Authentication Code * @param p_key Key used to compute the MAC * @param p_message Octetstring message * @param p_crypto Cryptographic function used to compute MAC * @return Message HMAC */ external function fx_computeHMAC(in octetstring p_key, in octetstring p_message, CryptoFunction p_crypto ) return octetstring; /* @desc This external function calculates a SHA1 hash * @param p_message Octetstring message * @param p_crypto Cryptographic function used to compute MAC * @return Message hash */ external function fx_computeHash(in octetstring p_message, CryptoFunction p_crypto ) return octetstring; /* @desc This external function computes the Authenticator for * return routability procedure * @param p_careOfAddr Care-of address * @param p_cnAddr Address of the correspondant * @param p_ipv6Packet Ipv6 Packet * @param p_kbm Binding management key * @return Authenticator */ external function fx_bindingAuthenticator(in octetstring p_careOfAddr, in Ipv6Address p_careOfAddr, in Ipv6Address cnAddr, in Ipv6Packet p_ipv6Packet, in octetstring p_kbm) 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) return octetstring; }// end module LibIpv6_ExternalFunctions }// end module LibIpv6_ExternalFunctions ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn +88 −0 Original line number Original line Diff line number Diff line Loading @@ -267,6 +267,94 @@ group extHdrFns { return v_ret; return v_ret; }//end function f_isPresentRoutingHeaderType2 }//end function f_isPresentRoutingHeaderType2 /* * @desc This generates a random Init Cookie * @return Init Cookie */ function f_createInitCookie() runs on LibIpv6Node return Oct8 { var Oct8 v_cookie := int2oct(float2int(int2float(20000-5000)*rnd())+5000, 8); return v_cookie; }//end f_createInitCookie /* * @desc This generates a Home Keygen Token * @param p_kcn Correspondant node's secret key * @param p_homeAddr Home address * @param p_nonce Home nonce * @return Home Keygen Token */ function f_createHomeKeygenToken(in octetstring p_kcn, in Ipv6Address p_homeAddr, in octetstring p_nonce) runs on LibIpv6Node return Oct8 { var octetstring v_mac := c_8ZeroBytes; var Oct8 v_token := c_8ZeroBytes; var UInt8 i; v_mac := fx_computeHMAC(p_kcn, p_homeAddr & p_nonce & int2oct(0,1), e_sha1 ); for ( i := 0; i < 8; i := i + 1 ) { v_token[i] := v_mac[i]; } return v_token; }//end f_createHomeKeygenToken /* * @desc This generates a Care-of Keygen Token * @param p_kcn Correspondant node's secret key * @param p_careOfAddr Care-of address * @param p_nonce Home nonce * @return Care-of Keygen Token */ function f_createCareOfKeygenToken(in octetstring p_kcn, in Ipv6Address p_careOfAddr, in octetstring p_nonce) runs on LibIpv6Node return Oct8 { var octetstring v_mac := c_8ZeroBytes; var Oct8 v_token := c_8ZeroBytes; var UInt8 i; v_mac := fx_computeHMAC(p_kcn, p_careOfAddr & p_nonce & int2oct(1,1), e_sha1 ); for ( i := 0; i < 8; i := i + 1 ) { v_token[i] := v_mac[i]; } return v_token; }//end f_createCareOfKeygenToken /* * @desc This generates a Binding Management Key * @param p_homeKeygenToken Home Keygen Token * @param p_careOfKeygenToken Care-of Keygen Token * @return Binding Management Key */ function f_createBindingManagementKey(in Oct8 p_homeKeygenToken, in Oct8 p_careOfKeygenToken) runs on LibIpv6Node return Oct8 { var octetstring v_key := c_8ZeroBytes; v_key := fx_computeHash(p_homeKeygenToken & p_careOfKeygenToken, e_sha1); return v_key; }//end f_createBindingManagementKey /* * @desc This generates a random Security Parameters Index * @return Security Parameters Index */ function f_createSecurityParametersIndex() runs on LibIpv6Node return Oct4 { var Oct4 v_spi := int2oct(float2int(int2float(20000-5000)*rnd())+5000, 4); return v_spi; }//end f_createSecurityParametersIndex }//end group mipHdrFns }//end group mipHdrFns Loading ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_TypesAndValues.ttcn +10 −1 Original line number Original line Diff line number Diff line Loading @@ -824,7 +824,16 @@ module LibIpv6_MultiRfcs_TypesAndValues { } // end sharedExtensionHeaders } // end sharedExtensionHeaders group security { type enumerated CryptoFunction { e_null(0), e_sha1(1) } with { encode "use=com.testingtech.ttcn.tci.*;"; } } // end security } } Loading
ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_ExternalFunctions.ttcn +40 −0 Original line number Original line Diff line number Diff line Loading @@ -75,5 +75,45 @@ // external function fx_dstOptHdrLength( in ExtensionHeader p_extHdr) // external function fx_dstOptHdrLength( in ExtensionHeader p_extHdr) // return UInt8; // return UInt8; /* @desc This external function calculates a Message Authentication Code * @param p_key Key used to compute the MAC * @param p_message Octetstring message * @param p_crypto Cryptographic function used to compute MAC * @return Message HMAC */ external function fx_computeHMAC(in octetstring p_key, in octetstring p_message, CryptoFunction p_crypto ) return octetstring; /* @desc This external function calculates a SHA1 hash * @param p_message Octetstring message * @param p_crypto Cryptographic function used to compute MAC * @return Message hash */ external function fx_computeHash(in octetstring p_message, CryptoFunction p_crypto ) return octetstring; /* @desc This external function computes the Authenticator for * return routability procedure * @param p_careOfAddr Care-of address * @param p_cnAddr Address of the correspondant * @param p_ipv6Packet Ipv6 Packet * @param p_kbm Binding management key * @return Authenticator */ external function fx_bindingAuthenticator(in octetstring p_careOfAddr, in Ipv6Address p_careOfAddr, in Ipv6Address cnAddr, in Ipv6Packet p_ipv6Packet, in octetstring p_kbm) 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) return octetstring; }// end module LibIpv6_ExternalFunctions }// end module LibIpv6_ExternalFunctions
ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_Functions.ttcn +88 −0 Original line number Original line Diff line number Diff line Loading @@ -267,6 +267,94 @@ group extHdrFns { return v_ret; return v_ret; }//end function f_isPresentRoutingHeaderType2 }//end function f_isPresentRoutingHeaderType2 /* * @desc This generates a random Init Cookie * @return Init Cookie */ function f_createInitCookie() runs on LibIpv6Node return Oct8 { var Oct8 v_cookie := int2oct(float2int(int2float(20000-5000)*rnd())+5000, 8); return v_cookie; }//end f_createInitCookie /* * @desc This generates a Home Keygen Token * @param p_kcn Correspondant node's secret key * @param p_homeAddr Home address * @param p_nonce Home nonce * @return Home Keygen Token */ function f_createHomeKeygenToken(in octetstring p_kcn, in Ipv6Address p_homeAddr, in octetstring p_nonce) runs on LibIpv6Node return Oct8 { var octetstring v_mac := c_8ZeroBytes; var Oct8 v_token := c_8ZeroBytes; var UInt8 i; v_mac := fx_computeHMAC(p_kcn, p_homeAddr & p_nonce & int2oct(0,1), e_sha1 ); for ( i := 0; i < 8; i := i + 1 ) { v_token[i] := v_mac[i]; } return v_token; }//end f_createHomeKeygenToken /* * @desc This generates a Care-of Keygen Token * @param p_kcn Correspondant node's secret key * @param p_careOfAddr Care-of address * @param p_nonce Home nonce * @return Care-of Keygen Token */ function f_createCareOfKeygenToken(in octetstring p_kcn, in Ipv6Address p_careOfAddr, in octetstring p_nonce) runs on LibIpv6Node return Oct8 { var octetstring v_mac := c_8ZeroBytes; var Oct8 v_token := c_8ZeroBytes; var UInt8 i; v_mac := fx_computeHMAC(p_kcn, p_careOfAddr & p_nonce & int2oct(1,1), e_sha1 ); for ( i := 0; i < 8; i := i + 1 ) { v_token[i] := v_mac[i]; } return v_token; }//end f_createCareOfKeygenToken /* * @desc This generates a Binding Management Key * @param p_homeKeygenToken Home Keygen Token * @param p_careOfKeygenToken Care-of Keygen Token * @return Binding Management Key */ function f_createBindingManagementKey(in Oct8 p_homeKeygenToken, in Oct8 p_careOfKeygenToken) runs on LibIpv6Node return Oct8 { var octetstring v_key := c_8ZeroBytes; v_key := fx_computeHash(p_homeKeygenToken & p_careOfKeygenToken, e_sha1); return v_key; }//end f_createBindingManagementKey /* * @desc This generates a random Security Parameters Index * @return Security Parameters Index */ function f_createSecurityParametersIndex() runs on LibIpv6Node return Oct4 { var Oct4 v_spi := int2oct(float2int(int2float(20000-5000)*rnd())+5000, 4); return v_spi; }//end f_createSecurityParametersIndex }//end group mipHdrFns }//end group mipHdrFns Loading
ttcn3/EtsiLibrary/LibIpv6/LibMultiRfcs/LibIpv6_MultiRfcs_TypesAndValues.ttcn +10 −1 Original line number Original line Diff line number Diff line Loading @@ -824,7 +824,16 @@ module LibIpv6_MultiRfcs_TypesAndValues { } // end sharedExtensionHeaders } // end sharedExtensionHeaders group security { type enumerated CryptoFunction { e_null(0), e_sha1(1) } with { encode "use=com.testingtech.ttcn.tci.*;"; } } // end security } }