Commit afc9b61a authored by schmitting's avatar schmitting
Browse files

ESN added to Sa

parent b492ee6b
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -483,7 +483,8 @@ group ipSecFns {
			espCombinedModeAlgo := PX_COMBINED_MODE_ALGO,
			espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/,
			// Protocol mode
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE,
			extentedSequenceNumbers := e_extentedSequenceNumbersNo
		}

		// SAD-IN
@@ -505,7 +506,8 @@ group ipSecFns {
			espCombinedModeAlgo := PX_COMBINED_MODE_ALGO,
			espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/,
			// Protocol mode
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE,
			extentedSequenceNumbers := e_extentedSequenceNumbersNo
		}

		// SAD-OUT
@@ -527,7 +529,8 @@ group ipSecFns {
			espCombinedModeAlgo := PX_COMBINED_MODE_ALGO,
			espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/,
			// Protocol mode
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE,
			extentedSequenceNumbers := e_extentedSequenceNumbersNo
		}

		// SAD-IN
@@ -549,7 +552,8 @@ group ipSecFns {
			espCombinedModeAlgo := PX_COMBINED_MODE_ALGO,
			espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/,
			// Protocol mode
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE,
			extentedSequenceNumbers := e_extentedSequenceNumbersNo
		}
	
		// SAD-OUT
@@ -571,7 +575,8 @@ group ipSecFns {
			espCombinedModeAlgo := PX_COMBINED_MODE_ALGO,
			espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/,
			// Protocol mode
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE,
			extentedSequenceNumbers := e_extentedSequenceNumbersNo
		}

		// SAD-IN
@@ -593,7 +598,8 @@ group ipSecFns {
			espCombinedModeAlgo := PX_COMBINED_MODE_ALGO,
			espCombinedModeKey := PX_COMBINED_MODE_KEY/*f_createSecretKey()*/,
			// Protocol mode
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE
			ipSecProtocolMode := PX_IP_SEC_PROTOCOL_MODE,
			extentedSequenceNumbers := e_extentedSequenceNumbersNo
		}

		return v_ret;
