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);