diff --git a/briar-api/src/org/briarproject/api/transport/TransportKeys.java b/briar-api/src/org/briarproject/api/transport/TransportKeys.java index 72b7e62c4..ec550b52a 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 4d62980cd..5827a03b8 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);