+24 −23
Original line number Diff line number Diff line
@@ -452,24 +452,24 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					tc_wait.stop;

					vc_ikeSad[0].udpSourcePort := v_ipv6Packet.ipv6Payload.ikeMsg.sourcePort;
					vc_ikeSad[c_saIn].udpDestPort := v_ipv6Packet.ipv6Payload.ikeMsg.destPort;
					vc_ikeSad[c_saIn].spiInitiator := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.initiatorSpi;
					vc_ikeSad[0].udpDestPort := v_ipv6Packet.ipv6Payload.ikeMsg.destPort;
					vc_ikeSad[0].spiInitiator := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.initiatorSpi;
					v_nextPayload := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.nextPayload;
					v_ikePayloadList := v_ipv6Packet.ipv6Payload.ikeMsg.payloadList;
					
					// get Nonce payload data
					v_ret := f_getPayload(v_ikePayloadList,v_nextPayload,c_noncePL,v_ikePayload);
					if (v_ret == e_success)
					{ vc_ikeSad[c_saIn].nI := v_ikePayload.nonce.data; }
					{ vc_ikeSad[0].nI := v_ikePayload.nonce.data; }
					else
					{ log("**** f_waitForIkeSaInitreq: ERROR: No Nonce payload in payload list **** "); }

					// get Key exchange payload data
					v_ret := f_getPayload(v_ikePayloadList,v_nextPayload,c_keyExchangePL,v_ikePayload);
					if (v_ret == e_success)
					{ vc_ikeSad[c_saIn].diffieHellmanGroup := v_ikePayload.keyExchange.dhGroup;
					{ vc_ikeSad[0].diffieHellmanGroup := v_ikePayload.keyExchange.dhGroup;
					  // calculate shared Diffie-Hellman secret
					  vc_ikeSad[c_saIn].diffieHellmanSharedSecret := fx_dHSharedSecret(vc_ikeSad[c_saIn].diffieHellmanGroup,
					  vc_ikeSad[0].diffieHellmanSharedSecret := fx_dHSharedSecret(vc_ikeSad[0].diffieHellmanGroup,
										  										  PX_IKE_DIFFIEHELLMAN_PRIVKEY,
										 										  v_ikePayload.keyExchange.data);
					}
@@ -501,7 +501,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					 	v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
													  c_transformTypeInteg,v_saTransform);
						if (v_ret == e_success)
						{vc_ikeSad[c_saIn].ikeIntegrityAlgo := v_saTransform.transformId.integAlgorithms; }
						{vc_ikeSad[0].ikeIntegrityAlgo := v_saTransform.transformId.integAlgorithms; }
						else
						{ log("**** f_waitForIkeSaInitreq: ERROR: No integrity algorithm transform in 1st proposal of Security Association payload **** "); }

@@ -509,7 +509,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					 	v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
													  c_transformTypeDh,v_saTransform);
						if (v_ret == e_success)
						{if(vc_ikeSad[c_saIn].diffieHellmanGroup != v_saTransform.transformId.diffieHellman)
						{if(vc_ikeSad[0].diffieHellmanGroup != v_saTransform.transformId.diffieHellman)
							{log("**** f_waitForIkeSaInitreq: ERROR: Diffie-Hellman transform carries value different to value from Key Exchange payload **** ");
							 return e_error;}}
						else
@@ -567,7 +567,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					// get Identification payload data
					v_ret := f_getPayload(v_ikePayloadList,v_nextPayload,c_idInitiatorPL,v_ikePayload);
					if (v_ret == e_success)
					{ vc_ikeSad[c_saIn].iDi := v_ikePayload.idInitiator.data; }
					{ vc_ikeSad[0].iDi := v_ikePayload.idInitiator.data; }
					else
					{ log("**** f_waitForAurhreq: ERROR: No Identification payload in payload list **** "); }

@@ -592,7 +592,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					{ 	
						v_protocolId := v_ikePayload.securityAssociation.saProposalList[0].protocolId;
						// put data from first proposal into vc_Sad
					/*	vc_sad[c_saIn].spi := v_ikePayload.securityAssociation.saProposalList[0].spi;
						vc_sad[c_saIn].spi := oct2int(v_ikePayload.securityAssociation.saProposalList[0].spi);

						if (v_protocolId == c_protocolEsp)
						{
@@ -600,7 +600,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
							v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
														  c_transformTypeEncr,v_saTransform);
							if (v_ret == e_success)
							{vc_sad[c_saIn].espEncryptionAlgo := v_saTransform.transformId.ikeEncryptionAlgo; }
							{vc_sad[c_saIn].espEncryptionAlgo := v_saTransform.transformId.encryptionAlgo; }
							else
							{ log("**** f_waitForIkeAuthtreq: ERROR: No encryption algorithm transform in 1st proposal of Security Association payload **** "); }
						}
@@ -620,9 +620,9 @@ module LibIpv6_Rfc4306Ikev2_Functions {
						v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
													  c_transformTypeEsn,v_saTransform);
						if (v_ret == e_success)
						{vc_sad[c_saIn].espEncryptionAlgo := v_saTransform.transformId.extentedSequenceNumbers; }
						{vc_sad[c_saIn].extentedSequenceNumbers := v_saTransform.transformId.extentedSequenceNumbers; }
						else
						{ log("**** f_waitForIkeAuthtreq: ERROR: No extended sequence numbers transform in 1st proposal of Security Association payload **** "); } */
						{ log("**** f_waitForIkeAuthtreq: ERROR: No extended sequence numbers transform in 1st proposal of Security Association payload **** "); }
					}

					else
@@ -664,29 +664,30 @@ module LibIpv6_Rfc4306Ikev2_Functions {
		alt {
			[]	ipPort.receive(mw_ikeSaInitReq(	p_src,
												p_dst,

												mw_ikeSaInitReqPLL)) -> value v_ipv6Packet
				{
					tc_wait.stop;

					vc_ikeSad[c_saIn].udpSourcePort := v_ipv6Packet.ipv6Payload.ikeMsg.sourcePort;
					vc_ikeSad[c_saIn].udpDestPort := v_ipv6Packet.ipv6Payload.ikeMsg.destPort;
					vc_ikeSad[c_saIn].spiInitiator := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.initiatorSpi;
					vc_ikeSad[0].udpSourcePort := v_ipv6Packet.ipv6Payload.ikeMsg.sourcePort;
					vc_ikeSad[0].udpDestPort := v_ipv6Packet.ipv6Payload.ikeMsg.destPort;
					vc_ikeSad[0].spiInitiator := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.initiatorSpi;
					v_nextPayload := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.nextPayload;
					v_ikePayloadList := v_ipv6Packet.ipv6Payload.ikeMsg.payloadList;
					
					// get Nonce payload data
					v_ret := f_getPayload(v_ikePayloadList,v_nextPayload,c_noncePL,v_ikePayload);
					if (v_ret == e_success)
					{ vc_ikeSad[c_saIn].nI := v_ikePayload.nonce.data; }
					{ vc_ikeSad[0].nI := v_ikePayload.nonce.data; }
					else
					{ log("**** f_waitForIkeSaInitreq: ERROR: No Nonce payload in payload list **** "); }

					// get Key exchange payload data
					v_ret := f_getPayload(v_ikePayloadList,v_nextPayload,c_keyExchangePL,v_ikePayload);
					if (v_ret == e_success)
					{ vc_ikeSad[c_saIn].diffieHellmanGroup := v_ikePayload.keyExchange.dhGroup;
					{ vc_ikeSad[0].diffieHellmanGroup := v_ikePayload.keyExchange.dhGroup;
					  // calculate shared Diffie-Hellman secret
					  vc_ikeSad[c_saIn].diffieHellmanSharedSecret := fx_dHSharedSecret(vc_ikeSad[c_saIn].diffieHellmanGroup,
					  vc_ikeSad[0].diffieHellmanSharedSecret := fx_dHSharedSecret(vc_ikeSad[0].diffieHellmanGroup,
										  										  PX_IKE_DIFFIEHELLMAN_PRIVKEY,
										 										  v_ikePayload.keyExchange.data);
					}
@@ -702,7 +703,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
						v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
													  c_transformTypeEncr,v_saTransform);
						if (v_ret == e_success)
						{vc_ikeSad[c_saIn].ikeEncryptionAlgo := v_saTransform.transformId.encryptionAlgo; }
						{vc_ikeSad[0].ikeEncryptionAlgo := v_saTransform.transformId.encryptionAlgo; }
						else
						{ log("**** f_waitForIkeSaInitreq: ERROR: No encryption algorithm transform in 1st proposal of Security Association payload **** "); }

@@ -710,7 +711,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					 	v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
													  c_transformTypePrf,v_saTransform);
						if (v_ret == e_success)
						{vc_ikeSad[c_saIn].ikePseudoRandomFunction := v_saTransform.transformId.pseudoRandomFunction; }
						{vc_ikeSad[0].ikePseudoRandomFunction := v_saTransform.transformId.pseudoRandomFunction; }
						else
						{ log("**** f_waitForIkeSaInitreq: ERROR: No pseudo random function transform in 1st proposal of Security Association payload **** "); }

@@ -718,7 +719,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					 	v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
													  c_transformTypeInteg,v_saTransform);
						if (v_ret == e_success)
						{vc_ikeSad[c_saIn].ikeIntegrityAlgo := v_saTransform.transformId.integAlgorithms; }
						{vc_ikeSad[0].ikeIntegrityAlgo := v_saTransform.transformId.integAlgorithms; }
						else
						{ log("**** f_waitForIkeSaInitreq: ERROR: No integrity algorithm transform in 1st proposal of Security Association payload **** "); }

@@ -726,7 +727,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					 	v_ret := f_getTransformOfType(v_ikePayload.securityAssociation.saProposalList,
													  c_transformTypeDh,v_saTransform);
						if (v_ret == e_success)
						{if(vc_ikeSad[c_saIn].diffieHellmanGroup != v_saTransform.transformId.diffieHellman)
						{if(vc_ikeSad[0].diffieHellmanGroup != v_saTransform.transformId.diffieHellman)
							{log("**** f_waitForIkeSaInitreq: ERROR: Diffie-Hellman transform carries value different to value from Key Exchange payload **** ");
							 return e_error;}}
						else
+2 −1
Original line number Diff line number Diff line
@@ -1034,7 +1034,8 @@
			octetstring	espIntegrityKey,
			CombinedModeAlgo espCombinedModeAlgo,
			octetstring	espCombinedModeKey,
			IpSecProtocolMode ipSecProtocolMode
			IpSecProtocolMode ipSecProtocolMode,
			ExtentedSequenceNumbers extentedSequenceNumbers
		}
		with {
			//variant "use=com.testingtech.ttcn.tci.*;";