diff --git a/briar-api/src/org/briarproject/api/transport/TransportKeys.java b/briar-api/src/org/briarproject/api/transport/TransportKeys.java
index 72b7e62c459b70cfc889fcdd69111c8eda9c7880..ec550b52a646a54b6433c08d5ae71378dd0568e7 100644
--- a/briar-api/src/org/briarproject/api/transport/TransportKeys.java
+++ b/briar-api/src/org/briarproject/api/transport/TransportKeys.java
@@ -11,6 +11,12 @@ public class TransportKeys {
 
 	public TransportKeys(TransportId transportId, IncomingKeys inPrev,
 			IncomingKeys inCurr, IncomingKeys inNext, OutgoingKeys outCurr) {
+		if (inPrev.getRotationPeriod() != inCurr.getRotationPeriod() - 1)
+			throw new IllegalArgumentException();
+		if (inNext.getRotationPeriod() != inCurr.getRotationPeriod() + 1)
+			throw new IllegalArgumentException();
+		if (outCurr.getRotationPeriod() != inCurr.getRotationPeriod())
+			throw new IllegalArgumentException();
 		this.transportId = transportId;
 		this.inPrev = inPrev;
 		this.inCurr = inCurr;
diff --git a/briar-core/src/org/briarproject/crypto/CryptoComponentImpl.java b/briar-core/src/org/briarproject/crypto/CryptoComponentImpl.java
index 4d62980cd8744c57217b6129f2c3b2403697cf3d..5827a03b8cb393f32672a42c1b689aaab58f59fa 100644
--- a/briar-core/src/org/briarproject/crypto/CryptoComponentImpl.java
+++ b/briar-core/src/org/briarproject/crypto/CryptoComponentImpl.java
@@ -282,7 +282,7 @@ class CryptoComponentImpl implements CryptoComponent {
 			inCurr = inNext;
 			SecretKey inNextTag = rotateKey(inNext.getTagKey(), p + 1);
 			SecretKey inNextHeader = rotateKey(inNext.getHeaderKey(), p + 1);
-			inNext = new IncomingKeys(inNextTag, inNextHeader, p);
+			inNext = new IncomingKeys(inNextTag, inNextHeader, p + 1);
 			SecretKey outCurrTag = rotateKey(outCurr.getTagKey(), p);
 			SecretKey outCurrHeader = rotateKey(outCurr.getHeaderKey(), p);
 			outCurr = new OutgoingKeys(outCurrTag, outCurrHeader, p);