From 84c07a2b9c73ed9b8b0510d54747f379f30c68fb Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Sun, 31 Mar 2013 19:25:24 +0100
Subject: [PATCH] Code cleanup: remove unnecessary annotations, moved some API
 constants.

---
 .../src/net/sf/briar/api/AuthorConstants.java     | 13 +++++++++++++
 .../sf/briar/api/TransportPropertyConstants.java  | 10 ++++++++++
 .../InvitationConstants.java                      |  2 +-
 .../briar/api/messaging/MessagingConstants.java   | 15 ---------------
 .../net/sf/briar/crypto/CryptoComponentImpl.java  |  2 +-
 .../net/sf/briar/invitation/AliceConnector.java   |  2 +-
 .../src/net/sf/briar/invitation/BobConnector.java |  2 +-
 .../src/net/sf/briar/invitation/Connector.java    | 15 +++++++++------
 .../net/sf/briar/invitation/ConnectorGroup.java   |  2 +-
 .../src/net/sf/briar/messaging/AuthorReader.java  |  4 ++--
 .../src/net/sf/briar/messaging/GroupReader.java   |  2 +-
 .../sf/briar/messaging/MessageFactoryImpl.java    |  2 +-
 .../src/net/sf/briar/messaging/MessageReader.java |  2 +-
 .../net/sf/briar/messaging/PacketReaderImpl.java  |  4 ++--
 .../briar/messaging/duplex/DuplexConnection.java  |  5 +----
 .../duplex/IncomingDuplexConnection.java          |  5 +----
 .../duplex/OutgoingDuplexConnection.java          |  5 +----
 .../simplex/IncomingSimplexConnection.java        |  5 +----
 .../src/net/sf/briar/plugins/PluginsModule.java   |  4 ++--
 .../briar/plugins/bluetooth/BluetoothPlugin.java  |  3 +--
 .../plugins/bluetooth/BluetoothPluginFactory.java |  3 +--
 .../plugins/droidtooth/DroidtoothPlugin.java      |  9 ++++-----
 .../droidtooth/DroidtoothPluginFactory.java       |  3 +--
 .../src/net/sf/briar/plugins/file/FilePlugin.java |  3 +--
 .../file/PollingRemovableDriveMonitor.java        |  4 +---
 .../briar/plugins/file/RemovableDrivePlugin.java  |  3 +--
 .../plugins/file/RemovableDrivePluginFactory.java |  4 +---
 .../net/sf/briar/plugins/modem/ModemPlugin.java   |  8 +++-----
 .../briar/plugins/modem/ModemPluginFactory.java   |  3 +--
 .../net/sf/briar/plugins/tcp/LanTcpPlugin.java    |  3 +--
 .../sf/briar/plugins/tcp/LanTcpPluginFactory.java |  3 +--
 .../src/net/sf/briar/plugins/tcp/TcpPlugin.java   |  6 ++----
 .../net/sf/briar/plugins/tcp/WanTcpPlugin.java    |  6 ++----
 .../sf/briar/plugins/tcp/WanTcpPluginFactory.java |  3 +--
 .../sf/briar/reliability/ReliabilityModule.java   |  4 ++--
 .../net/sf/briar/transport/TransportModule.java   |  4 ++--
 .../src/net/sf/briar/messaging/ConstantsTest.java | 12 ++++++------
 .../net/sf/briar/plugins/DuplexClientTest.java    |  2 +-
 .../net/sf/briar/plugins/DuplexServerTest.java    |  2 +-
 39 files changed, 84 insertions(+), 105 deletions(-)
 create mode 100644 briar-api/src/net/sf/briar/api/AuthorConstants.java
 create mode 100644 briar-api/src/net/sf/briar/api/TransportPropertyConstants.java
 rename briar-api/src/net/sf/briar/api/{plugins => invitation}/InvitationConstants.java (88%)

