Commit 10a96146 authored by seb's avatar seb
Browse files

Demo version for TT

parent cb83cb9f
Loading
Loading
Loading
Loading
+0 −120
Original line number Diff line number Diff line
@@ -293,124 +293,4 @@ module LibIpv6_CommonRfcs_TypesAndValues {
	} // end ipv6Options


	group security {

		//Use c_cryptoDummyByte when no message needs to be specified in fx_cryptoFunction
		const Oct1 c_cryptoDummyByte := int2oct(0,1);

		type enumerated EncryptionAlgo {
			e_null(0),
			e_tripleDes_cbc(1),
			e_aes_cbc(2),
			e_aes_ctr(3),
			e_des_cbc(4)
		}
		with {
			//encode "use=com.testingtech.ttcn.tci.*;";
			encode "TODO";
		}

		type enumerated IntegrityAlgo {
			e_null(0),
			e_hmac_sha1_96(1),
			e_aes_xcbc_mac_96(2),
			e_hmac_md5_96(3),
			e_hmac_sha1_64(4),
			e_sha1_96(1)
		}
		with {
			//encode "use=com.testingtech.ttcn.tci.*;";
			encode "TODO";
		}

		type enumerated CombinedModeAlgo {
			e_null(0)
		}
		with {
			//encode "use=com.testingtech.ttcn.tci.*;";
			encode "TODO";
		}

		type enumerated IpSecProtocolMode {
			e_transportMode (0),
			e_tunnelMode (1)
		}
		with {
			//encode "use=com.testingtech.ttcn.tci.*;";
			encode "TODO";
		}

		type enumerated IpSecProtocol{
			e_esp (0),
			e_ah (1)
		}

		type record MipSec {
			MnSimuParams mnSimuParams,
			HaSimuParams haSimuParams,
			CnSimuParams cnSimuParams
		}

		type CnSimuParams HaSimuParams;

		type record CnSimuParams {
			//Keygen Token
			UInt16 homeNonceIndex,
			octetstring homeNonce,
			Oct20 kcn,
			Bit64 homeKeygenToken,
			Bit64 careOfKeygenToken,
			Bit64 receivedHomeInitCookie,
			Oct20 kbm
		}

		type record MnSimuParams {
			//Keygen Token
			UInt16 receivedHomeNonceIndex,
			//octetstring homeNonce,
			//Oct20 kcn,
			Bit64 receivedHomeKeygenToken,
			Bit64 receivedCareOfKeygenToken,
			Bit64 homeInitCookie,
			Oct20 kbm
		}

		const UInt8 c_maxNrDa := 8;

		//Security Association
		type record Sa {
			UInt32 securityParametersIndex,
			UInt32 sequenceNumber,
			IntegrityAlgo ahIntegrityAlgo,
			octetstring	ahIntegrityKey,
			EncryptionAlgo espEncryptionAlgo,
			octetstring	espEncryptionKey,
			IntegrityAlgo espIntegrityAlgo,
			octetstring	espIntegrityKey,
			CombinedModeAlgo espCombinedModeAlgo,
			octetstring	espCombinedModeKey,
			IpSecProtocolMode ipSecProtocolMode		
		}
		with {
			//encode "use=com.testingtech.ttcn.tci.*;";
			encode "TODO";
		}

		//Security Association Database
		type record length (1 .. c_maxNrDa) of Sa Sad;

		type record EncryptResult {
			octetstring		iv optional,	
			octetstring 	encryptedData optional,
			octetstring 	tfcPadding optional
		}

		type record IntegrityExtHdr {
			octetstring icv optional	
		}


		} // end security


} // end LibIpv6_CommonRfcs_TypesAndValues
+2 −1
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@


	/* @desc    Apply indicated Integrity algorithm to the message.
	 *			If e_sha1_96 is chosen, then the key input shall be ignored.
	 *			
	 * @param  p_crypto Cryptographic function used to compute MAC
	 * @param  p_key Key used to compute the MAC
+1 −161
Original line number Diff line number Diff line
@@ -118,36 +118,6 @@ group rfc2460Root_Functions {

group rfc3775Mipv6_ExtHdrFunctions {

		//TODO check if better in CommonRfcFunctions
	function f_initMipSecParams()
	runs on LibIpv6Node {
		
	
		vc_mipSec.cnSimuParams := {
			homeNonceIndex := f_createHomeNonceIndex(),
			homeNonce := f_createHomeNonce(),
			kcn := f_createKcn(),
			homeKeygenToken := c_64ZeroBits,
			careOfKeygenToken := c_64ZeroBits,
			receivedHomeInitCookie := c_64ZeroBits,
			kbm := c_20ZeroBytes
		}

		vc_mipSec.mnSimuParams := {
			receivedHomeNonceIndex := c_uInt16Zero,
			//homeNonce := f_createHomeNonce(),
			//kcn := f_createKcn(),
			receivedHomeKeygenToken := c_64ZeroBits,
			receivedCareOfKeygenToken := c_64ZeroBits,
			homeInitCookie := f_createInitCookie(),
			kbm := c_20ZeroBytes
		}

		vc_mipSec.haSimuParams := vc_mipSec.cnSimuParams;

	}//end function f_initMipSecParams


	/*
	 * @desc 	This goes through the Mip header and calculates length, checksum
	 *			and other specific functions of the different messages.
@@ -205,136 +175,6 @@ group rfc3775Mipv6_ExtHdrFunctions {
	}
	





 	//TODO find appropriate location

	/*
	 * @desc 	This generates a random Init Cookie
	 * @return 	Init Cookie
	*/
	function f_createInitCookie()
	runs on LibIpv6Node
	return Bit64 {
		var Bit64 v_cookie := int2bit(float2int(int2float(20000-5000)*rnd())+5000, 64);

		return v_cookie;
	}//end f_createInitCookie

	/*
	 * @desc 	This generates a random Home Nonce
	 * @return 	Init Cookie
	*/
	function f_createHomeNonce()
	runs on LibIpv6Node
	return octetstring {
		var octetstring v_homeNonce := int2oct(float2int(int2float(20000-5000)*rnd())+5000, 10);

		return v_homeNonce;
	}//end f_createHomeNonce

	/*
	 * @desc 	This generates a random Home Nonce Index
	 * @return 	Init Cookie
	*/
	function f_createHomeNonceIndex()
	runs on LibIpv6Node
	return UInt16 {
		var Oct2 v_homeNonceIndex := int2oct(float2int(int2float(20000-5000)*rnd())+5000, 2);

		return oct2int(v_homeNonceIndex);
	}//end f_createHomeNonceIndex


	/*
	 * @desc 	This generates CN's secret key
	 * @return 	Init Cookie
	*/
	function f_createKcn()
	runs on LibIpv6Node
	return Oct20 {
		var Oct20 v_kcn := int2oct(float2int(int2float(20000-5000)*rnd())+5000, 20);

		return v_kcn;
	}//end f_createHomeNonce

	/*
	 * @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 Oct20 p_kcn, in Ipv6Address p_homeAddr, in octetstring p_nonce)
	runs on LibIpv6Node
	return Bit64 {
		var octetstring v_mac := c_8ZeroBytes;
		var Oct8 v_token := c_8ZeroBytes;
		var UInt8 i;

		v_mac := fx_integrity(e_hmac_sha1_64, p_kcn, p_homeAddr & p_nonce & int2oct(0,1));

		for ( i := 0; i < 8; i := i + 1 ) {
			v_token[i] := v_mac[i];
		}

		return oct2bit(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 Oct20 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_integrity(e_sha1_96, p_kcn, p_careOfAddr & p_nonce & int2oct(1,1));

		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_integrity(e_sha1_96, p_homeKeygenToken & p_careOfKeygenToken, c_cryptoDummyByte);

		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

	/*
	 * @desc 	This goes through the BindingUpdate and
	 *			checks if a AuthorizationDataOption is present.
+23 −7
Original line number Diff line number Diff line
@@ -692,12 +692,28 @@ group rfc3775Mipv6_ExtHdrTemplates {

		template MipMessage mw_hoti := {	
			homeTestInit := {
				reserved := ?,
				reserved := c_uInt16Zero,
				homeInitCookie := ?,
				mipOptions := *
			}
		}

		template MipMessage m_coti(Bit64 p_careOfInitCookie) := {	
			careOfTestInit := {
				reserved := c_uInt16Zero,
				careOfInitCookie := p_careOfInitCookie,
				mipOptions := omit
			}
		}

		template MipMessage mw_cot := {	
			careOfTest := {
				careOfNonceIndex := ?,
				careOfInitCookie := ?,
				careOfKeygenToken := ?,
				mipOptions := *
			}
		}

	}//end group mobilityHdrMessageTemplates

@@ -718,21 +734,21 @@ group rfc3775Mipv6_ExtHdrTemplates {
			p_mipOpt1, p_mipOpt2
		}

		template MipOption m_mipOpt_altCoa(template MipOptAltCoA p_mipOptAltCoA) := {
			mipOptAltCoA := p_mipOptAltCoA
		}

		template MipOption m_mipOpt_padN(template OptPadN p_optPadN) := {
			optPadN := p_optPadN
		}

		template MipOptAltCoA m_mipOptAltCoA(in template Ipv6Address p_addr) := {
		template MipOption m_mipOpt_altCoa(template MipOptAltCoA p_mipOptAltCoA) := {
			mipOptAltCoA := p_mipOptAltCoA
		}

		template MipOptAltCoA m_altCoA(in template Ipv6Address p_addr) := {
			mipOptType :=3,
			mipOptLen := 16,
			alternateCoA := p_addr
		}

		template MipOptAltCoA mw_mipOptAltCoA := {
		template MipOptAltCoA mw_altCoA := {
			mipOptType :=3,
			mipOptLen := 16,
			alternateCoA := ?
+145 −19
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ group libTestSystem {
		timer tc_ac:= PX_TAC;
		timer tc_noAc:= PX_TNOAC;
		timer tc_wait:= PX_TWAIT;
		//var Sad vc_sad;
		var MipSec vc_mipSec;
		var Sad vc_sad;
	}
@@ -756,6 +755,20 @@ group rfc4303Esp_ExtHdrTypesAndValues {
			PlaintextData		plaintextData
		}

}//end group rfc4303Esp_ExtHdrTypesAndValues

} // end extensionHeaders

group cryptoTypes {

	/*
	 * @desc HIgh level switch to select/deselect Security TCs/Fns
	*/
	type enumerated IpSecSwitch {
		e_securityOn,	
		e_securityOff
	}

	/*
	 * @desc PDU type to be used when building ESP payload for encryption/decryption
	*/
