Commit 3d41dd9c authored by tepelmann's avatar tepelmann
Browse files

Fix for check for initiator/responder for encode.

parent a72fb284
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -320,6 +320,10 @@ public class EncryptedPayloadCodec implements IEnumDefinitions{
			handlePadding(ta.getIkeEncrBlockSize(), encPayload);
		}

		byte [] markedBytes = enc.getBytesFromMark();

		boolean initiator = ((markedBytes[19]&0x08)==0x08)?true:false;
		
		byte [] payload = encPayload.toByteArray();
		if (!ta.getIkeEncryptionAlgo().equals(ENCRYPTION_E_NULL)) {
			ByteArrayOutputStream ivBaos = new ByteArrayOutputStream();
@@ -330,7 +334,7 @@ public class EncryptedPayloadCodec implements IEnumDefinitions{
					rb.tciTMProvided.tciError(e.getMessage());
				}
			}
			payload = Encryption.getEncryptedString(rb, ta.getIkeEncryptionAlgo(), ta.getIkeEncryptionKeyAlgo(), ((OctetString)ta.getIkeEncryptionKey(true)).toByteArray(), payload, ivBaos);
			payload = Encryption.getEncryptedString(rb, ta.getIkeEncryptionAlgo(), ta.getIkeEncryptionKeyAlgo(), ((OctetString)ta.getIkeEncryptionKey(initiator)).toByteArray(), payload, ivBaos);
			if (!ivEncoded && (ivBaos.size()>0)) {
				iv.tValue = ivBaos.toByteArray();
				encIKE.encodeOctetstring(iv.tValue);
@@ -348,7 +352,6 @@ public class EncryptedPayloadCodec implements IEnumDefinitions{
			if (!ta.getIkeIntegrityAlgo().equals(INTEGRITY_E_NONE)) {
				ExternalFunctions_IPv6 efIPv6 = new ExternalFunctions_IPv6(rb);
				
				byte [] markedBytes = enc.getBytesFromMark();
				byte [] msg = encIKE.toByteArray();
				ByteArrayOutputStream icvBaos = new ByteArrayOutputStream();
				try {
@@ -363,7 +366,7 @@ public class EncryptedPayloadCodec implements IEnumDefinitions{
					return;
				}
				byte[] icvMsg = icvBaos.toByteArray();
				OctetString icvO = (OctetString)efIPv6.integrity(ta.getIkeIntegrityAlgo(), ta.getIkeIntegrityKey(true), new OctetString(rb, icvMsg.length, icvMsg));
				OctetString icvO = (OctetString)efIPv6.integrity(ta.getIkeIntegrityAlgo(), ta.getIkeIntegrityKey(initiator), new OctetString(rb, icvMsg.length, icvMsg));
				encIKE.encodeOctetstring(icvO.toByteArray());
			}
		}