diff --git a/briar-api/src/net/sf/briar/api/AuthorConstants.java b/briar-api/src/net/sf/briar/api/AuthorConstants.java
new file mode 100644
index 0000000000..f9a358d8a4
--- /dev/null
+++ b/briar-api/src/net/sf/briar/api/AuthorConstants.java
@@ -0,0 +1,13 @@
+package net.sf.briar.api;
+
+public interface AuthorConstants {
+
+	/** The maximum length of an author's name in UTF-8 bytes. */
+	int MAX_AUTHOR_NAME_LENGTH = 50;
+
+	/** The maximum length of a public key in bytes. */
+	int MAX_PUBLIC_KEY_LENGTH = 97;
+
+	/** The maximum length of a signature in bytes. */
+	int MAX_SIGNATURE_LENGTH = 104;
+}
diff --git a/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java b/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java
new file mode 100644
index 0000000000..4967fe2107
--- /dev/null
+++ b/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java
@@ -0,0 +1,10 @@
+package net.sf.briar.api;
+
+public interface TransportPropertyConstants {
+
+	/** The maximum number of properties per transport. */
+	int MAX_PROPERTIES_PER_TRANSPORT = 100;
+
+	/** The maximum length of a property's key or value in UTF-8 bytes. */
+	int MAX_PROPERTY_LENGTH = 100;
+}
diff --git a/briar-api/src/net/sf/briar/api/plugins/InvitationConstants.java b/briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
similarity index 88%
rename from briar-api/src/net/sf/briar/api/plugins/InvitationConstants.java
rename to briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
index 57c5a6beb6..e5ecebf134 100644
--- a/briar-api/src/net/sf/briar/api/plugins/InvitationConstants.java
+++ b/briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins;
+package net.sf.briar.api.invitation;
 
 public interface InvitationConstants {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java b/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
index 5373427cc0..f6cd09977e 100644
--- a/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
+++ b/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
@@ -14,21 +14,9 @@ public interface MessagingConstants {
 	/** The maximum number of groups a user may subscribe to. */
 	int MAX_SUBSCRIPTIONS = 3000;
 
-	/** The maximum number of properties per transport. */
-	int MAX_PROPERTIES_PER_TRANSPORT = 100;
-
-	/** The maximum length of a property's key or value in UTF-8 bytes. */
-	int MAX_PROPERTY_LENGTH = 100;
-
 	/** The maximum length of a group's name in UTF-8 bytes. */
 	int MAX_GROUP_NAME_LENGTH = 50;
 
-	/** The maximum length of a public key in bytes. */
-	int MAX_PUBLIC_KEY_LENGTH = 97;
-
-	/** The maximum length of an author's name in UTF-8 bytes. */
-	int MAX_AUTHOR_NAME_LENGTH = 50;
-
 	/**
 	 * The maximum length of a message body in bytes. To allow for future
 	 * changes in the protocol, this is smaller than the maximum packet length
@@ -42,9 +30,6 @@ public interface MessagingConstants {
 	/** The maximum length of a message's subject line in UTF-8 bytes. */
 	int MAX_SUBJECT_LENGTH = 100;
 
-	/** The maximum length of a signature in bytes. */
-	int MAX_SIGNATURE_LENGTH = 120;
-
 	/** The length of a message's random salt in bytes. */
 	int SALT_LENGTH = 8;
 
diff --git a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
index cbe3a978dc..e8ae752a46 100644
--- a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
+++ b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
@@ -2,7 +2,7 @@ package net.sf.briar.crypto;
 
 import static javax.crypto.Cipher.DECRYPT_MODE;
 import static javax.crypto.Cipher.ENCRYPT_MODE;
-import static net.sf.briar.api.plugins.InvitationConstants.CODE_BITS;
+import static net.sf.briar.api.invitation.InvitationConstants.CODE_BITS;
 import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
 import static net.sf.briar.util.ByteUtils.MAX_32_BIT_UNSIGNED;
 
diff --git a/briar-core/src/net/sf/briar/invitation/AliceConnector.java b/briar-core/src/net/sf/briar/invitation/AliceConnector.java
index fc3ae0fdf2..5e72fc30e2 100644
--- a/briar-core/src/net/sf/briar/invitation/AliceConnector.java
+++ b/briar-core/src/net/sf/briar/invitation/AliceConnector.java
@@ -2,7 +2,7 @@ package net.sf.briar.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/net/sf/briar/invitation/BobConnector.java b/briar-core/src/net/sf/briar/invitation/BobConnector.java
index da574f2bad..593c1017f4 100644
--- a/briar-core/src/net/sf/briar/invitation/BobConnector.java
+++ b/briar-core/src/net/sf/briar/invitation/BobConnector.java
@@ -2,7 +2,7 @@ package net.sf.briar.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/net/sf/briar/invitation/Connector.java b/briar-core/src/net/sf/briar/invitation/Connector.java
index 4dcf3c3d0c..c9592538ab 100644
--- a/briar-core/src/net/sf/briar/invitation/Connector.java
+++ b/briar-core/src/net/sf/briar/invitation/Connector.java
@@ -2,12 +2,13 @@ package net.sf.briar.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_AUTHOR_NAME_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
-import static net.sf.briar.api.plugins.InvitationConstants.HASH_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.HASH_LENGTH;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -259,6 +260,8 @@ abstract class Connector extends Thread {
 			r.setMaxStringLength(MAX_PROPERTY_LENGTH);
 			Map<String, String> p = r.readMap(String.class, String.class);
 			r.resetMaxStringLength();
+			if(p.size() > MAX_PROPERTIES_PER_TRANSPORT)
+				throw new FormatException();
 			remoteProps.put(id, new TransportProperties(p));
 		}
 		r.readListEnd();
diff --git a/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java b/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
index 19033ca576..cc0602789d 100644
--- a/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
+++ b/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
@@ -2,7 +2,7 @@ package net.sf.briar.invitation;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.plugins.InvitationConstants.CONFIRMATION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONFIRMATION_TIMEOUT;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/net/sf/briar/messaging/AuthorReader.java b/briar-core/src/net/sf/briar/messaging/AuthorReader.java
index 6a04f0d5e1..a2123b4378 100644
--- a/briar-core/src/net/sf/briar/messaging/AuthorReader.java
+++ b/briar-core/src/net/sf/briar/messaging/AuthorReader.java
@@ -1,7 +1,7 @@
 package net.sf.briar.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_AUTHOR_NAME_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static net.sf.briar.api.messaging.Types.AUTHOR;
 
 import java.io.IOException;
diff --git a/briar-core/src/net/sf/briar/messaging/GroupReader.java b/briar-core/src/net/sf/briar/messaging/GroupReader.java
index c594a7f6ff..ac3b20583d 100644
--- a/briar-core/src/net/sf/briar/messaging/GroupReader.java
+++ b/briar-core/src/net/sf/briar/messaging/GroupReader.java
@@ -1,7 +1,7 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
 import static net.sf.briar.api.messaging.Types.GROUP;
 
 import java.io.IOException;
diff --git a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
index 5eb28cc364..a04838b789 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
@@ -1,9 +1,9 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBJECT_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.SALT_LENGTH;
 import static net.sf.briar.api.messaging.Types.AUTHOR;
diff --git a/briar-core/src/net/sf/briar/messaging/MessageReader.java b/briar-core/src/net/sf/briar/messaging/MessageReader.java
index 5c39e0eede..2a5397cd67 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageReader.java
+++ b/briar-core/src/net/sf/briar/messaging/MessageReader.java
@@ -1,9 +1,9 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBJECT_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.SALT_LENGTH;
 import static net.sf.briar.api.messaging.Types.MESSAGE;
diff --git a/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java b/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
index f5eaa98e48..682f1824d5 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
@@ -1,8 +1,8 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTIES_PER_TRANSPORT;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTY_LENGTH;
 import static net.sf.briar.api.messaging.Types.ACK;
 import static net.sf.briar.api.messaging.Types.MESSAGE;
 import static net.sf.briar.api.messaging.Types.OFFER;
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
index 18000e59c1..9e396f1103 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
@@ -24,9 +24,7 @@ import java.util.logging.Logger;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.FormatException;
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.db.event.ContactRemovedEvent;
 import net.sf.briar.api.db.event.DatabaseEvent;
@@ -97,8 +95,7 @@ abstract class DuplexConnection implements DatabaseListener {
 
 	private volatile PacketWriter writer = null;
 
-	DuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	DuplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
index 61fe58c97a..1ec9ad384f 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
@@ -3,9 +3,7 @@ package net.sf.briar.messaging.duplex;
 import java.io.IOException;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
@@ -19,8 +17,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
 
 class IncomingDuplexConnection extends DuplexConnection {
 
-	IncomingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	IncomingDuplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
index e59adb983f..f1767773ce 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
@@ -3,9 +3,7 @@ package net.sf.briar.messaging.duplex;
 import java.io.IOException;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
@@ -19,8 +17,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
 
 class OutgoingDuplexConnection extends DuplexConnection {
 
-	OutgoingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	OutgoingDuplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java b/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
index 2ec4cd2d3b..8f829064c9 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
@@ -11,9 +11,7 @@ import java.util.logging.Logger;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.FormatException;
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.messaging.Ack;
 import net.sf.briar.api.messaging.Message;
@@ -50,8 +48,7 @@ class IncomingSimplexConnection {
 	private final ContactId contactId;
 	private final TransportId transportId;
 
-	IncomingSimplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	IncomingSimplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/plugins/PluginsModule.java b/briar-core/src/net/sf/briar/plugins/PluginsModule.java
index f6b18cf20b..63c3ee0bb3 100644
--- a/briar-core/src/net/sf/briar/plugins/PluginsModule.java
+++ b/briar-core/src/net/sf/briar/plugins/PluginsModule.java
@@ -33,9 +33,9 @@ public class PluginsModule extends AbstractModule {
 	@Override
 	protected void configure() {
 		// The executor is unbounded, so tasks can be dependent or long-lived
+		ExecutorService e = Executors.newCachedThreadPool();
 		bind(ExecutorService.class).annotatedWith(
-				PluginExecutor.class).toInstance(
-						Executors.newCachedThreadPool());
+				PluginExecutor.class).toInstance(e);
 		bind(PluginManager.class).to(
 				PluginManagerImpl.class).in(Singleton.class);
 		bind(Poller.class).to(PollerImpl.class);
diff --git a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
index 61ae77f519..d9417b54ff 100644
--- a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
@@ -30,7 +30,6 @@ import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -64,7 +63,7 @@ class BluetoothPlugin implements DuplexPlugin {
 	// Non-null if running has ever been true
 	private volatile LocalDevice localDevice = null;
 
-	BluetoothPlugin(@PluginExecutor Executor pluginExecutor, Clock clock,
+	BluetoothPlugin(Executor pluginExecutor, Clock clock,
 			SecureRandom secureRandom, DuplexPluginCallback callback,
 			long maxLatency, long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
diff --git a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
index 4a07399189..48611f8fd1 100644
--- a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
@@ -6,7 +6,6 @@ import java.util.concurrent.Executor;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.clock.SystemClock;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -20,7 +19,7 @@ public class BluetoothPluginFactory implements DuplexPluginFactory {
 	private final SecureRandom secureRandom;
 	private final Clock clock;
 
-	public BluetoothPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public BluetoothPluginFactory(Executor pluginExecutor,
 			SecureRandom secureRandom) {
 		this.pluginExecutor = pluginExecutor;
 		this.secureRandom = secureRandom;
diff --git a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
index 25e3b673d8..5af3422c98 100644
--- a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
@@ -28,7 +28,6 @@ import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.android.AndroidExecutor;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -70,10 +69,10 @@ class DroidtoothPlugin implements DuplexPlugin {
 	// Non-null if running has ever been true
 	private volatile BluetoothAdapter adapter = null;
 
-	DroidtoothPlugin(@PluginExecutor Executor pluginExecutor,
-			AndroidExecutor androidExecutor, Context appContext,
-			SecureRandom secureRandom, DuplexPluginCallback callback,
-			long maxLatency, long pollingInterval) {
+	DroidtoothPlugin(Executor pluginExecutor, AndroidExecutor androidExecutor,
+			Context appContext, SecureRandom secureRandom,
+			DuplexPluginCallback callback, long maxLatency,
+			long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
 		this.androidExecutor = androidExecutor;
 		this.appContext = appContext;
diff --git a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
index 078b8b8cde..bb884bdd5a 100644
--- a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
@@ -5,7 +5,6 @@ import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.android.AndroidExecutor;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -21,7 +20,7 @@ public class DroidtoothPluginFactory implements DuplexPluginFactory {
 	private final Context appContext;
 	private final SecureRandom secureRandom;
 
-	public DroidtoothPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public DroidtoothPluginFactory(Executor pluginExecutor,
 			AndroidExecutor androidExecutor, Context appContext,
 			SecureRandom secureRandom) {
 		this.pluginExecutor = pluginExecutor;
diff --git a/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java b/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
index d72d4ee8ba..8adc969260 100644
--- a/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
@@ -13,7 +13,6 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.simplex.SimplexPlugin;
 import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
 import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
@@ -37,7 +36,7 @@ public abstract class FilePlugin implements SimplexPlugin {
 	protected abstract void writerFinished(File f);
 	protected abstract void readerFinished(File f);
 
-	protected FilePlugin(@PluginExecutor Executor pluginExecutor,
+	protected FilePlugin(Executor pluginExecutor,
 			SimplexPluginCallback callback, long maxLatency) {
 		this.pluginExecutor = pluginExecutor;
 		this.callback = callback;
diff --git a/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java b/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
index df0df7e2c5..b6d4b0f690 100644
--- a/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
+++ b/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
@@ -8,8 +8,6 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.plugins.PluginExecutor;
-
 class PollingRemovableDriveMonitor implements RemovableDriveMonitor, Runnable {
 
 	private static final Logger LOG =
@@ -23,7 +21,7 @@ class PollingRemovableDriveMonitor implements RemovableDriveMonitor, Runnable {
 	private volatile boolean running = false;
 	private volatile Callback callback = null;
 
-	public PollingRemovableDriveMonitor(@PluginExecutor Executor pluginExecutor,
+	public PollingRemovableDriveMonitor(Executor pluginExecutor,
 			RemovableDriveFinder finder, long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
 		this.finder = finder;
diff --git a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
index 112377f236..f406993c1a 100644
--- a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
@@ -13,7 +13,6 @@ import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
 import net.sf.briar.util.StringUtils;
 
@@ -32,7 +31,7 @@ implements RemovableDriveMonitor.Callback {
 	private final RemovableDriveFinder finder;
 	private final RemovableDriveMonitor monitor;
 
-	RemovableDrivePlugin(@PluginExecutor Executor pluginExecutor,
+	RemovableDrivePlugin(Executor pluginExecutor,
 			SimplexPluginCallback callback, RemovableDriveFinder finder,
 			RemovableDriveMonitor monitor, long maxLatency) {
 		super(pluginExecutor, callback, maxLatency);
diff --git a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
index 41e909825d..0823a13d31 100644
--- a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
@@ -3,7 +3,6 @@ package net.sf.briar.plugins.file;
 import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.simplex.SimplexPlugin;
 import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
 import net.sf.briar.api.plugins.simplex.SimplexPluginFactory;
@@ -17,8 +16,7 @@ public class RemovableDrivePluginFactory implements SimplexPluginFactory {
 
 	private final Executor pluginExecutor;
 
-	public RemovableDrivePluginFactory(
-			@PluginExecutor Executor pluginExecutor) {
+	public RemovableDrivePluginFactory(Executor pluginExecutor) {
 		this.pluginExecutor = pluginExecutor;
 	}
 
diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
index b0f245fb80..5cf653eed4 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
@@ -20,7 +20,6 @@ import net.sf.briar.api.ContactId;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -47,10 +46,9 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback {
 	private volatile boolean running = false;
 	private volatile Modem modem = null;
 
-	ModemPlugin(@PluginExecutor Executor pluginExecutor,
-			ModemFactory modemFactory, SerialPortList serialPortList,
-			DuplexPluginCallback callback, long maxLatency,
-			long pollingInterval, boolean shuffle) {
+	ModemPlugin(Executor pluginExecutor, ModemFactory modemFactory,
+			SerialPortList serialPortList, DuplexPluginCallback callback,
+			long maxLatency, long pollingInterval, boolean shuffle) {
 		this.pluginExecutor = pluginExecutor;
 		this.modemFactory = modemFactory;
 		this.serialPortList = serialPortList;
diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
index d753fb8864..c09e67d6f2 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
@@ -3,7 +3,6 @@ package net.sf.briar.plugins.modem;
 import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -19,7 +18,7 @@ public class ModemPluginFactory implements DuplexPluginFactory {
 	private final ModemFactory modemFactory;
 	private final SerialPortList serialPortList;
 
-	public ModemPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public ModemPluginFactory(Executor pluginExecutor,
 			ReliabilityLayerFactory reliabilityFactory) {
 		this.pluginExecutor = pluginExecutor;
 		modemFactory = new ModemFactoryImpl(pluginExecutor, reliabilityFactory);
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
index d0df485d8e..7662479d47 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
@@ -25,7 +25,6 @@ import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.util.ByteUtils;
@@ -45,7 +44,7 @@ class LanTcpPlugin extends TcpPlugin {
 
 	private final Clock clock;
 
-	LanTcpPlugin(@PluginExecutor Executor pluginExecutor, Clock clock,
+	LanTcpPlugin(Executor pluginExecutor, Clock clock,
 			DuplexPluginCallback callback, long maxLatency,
 			long pollingInterval) {
 		super(pluginExecutor, callback, maxLatency, pollingInterval);
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
index 89d836199f..73e0b21685 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
@@ -5,7 +5,6 @@ import java.util.concurrent.Executor;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.clock.SystemClock;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -18,7 +17,7 @@ public class LanTcpPluginFactory implements DuplexPluginFactory {
 	private final Executor pluginExecutor;
 	private final Clock clock;
 
-	public LanTcpPluginFactory(@PluginExecutor Executor pluginExecutor) {
+	public LanTcpPluginFactory(Executor pluginExecutor) {
 		this.pluginExecutor = pluginExecutor;
 		clock = new SystemClock();
 	}
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
index bd129a6cc0..77e50e18f8 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
@@ -18,7 +18,6 @@ import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -42,9 +41,8 @@ abstract class TcpPlugin implements DuplexPlugin {
 	 */
 	protected abstract List<SocketAddress> getLocalSocketAddresses();
 
-	protected TcpPlugin(@PluginExecutor Executor pluginExecutor,
-			DuplexPluginCallback callback, long maxLatency,
-			long pollingInterval) {
+	protected TcpPlugin(Executor pluginExecutor, DuplexPluginCallback callback,
+			long maxLatency, long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
 		this.callback = callback;
 		this.maxLatency = maxLatency;
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
index f133b5fa34..e5396a4f1b 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
@@ -17,7 +17,6 @@ import java.util.logging.Logger;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.util.StringUtils;
@@ -37,9 +36,8 @@ class WanTcpPlugin extends TcpPlugin {
 
 	private volatile MappingResult mappingResult;
 
-	WanTcpPlugin(@PluginExecutor Executor pluginExecutor,
-			DuplexPluginCallback callback, long maxLatency,
-			long pollingInterval, PortMapper portMapper) {
+	WanTcpPlugin(Executor pluginExecutor, DuplexPluginCallback callback,
+			long maxLatency, long pollingInterval, PortMapper portMapper) {
 		super(pluginExecutor, callback, maxLatency, pollingInterval);
 		this.portMapper = portMapper;
 	}
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
index 33f3f5abf7..23bf0dc0ae 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
@@ -4,7 +4,6 @@ import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -17,7 +16,7 @@ public class WanTcpPluginFactory implements DuplexPluginFactory {
 	private final Executor pluginExecutor;
 	private final ShutdownManager shutdownManager;
 
-	public WanTcpPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public WanTcpPluginFactory(Executor pluginExecutor,
 			ShutdownManager shutdownManager) {
 		this.pluginExecutor = pluginExecutor;
 		this.shutdownManager = shutdownManager;
diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
index 784d14360b..c28d2c2b70 100644
--- a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
+++ b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
@@ -13,9 +13,9 @@ public class ReliabilityModule extends AbstractModule {
 	@Override
 	protected void configure() {
 		// The executor is unbounded - tasks are expected to be long-lived
+		Executor e = Executors.newCachedThreadPool();
 		bind(Executor.class).annotatedWith(
-				ReliabilityExecutor.class).toInstance(
-						Executors.newCachedThreadPool());
+				ReliabilityExecutor.class).toInstance(e);
 		bind(ReliabilityLayerFactory.class).to(
 				ReliabilityLayerFactoryImpl.class);
 	}
diff --git a/briar-core/src/net/sf/briar/transport/TransportModule.java b/briar-core/src/net/sf/briar/transport/TransportModule.java
index 931a5554bb..3bd2fa4ade 100644
--- a/briar-core/src/net/sf/briar/transport/TransportModule.java
+++ b/briar-core/src/net/sf/briar/transport/TransportModule.java
@@ -27,9 +27,9 @@ public class TransportModule extends AbstractModule {
 		bind(ConnectionWriterFactory.class).to(
 				ConnectionWriterFactoryImpl.class);
 		// The executor is unbounded, so tasks can be dependent or long-lived
+		Executor e = Executors.newCachedThreadPool();
 		bind(Executor.class).annotatedWith(
-				IncomingConnectionExecutor.class).toInstance(
-						Executors.newCachedThreadPool());
+				IncomingConnectionExecutor.class).toInstance(e);
 		bind(KeyManager.class).to(KeyManagerImpl.class).in(Singleton.class);
 	}
 }
diff --git a/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java b/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
index 7d454d68d2..3f25455791 100644
--- a/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
+++ b/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
@@ -1,14 +1,14 @@
 package net.sf.briar.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTIES_PER_TRANSPORT;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
 
 import java.io.ByteArrayOutputStream;
@@ -88,7 +88,7 @@ public class ConstantsTest extends BriarTestCase {
 			byte[] publicKey = keyPair.getPublic().getEncoded();
 			assertTrue(publicKey.length <= MAX_PUBLIC_KEY_LENGTH);
 			// Sign some random data and check the length of the signature
-			byte[] toBeSigned = new byte[100];
+			byte[] toBeSigned = new byte[1000];
 			random.nextBytes(toBeSigned);
 			sig.initSign(keyPair.getPrivate());
 			sig.update(toBeSigned);
diff --git a/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java b/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
index a9399ca429..d00d839066 100644
--- a/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
+++ b/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
@@ -1,6 +1,6 @@
 package net.sf.briar.plugins;
 
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.io.IOException;
 import java.util.Map;
diff --git a/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java b/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
index d4f296c1eb..f6bfc4b19c 100644
--- a/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
+++ b/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
@@ -1,7 +1,7 @@
 package net.sf.briar.plugins;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;
-- 
GitLab