briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-10-23T09:44:41Zhttps://code.briarproject.org/briar/briar/-/issues/1270User testing for Tor bridges2018-10-23T09:44:41ZakwizgranUser testing for Tor bridgesSubtask of #647.Subtask of #647.Android 1.2Renata GegajRenata Gegaj2018-09-24https://code.briarproject.org/briar/briar/-/issues/647Use Tor bridges2018-10-09T14:09:20ZakwizgranUse Tor bridgesWe should ship the default set of bridges used by Tor Browser, and automatically use them if we can't connect directly to the Tor network (or if we're in a location where we don't expect to be able to connect directly).We should ship the default set of bridges used by Tor Browser, and automatically use them if we can't connect directly to the Tor network (or if we're in a location where we don't expect to be able to connect directly).Android 1.2Torsten GroteTorsten Grote2018-10-01https://code.briarproject.org/briar/briar/-/issues/1638Image support not updated while conversation is open2019-11-06T17:55:06ZTorsten GroteImage support not updated while conversation is open[User testing has identified an issue](https://code.briarproject.org/briar/briar/issues/1243#note_38091) that the conversation does not update its image support status when this becomes available while the conversation is already open.[User testing has identified an issue](https://code.briarproject.org/briar/briar/issues/1243#note_38091) that the conversation does not update its image support status when this becomes available while the conversation is already open.Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1636Compression of small images throws exception2020-01-08T16:06:41ZTorsten GroteCompression of small images throws exceptionWhen sending images on Android 10 (did not test other versions) smaller than 32KB, the app shows an error and an `IOException` is thrown.
```java
if (!bitmap.compress(JPEG, quality, out))
throw new I...When sending images on Android 10 (did not test other versions) smaller than 32KB, the app shows an error and an `IOException` is thrown.
```java
if (!bitmap.compress(JPEG, quality, out))
throw new IOException();
```
Sending images larger than 32 KB works just fine.Android 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1606ClassCastException when opening conversation with contact who supports images2019-06-28T13:28:39ZakwizgranClassCastException when opening conversation with contact who supports images* Android version: 9
* Phone model: Xiaomi Mi A1
* Briar version: 1.1.7 (37d0b61)
Stacktrace:
```
java.lang.ClassCastException: org.briarproject.briar.android.view.TextSendController cannot be cast to org.briarproject.briar.android.view...* Android version: 9
* Phone model: Xiaomi Mi A1
* Briar version: 1.1.7 (37d0b61)
Stacktrace:
```
java.lang.ClassCastException: org.briarproject.briar.android.view.TextSendController cannot be cast to org.briarproject.briar.android.view.TextAttachmentController
at org.briarproject.briar.android.conversation.ConversationActivity.showImageOnboarding(ConversationActivity.java:730)
at org.briarproject.briar.android.conversation.ConversationActivity.lambda$tKsX2hu-pmpHBYdC5ev_sWoOCXk(Unknown Source:0)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationActivity$tKsX2hu-pmpHBYdC5ev_sWoOCXk.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
```
The crash is caused by failing to check the image attachments feature flag before calling showImageOnboarding(). This is fixed on master but will happen for Briar 1.1.7 (and possibly some earlier releases) when contacts upgrade to a version that supports image attachments, including 1.2 and 1.3 alpha releases.
Fortunately I've found a sneaky workaround: we bump the client minor version to 2. Briar 1.1.7 only considers that a contact supports image attachments if the minor version is exactly 1 (this is also fixed on master, but fortunately didn't make it into the 1.1.7 release).Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1594Preview fails to load when sending second message with attachments2019-10-09T12:18:24ZakwizgranPreview fails to load when sending second message with attachmentsAfter sending a message with an attachment, I'm unable to send a second message with an attachment because the preview fails to load.
Test device: Honor 8A (Android 9).After sending a message with an attachment, I'm unable to send a second message with an attachment because the preview fails to load.
Test device: Honor 8A (Android 9).Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1592Improve handling of missing attachments in UI2020-10-30T16:20:25ZakwizgranImprove handling of missing attachments in UIWhen MessagingManager#getAttachment() throws NoSuchMessageException, the UI should try to display any attachments that have been received so far, without doing anything that may prevent the missing attachment from being displayed correct...When MessagingManager#getAttachment() throws NoSuchMessageException, the UI should try to display any attachments that have been received so far, without doing anything that may prevent the missing attachment from being displayed correctly when it arrives (e.g. caching an incomplete list of AttachmentItems).
Subtask of #1438.Android 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1590IllegalStateException: Cannot invoke setValue on a background thread2019-06-18T11:58:53ZakwizgranIllegalStateException: Cannot invoke setValue on a background threadCrashed when sending a message to a new contact.
Stacktrace:
```
java.lang.IllegalStateException: Cannot invoke setValue on a background thread
at android.arch.lifecycle.LiveData.assertMainThread(LiveData.java:435)
at androi...Crashed when sending a message to a new contact.
Stacktrace:
```
java.lang.IllegalStateException: Cannot invoke setValue on a background thread
at android.arch.lifecycle.LiveData.assertMainThread(LiveData.java:435)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:279)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at org.briarproject.briar.android.attachment.AttachmentCreator.resetState(AttachmentCreator.java:183)
at org.briarproject.briar.android.attachment.AttachmentCreator.onAttachmentsSent(AttachmentCreator.java:164)
at org.briarproject.briar.android.conversation.ConversationViewModel.storeMessage(ConversationViewModel.java:295)
at org.briarproject.briar.android.conversation.ConversationViewModel.lambda$createMessage$8$ConversationViewModel(ConversationViewModel.java:286)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationViewModel$1LsoWDT2XwB7wPxBWawY1IIRFR0.run(Unknown Source:10)
at org.briarproject.bramble.TimeLoggingExecutor.lambda$execute$0$TimeLoggingExecutor(TimeLoggingExecutor.java:36)
at org.briarproject.bramble.-$$Lambda$TimeLoggingExecutor$Bqrtbsq_8LcRPoTWBOef6xh7gJg.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
```
This is my fault - I recommended moving the onAttachmentsSent() call to a place that's on the UI thread on my branch, forgetting that it's on the crypto executor on master.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1587Add version negotiation to sync protocol2019-06-18T11:58:45ZakwizgranAdd version negotiation to sync protocolAdd a record to the sync protocol that tells the remote peer which versions of the protocol the local peer supports. Send this record at the start of every session. Remember the last set of versions received from the remote peer and use ...Add a record to the sync protocol that tells the remote peer which versions of the protocol the local peer supports. Send this record at the start of every session. Remember the last set of versions received from the remote peer and use them to decide which records we can send.
Subtask of #1434.Android 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1585Add support for image attachments to messaging client2019-10-09T12:19:18ZakwizgranAdd support for image attachments to messaging clientAndroid 1.3akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1583Remote contact layout is too tall for small screens2019-09-27T14:58:54ZakwizgranRemote contact layout is too tall for small screensThe layouts for LinkExchangeFragment and NicknameFragment don't work well on small screens: for LinkExchangeFragment the Continue button is mostly offscreen, and for NicknameFragment the nickname field and Add Contact button are entirely...The layouts for LinkExchangeFragment and NicknameFragment don't work well on small screens: for LinkExchangeFragment the Continue button is mostly offscreen, and for NicknameFragment the nickname field and Add Contact button are entirely offscreen, making it unclear what the user's meant to do next.
Screenshots come from the Huawei Ascend Y330 (480x800 px).
![device-2019-06-08-101532](/uploads/83053a95ddee99302b91b0b79c659113/device-2019-06-08-101532.png)
![device-2019-06-08-101545](/uploads/33ff8c3896463d1be367479d956b781b/device-2019-06-08-101545.png)
Possible workarounds:
* Scroll to the bottom of each fragment when it's opened
* Remove the illustration from NicknameActivity or make it smaller
* Move the stepper to the bottom, below the button (I know we decided it was better at the top, and apart from this issue I'd prefer to keep it there)
* Divide the workflow into three steps rather than two: send link, enter link, and enter nickname (this has disadvantages for the flows where the user opens the activity by sharing a link from another app, or with a link already in the clipboard)Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1580Warn when adding pending contact with Tor disabled2019-06-18T09:54:35ZTorsten GroteWarn when adding pending contact with Tor disabledAdding contacts remotely won't work with the Tor plugin not running. We should notify contacts when that is the case, so they can go online or enable Tor.Adding contacts remotely won't work with the Tor plugin not running. We should notify contacts when that is the case, so they can go online or enable Tor.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1579Replace pending contact remove button with icon2019-06-08T09:44:58ZTorsten GroteReplace pending contact remove button with iconIt should use the same icon as the rss feeds.It should use the same icon as the rss feeds.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1571Add rendezvous connection support to connection manager2019-06-04T14:26:56ZakwizgranAdd rendezvous connection support to connection managerSubtask of #1232.Subtask of #1232.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1570Add contact manager and database methods for converting a pending contact2019-06-03T14:58:45ZakwizgranAdd contact manager and database methods for converting a pending contactSubtask of #1232.Subtask of #1232.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1567Create poller for rendezvous connections2019-06-10T13:49:06ZakwizgranCreate poller for rendezvous connectionsSubtask of #1232.Subtask of #1232.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1566Investigate whether equivalent public keys can damage the security of handsha...2019-05-14T11:16:36ZakwizgranInvestigate whether equivalent public keys can damage the security of handshake modeSome ECDH public keys are equivalent, in the sense that multiplying them by the same scalar produces the same point. If an attacker sends us a handshake public key that's equivalent to a contact's handshake public key, we'll fail to dete...Some ECDH public keys are equivalent, in the sense that multiplying them by the same scalar produces the same point. If an attacker sends us a handshake public key that's equivalent to a contact's handshake public key, we'll fail to detect that it's the same key (see #1565) and derive the same handshake mode transport keys. The attacker won't be able to derive the keys, but we'll use the same keys for handshaking with the contact and trying to handshake with the attacker.
This shouldn't affect confidentiality, integrity or authenticity, as we use a unique random nonce with the stream header key, but it could affect protocol obfuscation by using the same tags for sending streams to the contact and the attacker.
Work out whether this attack is possible, and if so, whether we can detect and prevent it.
Subtask of #1232.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1565UX for handling duplicate handshake links2019-10-16T16:19:19ZakwizgranUX for handling duplicate handshake linksIf Mallory knows Bob's handshake link, she may send it to Alice pretending it's Mallory's own link, in order to discover whether Alice and Bob are contacts/pending contacts.
When adding a pending contact we should check whether a contac...If Mallory knows Bob's handshake link, she may send it to Alice pretending it's Mallory's own link, in order to discover whether Alice and Bob are contacts/pending contacts.
When adding a pending contact we should check whether a contact/pending contact with the same handshake public key exists. If so, we should ask the user whether the new pending contact and the existing contact/pending contact are the same person. If yes, we discard the new pending contact. If no, we tell the user that two contacts sent the same link, which could mean that one of them is trying to discover who the user's contacts are, and we warn the user not to tell either or them that someone else sent the same link. Then we discard the new pending contact.
If we support more than one link format in future, Mallory may change the format of Bob's link before sending it to Alice, so we should compare the parsed public keys or public key hashes rather than the unparsed links.
Subtask of #1230.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1564Publish hidden service for connecting to pending contact2019-06-10T13:48:57ZakwizgranPublish hidden service for connecting to pending contactSubtask of #1232.Subtask of #1232.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1562Improve handling of external intents2022-05-26T15:49:41ZTorsten GroteImprove handling of external intentsUse `ENTRY_ACTIVITY` from !1087 as a central router for external intents:
> Not signed into Briar. The password screen is shown, then after signing in the remote contact activity is shown, as expected. The contact's link field is empty....Use `ENTRY_ACTIVITY` from !1087 as a central router for external intents:
> Not signed into Briar. The password screen is shown, then after signing in the remote contact activity is shown, as expected. The contact's link field is empty. If I use the up button to navigate away from the remote contact screen or the pending contact list, the task is closed. I'd expect to navigate to the contact list when pressing the up button. If I don't use the up button to navigate away, then later reopen Briar from the foreground notification, a second Briar task is created. I assume the same would happen with private message notifications, etc - the issue being that the notification expects us to have a task that can be reused by clearing the stack down to NavDrawerActivity, but the existing task doesn't have that activity in its stack.
There's also some other issues with AddContactActivity to resolve:
> If an instance of AddContactActivity already exists it's brought to the foreground but the link isn't populated (I'm assuming this is because the new intent is delivered without calling onCreate() again).
>
> If I open the remote contact activity via the speed dial, then put Briar into the background via the home button and relaunch via the ongoing notification, the contact list appears as expected. But when I back out, the remote contact activity and another instance of the contact list are underneath.
>
> Similarly, if I open the remote contact activity with a share intent, then press the home button, relaunch via the ongoing notification, and back out of the contact list, the remote contact activity is underneath (but without the second instance of the contact list).
>
> Finally, if I open the remote contact activity with a share intent, then back out or press the up button, the task is cleared. If I relaunch via recent apps, the remote contact activity is shown again. Backing out or pressing the up button clears the task again, so I can't reach the rest of the app!
Android 1.2Torsten GroteTorsten Grote