diff --git a/briar-android-tests/build.gradle b/briar-android-tests/build.gradle index d9dcdc2d052d662c1c572b659e7974fd82537fd9..5fb2878846561c01c835362a64252103cf468b61 100644 --- a/briar-android-tests/build.gradle +++ b/briar-android-tests/build.gradle @@ -14,7 +14,7 @@ android { defaultConfig { minSdkVersion 10 - targetSdkVersion 23 + targetSdkVersion 22 versionCode 1 versionName "1.0" } diff --git a/briar-android-tests/src/test/java/org/briarproject/sync/SimplexMessagingIntegrationTest.java b/briar-android-tests/src/test/java/org/briarproject/sync/SimplexMessagingIntegrationTest.java index d8eefc25b3c388b49aca08f53b5ffafc7f5efb6c..9ad9df0f2832ef25573aacb2b6e3c5158b9a3ed4 100644 --- a/briar-android-tests/src/test/java/org/briarproject/sync/SimplexMessagingIntegrationTest.java +++ b/briar-android-tests/src/test/java/org/briarproject/sync/SimplexMessagingIntegrationTest.java @@ -62,7 +62,6 @@ public class SimplexMessagingIntegrationTest extends BriarTestCase { private final AuthorId aliceId = new AuthorId(TestUtils.getRandomId()); private final AuthorId bobId = new AuthorId(TestUtils.getRandomId()); - // private Injector alice, bob; private SimplexMessagingComponent alice, bob; @Before @@ -212,131 +211,6 @@ public class SimplexMessagingIntegrationTest extends BriarTestCase { lifecycleManager.waitForShutdown(); } - /* - private byte[] write() throws Exception { - // Instantiate Alice's services - LifecycleManager lifecycleManager = alice.getLifeCycleManager(); - DatabaseComponent db = alice.getDatabaseComponent(); - IdentityManager identityManager = alice.getIdentityManager(); - - ContactManager contactManager = alice.getContactManager(); - MessagingManager messagingManager = alice.getMessagingManager(); - KeyManager keyManager = alice.getKeyManager(); - PrivateMessageFactory privateMessageFactory = alice.getPrivateMessageFactory(); - PacketWriterFactory packetWriterFactory = alice.getPacketWriterFactory(); - EventBus eventBus = alice.getEventBus(); - StreamWriterFactory streamWriterFactory = alice.getStreamWriterFactory(); - - // Start the lifecycle manager - lifecycleManager.startServices(); - lifecycleManager.waitForStartup(); - // Add a transport - db.addTransport(transportId, MAX_LATENCY); - // Add an identity for Alice - LocalAuthor aliceAuthor = new LocalAuthor(aliceId, "Alice", - new byte[MAX_PUBLIC_KEY_LENGTH], new byte[123], timestamp, - StorageStatus.ADDING); - identityManager.addLocalAuthor(aliceAuthor); - // Add Bob as a contact - Author bobAuthor = new Author(bobId, "Bob", - new byte[MAX_PUBLIC_KEY_LENGTH]); - ContactId contactId = contactManager.addContact(bobAuthor, aliceId); - // Derive and store the transport keys - keyManager.addContact(contactId, master, timestamp, true); - - // Send Bob a message - GroupId groupId = messagingManager.getConversationId(contactId); - byte[] body = "Hi Bob!".getBytes("UTF-8"); - PrivateMessage message = privateMessageFactory.createPrivateMessage( - groupId, timestamp, null, "text/plain", body); - messagingManager.addLocalMessage(message); - // Get a stream context - StreamContext ctx = keyManager.getStreamContext(contactId, transportId); - assertNotNull(ctx); - // Create a stream writer - ByteArrayOutputStream out = new ByteArrayOutputStream(); - OutputStream streamWriter = streamWriterFactory.createStreamWriter( - out, ctx); - // Create an outgoing sync session - PacketWriter packetWriter = packetWriterFactory.createPacketWriter( - streamWriter); - SyncSession session = new SimplexOutgoingSession(db, - new ImmediateExecutor(), eventBus, contactId, transportId, - MAX_LATENCY, packetWriter); - // Write whatever needs to be written - session.run(); - streamWriter.close(); - - // Clean up - lifecycleManager.stopServices(); - lifecycleManager.waitForShutdown(); - - // Return the contents of the stream - return out.toByteArray(); - } - - private void read(byte[] stream) throws Exception { - // Instantiate Bob's services - LifecycleManager lifecycleManager = bob.getLifeCycleManager(); - DatabaseComponent db = bob.getDatabaseComponent(); - IdentityManager identityManager = bob.getIdentityManager(); - ContactManager contactManager = bob.getContactManager(); - KeyManager keyManager = bob.getKeyManager(); - StreamReaderFactory streamReaderFactory = bob.getStreamReaderFactory(); - PacketReaderFactory packetReaderFactory = bob.getPacketReaderFactory(); - EventBus eventBus = bob.getEventBus(); - // Bob needs a MessagingManager even though we're not using it directly - bob.getMessagingManager(); - - // Start the lifecyle manager - lifecycleManager.startServices(); - lifecycleManager.waitForStartup(); - // Add a transport - db.addTransport(transportId, MAX_LATENCY); - // Add an identity for Bob - LocalAuthor bobAuthor = new LocalAuthor(bobId, "Bob", - new byte[MAX_PUBLIC_KEY_LENGTH], new byte[123], timestamp, - StorageStatus.ADDING); - identityManager.addLocalAuthor(bobAuthor); - // Add Alice as a contact - Author aliceAuthor = new Author(aliceId, "Alice", - new byte[MAX_PUBLIC_KEY_LENGTH]); - ContactId contactId = contactManager.addContact(aliceAuthor, bobId); - // Derive and store the transport keys - keyManager.addContact(contactId, master, timestamp, false); - - // Set up an event listener - MessageListener listener = new MessageListener(); - bob.getEventBus().addListener(listener); - // Read and recognise the tag - ByteArrayInputStream in = new ByteArrayInputStream(stream); - byte[] tag = new byte[TAG_LENGTH]; - int read = in.read(tag); - assertEquals(tag.length, read); - StreamContext ctx = keyManager.getStreamContext(transportId, tag); - assertNotNull(ctx); - // Create a stream reader - InputStream streamReader = streamReaderFactory.createStreamReader( - in, ctx); - // Create an incoming sync session - PacketReader packetReader = packetReaderFactory.createPacketReader( - streamReader); - SyncSession session = new IncomingSession(db, new ImmediateExecutor(), - eventBus, contactId, transportId, packetReader); - // No messages should have been added yet - assertFalse(listener.messageAdded); - // Read whatever needs to be read - session.run(); - streamReader.close(); - // The private message from Alice should have been added - assertTrue(listener.messageAdded); - - // Clean up - lifecycleManager.stopServices(); - lifecycleManager.waitForShutdown(); - } - */ - @After public void tearDown() { TestUtils.deleteTestDirectory(testDir); diff --git a/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java b/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java index 5be09940098c5dbbe9ade03da7b22c83aa0d0406..49e9a3cc814e7939238ef26710480aa3e8fae7bb 100644 --- a/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java +++ b/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java @@ -25,7 +25,6 @@ import javax.inject.Inject; public class AsymmetricIdenticon extends IdenticonView { - @Inject protected CryptoComponent mCrypto; private IdenticonBase mDelegate; public AsymmetricIdenticon(Context context) { @@ -50,10 +49,6 @@ public class AsymmetricIdenticon extends IdenticonView { private void initDelegate() { mDelegate = new IdenticonBase() { - @Override - protected CryptoComponent getCrypto() { - return mCrypto; - } @Override protected int getRowCount() { diff --git a/briar-android/src/im/delight/android/identicons/IdenticonBase.java b/briar-android/src/im/delight/android/identicons/IdenticonBase.java index 71998de61ea891a539a26115afa606ecfae35dcb..7b45675bee346d11d4ed228cb2a38d5b96d4d07c 100644 --- a/briar-android/src/im/delight/android/identicons/IdenticonBase.java +++ b/briar-android/src/im/delight/android/identicons/IdenticonBase.java @@ -10,7 +10,6 @@ import org.briarproject.api.crypto.CryptoComponent; * Created by saiimons on 05/10/14. */ public abstract class IdenticonBase { - private final CryptoComponent mCrypto; private final int mRowCount; private final int mColumnCount; private final Paint mPaint; @@ -21,7 +20,6 @@ public abstract class IdenticonBase { private volatile boolean mReady; public IdenticonBase() { - mCrypto = getCrypto(); mRowCount = getRowCount(); mColumnCount = getColumnCount(); mPaint = new Paint(); @@ -32,20 +30,7 @@ public abstract class IdenticonBase { } public byte[] getHash(byte[] input) { - byte[] mHash; - // if the input was null - if (input == null) { - // we can't create a hash value and have nothing to show (draw to the view) - mHash = null; - } else { - // generate a hash from the input to get unique but deterministic byte values - try { - mHash = mCrypto.hash(input); - } catch (Exception e) { - mHash = null; - } - } - return mHash; + return input; } protected void setupColors() { @@ -65,11 +50,8 @@ public abstract class IdenticonBase { } public void show(byte[] input) { - if(input != null) { - mHash = getHash(input); - } else { - mHash = null; - } + mHash = input; + // set up the cell colors according to the input that was provided via show(...) setupColors(); @@ -85,8 +67,6 @@ public abstract class IdenticonBase { } } - abstract protected CryptoComponent getCrypto(); - abstract protected int getRowCount(); abstract protected int getColumnCount(); diff --git a/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java b/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java index 8034a6a1dae305f93f64956dd07fe1c79bb2df3a..8d805cab9bf8fd39433ec13c1407fed392c8b91c 100644 --- a/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java +++ b/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java @@ -6,8 +6,6 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.Log; -import org.briarproject.api.crypto.CryptoComponent; - /** * Created by saiimons on 05/10/14. */ @@ -16,13 +14,9 @@ public class IdenticonDrawable extends Drawable { private static final int CENTER_COLUMN_INDEX = 5; - public IdenticonDrawable(final CryptoComponent crypto, byte[] toShow) { + public IdenticonDrawable(byte[] toShow) { super(); mDelegate = new IdenticonBase() { - @Override - protected CryptoComponent getCrypto() { - return crypto; - } @Override protected int getRowCount() { diff --git a/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java b/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java index e89068e39267d8af8d147d37109da535701ea4ba..cb5dcc5bc729739ffa30e56bc7a28ae59fa38c07 100644 --- a/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java +++ b/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java @@ -26,8 +26,7 @@ import javax.inject.Inject; public class SymmetricIdenticon extends IdenticonView { private static final int CENTER_COLUMN_INDEX = 5; - - @Inject protected CryptoComponent mCrypto; + private IdenticonBase mDelegate; public SymmetricIdenticon(Context context) { @@ -47,10 +46,6 @@ public class SymmetricIdenticon extends IdenticonView { private void initDelegate() { mDelegate = new IdenticonBase() { - @Override - protected CryptoComponent getCrypto() { - return mCrypto; - } @Override protected int getRowCount() { diff --git a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java index 739912d95343ed2c32afd572df539286a772bed6..38c64e839cdb90e56c11d1c0b936846256de1597 100644 --- a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java +++ b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java @@ -87,11 +87,9 @@ public class ContactListAdapter } }); private Context ctx; - private CryptoComponent crypto; - public ContactListAdapter(Context context, CryptoComponent cryptoComponent) { + public ContactListAdapter(Context context) { ctx = context; - crypto = cryptoComponent; } @Override @@ -121,7 +119,7 @@ public class ContactListAdapter Author author = item.getContact().getAuthor(); ui.avatar.setImageDrawable( - new IdenticonDrawable(crypto, author.getId().getBytes())); + new IdenticonDrawable(author.getId().getBytes())); String contactName = author.getName(); if (unread > 0) { ui.name.setText(contactName + " (" + unread + ")"); diff --git a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java index afdb74a4277f3eb6903427e4844d34cd54890286..30d7ecb5d9ddc0d783da2bbd958c26330c90e574 100644 --- a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java +++ b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java @@ -65,8 +65,6 @@ public class ContactListFragment extends BaseEventFragment { return TAG; } - @Inject - protected CryptoComponent crypto; @Inject protected ConnectionRegistry connectionRegistry; private ContactListAdapter adapter = null; @@ -80,11 +78,6 @@ public class ContactListFragment extends BaseEventFragment { @Inject protected volatile EventBus eventBus; - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - @Override public void injectActivity(AndroidComponent component) { component.inject(this); @@ -98,7 +91,7 @@ public class ContactListFragment extends BaseEventFragment { inflater.inflate(R.layout.activity_contact_list, container, false); - adapter = new ContactListAdapter(getContext(), crypto); + adapter = new ContactListAdapter(getContext()); list = (BriarRecyclerView) contentView.findViewById(R.id.contactList); list.setLayoutManager(new LinearLayoutManager(getContext())); list.setAdapter(adapter); diff --git a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java index a170bfdb2a849f048059ff1f694a1bc6fbb4a48a..4555d8c9d1af22aca69ecac90153804c6f09c35e 100644 --- a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java +++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java @@ -72,7 +72,6 @@ public class ConversationActivity extends BriarActivity private static final Logger LOG = Logger.getLogger(ConversationActivity.class.getName()); - @Inject protected CryptoComponent crypto; @Inject protected AndroidNotificationManager notificationManager; @Inject protected ConnectionRegistry connectionRegistry; @Inject @CryptoExecutor protected Executor cryptoExecutor; @@ -104,7 +103,7 @@ public class ConversationActivity extends BriarActivity setContentView(R.layout.activity_conversation); - adapter = new ConversationAdapter(this, crypto); + adapter = new ConversationAdapter(this); list = (BriarRecyclerView) findViewById(R.id.conversationView); list.setLayoutManager(new LinearLayoutManager(this)); list.setAdapter(adapter); diff --git a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java index a35db98bdd96863a16a752b4d87fdd7dd804c329..7cb7227325a837b24ba7b214e32c56c157b57df3 100644 --- a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java +++ b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java @@ -73,12 +73,10 @@ class ConversationAdapter extends } }); private Context ctx; - private CryptoComponent crypto; private byte[] identiconKey; - public ConversationAdapter(Context context, CryptoComponent cryptoComponent) { + public ConversationAdapter(Context context) { ctx = context; - crypto = cryptoComponent; } public void setIdenticonKey(byte[] key) { @@ -133,7 +131,7 @@ class ConversationAdapter extends } else { if (identiconKey != null) ui.avatar.setImageDrawable( - new IdenticonDrawable(crypto, identiconKey)); + new IdenticonDrawable(identiconKey)); if (!header.isRead()) { int left = ui.layout.getPaddingLeft(); int top = ui.layout.getPaddingTop(); diff --git a/briar-android/src/org/briarproject/android/forum/WriteForumPostActivity.java b/briar-android/src/org/briarproject/android/forum/WriteForumPostActivity.java index a3f038f48e2a8b0eb67ae24dfdb83bee65b56a27..59b5b4c3949dd7b4c4d96dc7de1575ec98afee87 100644 --- a/briar-android/src/org/briarproject/android/forum/WriteForumPostActivity.java +++ b/briar-android/src/org/briarproject/android/forum/WriteForumPostActivity.java @@ -124,7 +124,7 @@ implements OnItemSelectedListener, OnClickListener { left.addRule(CENTER_VERTICAL); header.addView(from, left); - adapter = new LocalAuthorSpinnerAdapter(this, crypto, true); + adapter = new LocalAuthorSpinnerAdapter(this, true); spinner = new Spinner(this); spinner.setId(2); spinner.setAdapter(adapter); diff --git a/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java b/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java index a0e2d88de2ebfff7c8dd3e5d3bdcb01f4ad2ffce..3a87c7c354ef280c00b3ad4a8c79f8f927b308d7 100644 --- a/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java +++ b/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java @@ -23,17 +23,14 @@ import static org.briarproject.android.identity.LocalAuthorItem.ANONYMOUS; import static org.briarproject.android.identity.LocalAuthorItem.NEW; public class LocalAuthorSpinnerAdapter extends BaseAdapter -implements SpinnerAdapter { + implements SpinnerAdapter { private final Context ctx; - private final CryptoComponent crypto; private final boolean includeAnonymous; private final List<LocalAuthorItem> list = new ArrayList<LocalAuthorItem>(); - public LocalAuthorSpinnerAdapter(Context ctx, - CryptoComponent crypto, boolean includeAnonymous) { + public LocalAuthorSpinnerAdapter(Context ctx, boolean includeAnonymous) { this.ctx = ctx; - this.crypto = crypto; this.includeAnonymous = includeAnonymous; } @@ -78,7 +75,7 @@ implements SpinnerAdapter { } else { name.setText(item.getLocalAuthor().getName()); avatar.setVisibility(View.VISIBLE); - avatar.setImageDrawable(new IdenticonDrawable(crypto, + avatar.setImageDrawable(new IdenticonDrawable( item.getLocalAuthor().getId().getBytes())); } return view; diff --git a/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java b/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java index 80a997b266c4da7f3849158bc634a6e1273edf17..e4baf6e137430c65fd09e6f2fbfd68955b06be24 100644 --- a/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java +++ b/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java @@ -56,7 +56,7 @@ implements OnItemSelectedListener, OnClickListener { TextView step = (TextView) view.findViewById(R.id.stepView); step.setText(String.format(ctx.getString(R.string.step), 1, 3)); - adapter = new LocalAuthorSpinnerAdapter(ctx, crypto, false); + adapter = new LocalAuthorSpinnerAdapter(ctx, false); spinner = (Spinner) view.findViewById(R.id.spinner); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(this); diff --git a/briar-android/src/org/briarproject/android/util/AuthorView.java b/briar-android/src/org/briarproject/android/util/AuthorView.java index 7a5d38f9e1762558e1fa03d221c6fd5e73a3c43a..4b11d51e8de38760b7ecff84a9790ec06b0793d4 100644 --- a/briar-android/src/org/briarproject/android/util/AuthorView.java +++ b/briar-android/src/org/briarproject/android/util/AuthorView.java @@ -19,7 +19,6 @@ import im.delight.android.identicons.IdenticonDrawable; public class AuthorView extends FrameLayout { - @Inject protected CryptoComponent crypto; private ImageView avatarView; private TextView nameView; private ImageView statusView; @@ -61,7 +60,7 @@ public class AuthorView extends FrameLayout { } else { nameView.setText(name); avatarView.setImageDrawable( - new IdenticonDrawable(crypto, id.getBytes())); + new IdenticonDrawable(id.getBytes())); } switch(status) { diff --git a/briar-api/src/org/briarproject/api/crypto/CryptoExecutor.java b/briar-api/src/org/briarproject/api/crypto/CryptoExecutor.java index 340ee08843438cefe71d1ea6dbac6e889250ff1c..3d531c4e05f6c51d5f0270ae6b8fbc40b2226956 100644 --- a/briar-api/src/org/briarproject/api/crypto/CryptoExecutor.java +++ b/briar-api/src/org/briarproject/api/crypto/CryptoExecutor.java @@ -5,20 +5,12 @@ import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; -import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import javax.inject.Qualifier; -//import com.google.inject.BindingAnnotation; - /** Annotation for injecting the executor for long-running crypto tasks. */ -//@BindingAnnotation -//@Target({ FIELD, METHOD, PARAMETER }) -//@Retention(RUNTIME) -//public @interface CryptoExecutor {} - @Qualifier @Target({FIELD, METHOD, PARAMETER}) @Retention(RUNTIME) diff --git a/briar-core/src/org/briarproject/reliability/ReliabilityModule.java b/briar-core/src/org/briarproject/reliability/ReliabilityModule.java index 4c8ef0138bb75933a113aa1f0e4d5dc6338ef4ec..092f218b34a13d71972a5a742b3e23b0c17c29be 100644 --- a/briar-core/src/org/briarproject/reliability/ReliabilityModule.java +++ b/briar-core/src/org/briarproject/reliability/ReliabilityModule.java @@ -5,21 +5,19 @@ import org.briarproject.api.reliability.ReliabilityLayerFactory; import java.util.concurrent.Executor; +import javax.inject.Named; + import dagger.Module; import dagger.Provides; @Module public class ReliabilityModule { - /* @Provides - ReliabilityLayerFactory provideReliabilityFactory(@IoExecutor + ReliabilityLayerFactory provideReliabilityFactoryByExector(@IoExecutor Executor ioExecutor) { return new ReliabilityLayerFactoryImpl(ioExecutor); } - */ - - @Provides ReliabilityLayerFactory provideReliabilityFactory(