@@ -767,21 +780,134 @@ group rfc4303Esp_ExtHdrTypesAndValues {
		encode "TODO";
	}

}//end group rfc4303Esp_ExtHdrTypesAndValues
	type enumerated EncryptionAlgo {
		e_null(0),
		e_tripleDes_cbc(1),
		e_aes_cbc(2),
		e_aes_ctr(3),
		e_des_cbc(4)
	}
	with {
		//encode "use=com.testingtech.ttcn.tci.*;";
		encode "TODO";
	}

} // end extensionHeaders
	type enumerated IntegrityAlgo {
		e_null(0),
		e_hmac_sha1_96(1),//RFC4305
		e_aes_xcbc_mac_96(2),//RFC4305
		e_hmac_md5_96(3),//RFC4305
		e_sha1_96(4),//used in MIPv6 5.2.5 to calculate KBM
		e_hmac_sha1_64(5)//used in MIPv6 5.2.5 to calculate HomeKeyGenToken
	}
	with {
		//encode "use=com.testingtech.ttcn.tci.*;";
		encode "TODO";
	}

group cryptoTypes {
	type enumerated CombinedModeAlgo {
		e_null(0)
	}
	with {
		//encode "use=com.testingtech.ttcn.tci.*;";
		encode "TODO";
	}

		type record IntegrityResult {
			octetstring icv optional	
	type enumerated IpSecProtocolMode {
		e_transportMode (0),
		e_tunnelMode (1)
	}
	with {
		//encode "use=com.testingtech.ttcn.tci.*;";
		encode "TODO";
	}

	type enumerated IpSecProtocol{
		e_esp (0),
		e_ah (1)
	}

	//Security Association
	type record Sa {
		UInt32 securityParametersIndex,
		UInt32 sequenceNumber,
		IntegrityAlgo ahIntegrityAlgo,
		octetstring	ahIntegrityKey,
		EncryptionAlgo espEncryptionAlgo,
		octetstring	espEncryptionKey,
		IntegrityAlgo espIntegrityAlgo,
		octetstring	espIntegrityKey,
		CombinedModeAlgo espCombinedModeAlgo,
		octetstring	espCombinedModeKey,
		IpSecProtocolMode ipSecProtocolMode		
	}
	with {
		//encode "use=com.testingtech.ttcn.tci.*;";
		encode "TODO";
	}

	//Security Association Database
	type record length (1 .. c_maxNrDa) of Sa Sad;
	const UInt8 c_maxNrDa := 8;

	/* @desc Result of fx_encrypt
	*
	*/
	type record EncryptResult {
		octetstring		iv optional,	
		octetstring 	encryptedData optional,
		octetstring 	tfcPadding optional
	}

group mipSecurity {

	type record MipSec {
		MnSimuParams mnSimuParams,
		HaSimuParams haSimuParams,
		CnSimuParams cnSimuParams
	}

	//keep it until its clear if neeed
	type CnSimuParams HaSimuParams;

	type record CnSimuParams {
		UInt16 		nonceIndex,
		NonceList 	nonceList,
		KcnList 	kcnList,
		Bit64 		receivedHomeInitCookie,
		Bit64 		receivedCareOfInitCookie,
		Bit64 		homeKeygenToken,
		Bit64 		careOfKeygenToken,
		Oct20 		kbm
	}

	type record MnSimuParams {
		Bit64 	homeInitCookie,
		Bit64 	careOfInitCookie,
		UInt16 	receivedHomeNonceIndex,
		Bit64 	receivedHomeKeygenToken,
		UInt16 	receivedCareOfNonceIndex,
		Bit64 	receivedCareOfKeygenToken,
		Oct20 kbm
	}

	type octetstring Nonce;
	type Oct20 Kcn;
	type record length (1 .. c_maxNrNonce) of Kcn KcnList;

	type record length (1 .. c_maxNrNonce) of Nonce NonceList;
	const UInt8 c_maxNrNonce := 8;

} // end group mipSecurity

}//end group cryptoTypes


group integrityTypes {
	
	type record IntegrityResult {
		octetstring icv optional	
	}
	
}//end group integrityTypes

Loading