From 68c40f0c4645351ef6faec475ce1767aae289c0a Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 15 Mar 2019 13:30:10 +0000 Subject: [PATCH] Minor code cleanups for crypto API. --- .../bramble/api/contact/PendingContactId.java | 14 ++++++++++++++ .../bramble/api/crypto/KeyAgreementCrypto.java | 2 +- .../bramble/api/crypto/TransportCrypto.java | 2 +- .../bramble/api/transport/IncomingKeys.java | 5 +++++ .../bramble/api/transport/OutgoingKeys.java | 5 +++++ .../bramble/api/transport/StreamContext.java | 5 +++++ .../bramble/api/transport/TransportKeys.java | 11 ++++++++--- 7 files changed, 39 insertions(+), 5 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java index 6353cb792..76526018e 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java @@ -1,11 +1,25 @@ package org.briarproject.bramble.api.contact; import org.briarproject.bramble.api.UniqueId; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import javax.annotation.concurrent.ThreadSafe; + +/** + * Type-safe wrapper for a byte array that uniquely identifies a + * {@link PendingContact}. + */ +@ThreadSafe +@NotNullByDefault public class PendingContactId extends UniqueId { public PendingContactId(byte[] id) { super(id); } + + @Override + public boolean equals(Object o) { + return o instanceof PendingContactId && super.equals(o); + } } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyAgreementCrypto.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyAgreementCrypto.java index a35cd3114..61d3afb32 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyAgreementCrypto.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyAgreementCrypto.java @@ -2,7 +2,7 @@ package org.briarproject.bramble.api.crypto; /** * Crypto operations for the key agreement protocol - see - * https://code.briarproject.org/akwizgran/briar-spec/blob/master/protocols/BQP.md + * https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BQP.md */ public interface KeyAgreementCrypto { diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/TransportCrypto.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/TransportCrypto.java index cbd6449b4..666abffc6 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/TransportCrypto.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/TransportCrypto.java @@ -5,7 +5,7 @@ import org.briarproject.bramble.api.transport.TransportKeys; /** * Crypto operations for the transport security protocol - see - * https://code.briarproject.org/akwizgran/briar-spec/blob/master/protocols/BTP.md + * https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BTP.md */ public interface TransportCrypto { diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java index ef444561f..1b7942512 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java @@ -1,6 +1,9 @@ package org.briarproject.bramble.api.transport; import org.briarproject.bramble.api.crypto.SecretKey; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import javax.annotation.concurrent.Immutable; import static org.briarproject.bramble.api.transport.TransportConstants.REORDERING_WINDOW_SIZE; @@ -8,6 +11,8 @@ import static org.briarproject.bramble.api.transport.TransportConstants.REORDERI * Contains transport keys for receiving streams from a given contact over a * given transport in a given rotation period. */ +@Immutable +@NotNullByDefault public class IncomingKeys { private final SecretKey tagKey, headerKey; diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java index 4214ffd91..2cdbfadaf 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java @@ -1,11 +1,16 @@ package org.briarproject.bramble.api.transport; import org.briarproject.bramble.api.crypto.SecretKey; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import javax.annotation.concurrent.Immutable; /** * Contains transport keys for sending streams to a given contact over a given * transport in a given rotation period. */ +@Immutable +@NotNullByDefault public class OutgoingKeys { private final SecretKey tagKey, headerKey; diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java index b5205999b..ba90e6f29 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java @@ -2,8 +2,13 @@ package org.briarproject.bramble.api.transport; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.crypto.SecretKey; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.TransportId; +import javax.annotation.concurrent.Immutable; + +@Immutable +@NotNullByDefault public class StreamContext { private final ContactId contactId; diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java index 40aeed9a3..58795445b 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java @@ -1,10 +1,15 @@ package org.briarproject.bramble.api.transport; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.TransportId; +import javax.annotation.concurrent.Immutable; + /** * Keys for communicating with a given contact over a given transport. */ +@Immutable +@NotNullByDefault public class TransportKeys { private final TransportId transportId; @@ -13,11 +18,11 @@ public class TransportKeys { public TransportKeys(TransportId transportId, IncomingKeys inPrev, IncomingKeys inCurr, IncomingKeys inNext, OutgoingKeys outCurr) { - if (inPrev.getRotationPeriod() != inCurr.getRotationPeriod() - 1) + if (inPrev.getRotationPeriod() != outCurr.getRotationPeriod() - 1) throw new IllegalArgumentException(); - if (inNext.getRotationPeriod() != inCurr.getRotationPeriod() + 1) + if (inCurr.getRotationPeriod() != outCurr.getRotationPeriod()) throw new IllegalArgumentException(); - if (outCurr.getRotationPeriod() != inCurr.getRotationPeriod()) + if (inNext.getRotationPeriod() != outCurr.getRotationPeriod() + 1) throw new IllegalArgumentException(); this.transportId = transportId; this.inPrev = inPrev;