briar issueshttps://code.briarproject.org/briar/briar/-/issues2022-02-28T15:52:29Zhttps://code.briarproject.org/briar/briar/-/issues/2097ActivityNotFoundException for OPEN_DOCUMENT intent2022-02-28T15:52:29ZakwizgranActivityNotFoundException for OPEN_DOCUMENT intent* Android version: 11
* Phone model: Pixel 4a (sunfish)
* Briar version: 1.3.5 (0040753)
* User feedback: "I tried to press the button to change profile picture."
Stacktrace:
```
No Activity found to handle Intent { act=android.intent.a...* Android version: 11
* Phone model: Pixel 4a (sunfish)
* Briar version: 1.3.5 (0040753)
* User feedback: "I tried to press the button to change profile picture."
Stacktrace:
```
No Activity found to handle Intent { act=android.intent.action.OPEN_DOCUMENT cat=[android.intent.category.OPENABLE] typ=image/* (has extras) }
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.OPEN_DOCUMENT cat=[android.intent.category.OPENABLE] typ=image
/* (has extras) }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2067)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1727)
at android.app.Activity.startActivityForResult(Activity.java:5314)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:574)
at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234)
at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:208)
at androidx.activity.result.ActivityResultRegistry$3.launch(ActivityResultRegistry.java:224)
at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)
at androidx.fragment.app.FragmentManager.launchStartActivityForResult(FragmentManager.java:3000)
at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:1424)
at androidx.fragment.app.Fragment.startActivityForResult(Fragment.java:1398)
at org.briarproject.briar.android.settings.SettingsFragment.lambda$onCreatePreferences$0(SettingsFragment.java:64)
at org.briarproject.briar.android.settings.SettingsFragment.lambda$onCreatePreferences$0$SettingsFragment(Unknown Source:0)
at org.briarproject.briar.android.settings.-$$Lambda$SettingsFragment$aLVt4dIN9PUOagzsIXcpqTymkBo.onPreferenceClick(Unknown Source:2)
at androidx.preference.Preference.performClick(Preference.java:1184)
at androidx.preference.Preference.performClick(Preference.java:1166)
at androidx.preference.Preference$1.onClick(Preference.java:181)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7664)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
```Android 1.4Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2275AssertionError when adding pending contact2022-02-28T15:06:45ZakwizgranAssertionError when adding pending contact* Android version: 5.1.1
* Phone model: Samsung SM-J120H (j1x3gxx)
* Briar version: 1.4.4 (36670a8)
Last lines of log:
```
02-24 09:47:54.504 I/BaseActivity: Pausing AddContactActivity
02-24 09:47:54.545 I/BaseActivity: Creating Pending...* Android version: 5.1.1
* Phone model: Samsung SM-J120H (j1x3gxx)
* Briar version: 1.4.4 (36670a8)
Last lines of log:
```
02-24 09:47:54.504 I/BaseActivity: Pausing AddContactActivity
02-24 09:47:54.545 I/BaseActivity: Creating PendingContactListActivity
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.bramble.api.nullsafety.NullSafety.requireNull(NullSafety.java:30)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl.addPendingContact(RendezvousPollerImpl.java:180)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl.lambda$addPendingContactAsync$3(RendezvousPollerImpl.java:306)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl.$r8$lambda$Mi_U1ZCfMDPQHtgr1vajgSuXz0Y(RendezvousPollerImpl.java)
at org.briarproject.bramble.rendezvous.RendezvousPollerImpl$$ExternalSyntheticLambda3.run(Unknown Source)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.$r8$lambda$wSvuPL6t_HUoaaqCVexrhJX_RSg(PoliteExecutor.java)
at org.briarproject.bramble.PoliteExecutor$$ExternalSyntheticLambda0.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/1926Crash after account creation on Samsung Ultra devices2022-02-28T13:48:05ZakwizgranCrash after account creation on Samsung Ultra devicesThree users reported via Google Play that the app crashes at startup on their Samsung devices (Galaxy Note20 Ultra 5G, Galaxy S21 Ultra 5G).
One of the users reported that the app crashes every time after tapping "create account". The u...Three users reported via Google Play that the app crashes at startup on their Samsung devices (Galaxy Note20 Ultra 5G, Galaxy S21 Ultra 5G).
One of the users reported that the app crashes every time after tapping "create account". The user sent a partial crash report by email, since the app didn't reach the point where the report could be sent via Tor.
Stacktrace:
```
Failed to allocate a 1040 byte allocation with 115624 free bytes and 112KB until OOM, target footprint 268435456, growth limit 268435456; failed due to fragmentation (largest possible contiguous allocation 97255424 bytes)
java.lang.OutOfMemoryError: Failed to allocate a 1040 byte allocation with 115624 free bytes and 112KB until OOM, target footprint 268435456, growth limit 268435456; failed due to fragmentation (largest possible contiguous allocation 97255424 bytes)
at org.spongycastle.util.Arrays.clone(Arrays.java:671)
at org.spongycastle.crypto.generators.SCrypt.SMix(SCrypt.java:126)
at org.spongycastle.crypto.generators.SCrypt.MFcrypt(SCrypt.java:87)
at org.spongycastle.crypto.generators.SCrypt.generate(SCrypt.java:66)
at org.briarproject.bramble.crypto.ScryptKdf.measureDuration(ScryptKdf.java:48)
at org.briarproject.bramble.crypto.ScryptKdf.chooseCostParameter(ScryptKdf.java:38)
at org.briarproject.bramble.crypto.CryptoComponentImpl.encryptWithPassword(CryptoComponentImpl.java:328)
at org.briarproject.bramble.account.AccountManagerImpl.encryptAndStoreDatabaseKey(AccountManagerImpl.java:182)
at org.briarproject.bramble.account.AccountManagerImpl.createAccount(AccountManagerImpl.java:173)
at org.briarproject.briar.android.account.SetupControllerImpl.lambda$createAccount$0(SetupControllerImpl.java:111)
at org.briarproject.briar.android.account.SetupControllerImpl.lambda$createAccount$0$SetupControllerImpl(Unknown Source:0)
at org.briarproject.briar.android.account.-$$Lambda$SetupControllerImpl$d4VGO9XJWxzmTk5cXfL8og-qX7I.run(Unknown Source:8)
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:923)
```
Memory info:
```
SystemMemoryFree: 4696301568
SystemMemoryThreshold: 226492416
SystemMemoryTotal: 11047866368
VirtualMachineMemoryAllocated: 268435456
VirtualMachineMemoryFree: 249255432
VirtualMachineMemoryMaximum: 268435456
```
The issue appears to be that scrypt is exhausting the available memory while trying to choose a cost parameter. The phone has 12 GB of memory and a 256 MB heap.
We might be able to avoid the issue by capping the scrypt cost parameter so that scrypt's expected memory usage isn't more than half of the max heap size.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1727Is orbot required?2022-02-25T15:07:42ZJay BeeIs orbot required?Hello. You write that messages over internet are exchanged over tor. Is orbot needed for that? Can you clarify please?Hello. You write that messages over internet are exchanged over tor. Is orbot needed for that? Can you clarify please?https://code.briarproject.org/briar/briar/-/issues/1729Android OS can capture keys?2022-02-25T15:07:10ZJay BeeAndroid OS can capture keys?It is my understanding that every keystroke goes to OS over API and then it goes to Briar app from OS over another API. So google can capture anything what is written by separate keyboard application. For security reasons, would it be be...It is my understanding that every keystroke goes to OS over API and then it goes to Briar app from OS over another API. So google can capture anything what is written by separate keyboard application. For security reasons, would it be better to include own keyboard in the application? There are few opensource keyboards, AnySoftKey, Hacker keyboard...https://code.briarproject.org/briar/briar/-/issues/1892[Feature Request] A new ui2022-02-25T15:04:11Zfinrelemos[Feature Request] A new uithe current ui of the app is really basic, and for the masses to switch to a new app from say whatsapp or signal they must be able to see the visual appeal cause for most of people the real features of briar (privacy and security) are no...the current ui of the app is really basic, and for the masses to switch to a new app from say whatsapp or signal they must be able to see the visual appeal cause for most of people the real features of briar (privacy and security) are not visible, a better ui would be useful to convince the masses to use briar.https://code.briarproject.org/briar/briar/-/issues/1908Going offline2022-02-25T15:03:53ZWuukoGoing offlineI was online but I'm offline.I was online but I'm offline.https://code.briarproject.org/briar/briar/-/issues/1153Messages export.2022-02-17T19:28:24ZSearosoMessages export.Feature request.
Copy is limited to one message. Need to paste a conversation. Should be possible to copy any piece of chat, and paste it with names and time codes.
Thank you!!Feature request.
Copy is limited to one message. Need to paste a conversation. Should be possible to copy any piece of chat, and paste it with names and time codes.
Thank you!!https://code.briarproject.org/briar/briar/-/issues/1071Option to never use Bluetooth2022-02-17T02:30:06ZakwizgranOption to never use BluetoothUser feedback: "Please add way to disable Bluetooth completely (even when adding new contacts), because of the recently discovered vulnerabilities."User feedback: "Please add way to disable Bluetooth completely (even when adding new contacts), because of the recently discovered vulnerabilities."https://code.briarproject.org/briar/briar/-/issues/1095Save chat as text2022-02-16T13:50:27ZakwizgranSave chat as textA tester asked for the option to export a private conversation as text.A tester asked for the option to export a private conversation as text.https://code.briarproject.org/briar/briar/-/issues/2050Delete messages even on receiver user2022-02-06T11:02:31ZHostFatDelete messages even on receiver userCurrently, if the user delete a message in a chat with another user, the message is deleted only on the local phone.
It will be good to have the possibility to even delete the message (by requesting if the user wants to delete even on t...Currently, if the user delete a message in a chat with another user, the message is deleted only on the local phone.
It will be good to have the possibility to even delete the message (by requesting if the user wants to delete even on the remote phone), or all the messages, even on the remote phone.
I know that now there is the "Disappearing messages" feature, but it isn't the same (and the 7 days only option isn't enough)https://code.briarproject.org/briar/briar/-/issues/1546Support Bluetooth discovery for connecting to contacts2022-01-26T13:50:35ZakwizgranSupport Bluetooth discovery for connecting to contactsOn Android 8+ apps don't have access to the device's own Bluetooth address, so we can't share our address with contacts. When adding contacts we use discovery to work around this (#1147). Users have reported that Bluetooth works when add...On Android 8+ apps don't have access to the device's own Bluetooth address, so we can't share our address with contacts. When adding contacts we use discovery to work around this (#1147). Users have reported that Bluetooth works when adding contacts, but not when subsequently trying to communicate.
Learning our Bluetooth address from contacts would raise some tricky security and privacy issues, such as revealing to existing contacts, by adding a Bluetooth address to our transport properties, that we've just added a contact via Bluetooth.
After adding a contact we could store the contact's address for subsequent connection attempts, but that would only let us connect to contacts who were added via Bluetooth. To let us connect to any nearby contact we need to make the device discoverable and perform discovery.
Making the device temporarily discoverable requires user confirmation each time. Making the device permanently discoverable has privacy implications, and doesn't work on all devices (e.g. the Sony Xperia Tipo). Discovering nearby devices may require a lot of power and may interfere with wifi (#699). BLE discovery uses less power and doesn't require user confirmation, but not all devices can be discovered via BLE (#303).
A possible solution would be to make the device temporarily discoverable, and perform discovery, when the user enables the Bluetooth transport (#185). Then we could provide some way of manually triggering discovery, such as a "nearby contacts" tab with a "scan" button. This would limit the discoverability window, and the battery and interference impact of running discovery, to periods when the user had explicitly shown an interest in connecting to nearby contacts. Confirmation dialogs would only be shown in response to user actions.
This falls short of the goal of effortless connectivity, but it may be the best we can achieve within the constraints of the platform.https://code.briarproject.org/briar/briar/-/issues/1147Support Bluetooth discovery for adding contacts2022-01-26T13:50:35ZakwizgranSupport Bluetooth discovery for adding contactsThe local Bluetooth address is no longer available on the Nexus 5X running Android 8.1. `BluetoothAdapter#getAddress()` returns the fake address 02:00:00:00:00:00, and `Settings.Secure.getString(ctx, "bluetooth_address")` returns null.
...The local Bluetooth address is no longer available on the Nexus 5X running Android 8.1. `BluetoothAdapter#getAddress()` returns the fake address 02:00:00:00:00:00, and `Settings.Secure.getString(ctx, "bluetooth_address")` returns null.
This means we can no longer include our Bluetooth address in the QR code when adding a contact. Instead we'll need to make the device temporarily discoverable, and indicate in the QR code that the contact should use discovery to find us. The contact will need the ACCESS_COARSE_LOCATION permission for discovery.
The contact will need to store our Bluetooth address for future connection attempts. We don't currently have a way for plugins to store local per-contact information, but we can add one.https://code.briarproject.org/briar/briar/-/issues/39Wi-Fi Direct plugin2022-01-21T14:28:52ZakwizgranWi-Fi Direct pluginSome devices running Android 4.0 and later support Wi-Fi Direct, which has a legacy mode that allows older devices to connect to WFD devices. The legacy mode creates an access point on the WFD device, with a random SSID and password that...Some devices running Android 4.0 and later support Wi-Fi Direct, which has a legacy mode that allows older devices to connect to WFD devices. The legacy mode creates an access point on the WFD device, with a random SSID and password that must be communicated to the other device out of band. The other device connects as a client in the usual way. The access point doesn't share the WFD device's internet connection, if any.
This could be useful when devices are in wifi range of each other but there's no wifi network; the SSID and password will have to be synced across some other transport (e.g. Bluetooth). When adding contacts via QR codes, the SSID and password can be included in the QR code.
Get the `WifiP2pManager` system service, call `initialize()`, then call `createGroup()` to create an access point. Call `requestGroupInfo()` to get a `WifiP2pGroup`, then call `getNetworkName()` and `getPassphrase()` and to get the transport properties.
After connecting to the access point, how does the client know the access point's IP address? `WifiP2pGroup.getOwner()` returns a `WifiP2pDevice`, which contains a MAC address but not an IP address.
It seems from this example code that `WifiP2pInfo.groupOwnerAddress.toString()` can be passed as the hostname to `Socket.connect()`:
[http://www.cse.unsw.edu.au/~ezarepour/COMP9336/WiFiDirectActivity.java](https://web.archive.org/web/20140310040212/http://www.cse.unsw.edu.au/~ezarepour/COMP9336/WiFiDirectActivity.java)
Presumably we can put that string in the transport properties with the SSID and password.
We may be able to advertise the access point's current SSID and password (in encrypted and obfuscated form) via WFD service discovery:
* Alice creates a legacy mode AP via `WifiP2pManager.createGroup()`
* The AP has a random SSID and password, which Bob doesn't know
* Alice packs the SSID and password into a `WifiP2pServiceInfo`
* Alice advertises the service via `WifiP2pManager.addLocalService()`
* Bob discovers the service via `WifiP2pManager.addServiceRequest()`
* Bob unpacks the SSID and password and connects to the AP as a legacy
client
However, the Thali developers have run into performance and stability problems with WFD service discovery, so this may not be a viable approach.
https://code.briarproject.org/briar/briar/-/issues/1286Build fails with verification error when following instructions on website2022-01-13T17:42:40ZakwizgranBuild fails with verification error when following instructions on websiteA user reported that the Android Studio build failed with "an error about dependencies, we think it is because of the checksum" when following the build instructions on the website.
Sounds like it could be related to recent changes in t...A user reported that the Android Studio build failed with "an error about dependencies, we think it is because of the checksum" when following the build instructions on the website.
Sounds like it could be related to recent changes in the way jtorctl and the Tor binaries are downloaded and verified.https://code.briarproject.org/briar/briar/-/issues/1344Briar app for mobile linux devices2022-01-07T16:45:59ZIdRather NotBriar app for mobile linux devicesConsidering the Librem 5, that purism is currently developing, is coming early 2019, are there plans on making an app for it?
[Infos on the Librem 5](https://puri.sm/posts/librem5-progress-report-14/)
(may be connected to/the same as #1...Considering the Librem 5, that purism is currently developing, is coming early 2019, are there plans on making an app for it?
[Infos on the Librem 5](https://puri.sm/posts/librem5-progress-report-14/)
(may be connected to/the same as #1254)https://code.briarproject.org/briar/briar/-/issues/1588New setting: Time window / Interval in which Briar goes online2022-01-04T16:11:37ZmicressorNew setting: Time window / Interval in which Briar goes onlineI want a way to set Briar so that the app connects at an interval of X for Y minutes to synchronize messages.
As a second possibility, a period where Briar connects to synchronize messages. For example between X and Y o'clock every day....I want a way to set Briar so that the app connects at an interval of X for Y minutes to synchronize messages.
As a second possibility, a period where Briar connects to synchronize messages. For example between X and Y o'clock every day.
The idea behind it is to make online time more effective due to the high battery consumption. Two users could agree to configure their Briar Apps between X and Y to go online and synchronize messages.https://code.briarproject.org/briar/briar/-/issues/45Reduce mobile data consumption2021-12-13T14:17:30ZakwizgranReduce mobile data consumptionBriar uses a lot of bandwidth considering the small amount of data it transfers. The most likely culprit is the Tor plugin, which maintains circuits to several introduction points and regularly tries to build circuits to contacts' introd...Briar uses a lot of bandwidth considering the small amount of data it transfers. The most likely culprit is the Tor plugin, which maintains circuits to several introduction points and regularly tries to build circuits to contacts' introduction points. Can we reduce the amount of bandwidth it uses?
~~Ricochet has a nice solution to this: each time we (re)connect to Tor, try to connect to our peers, and while we remain connected, expect them to connect to us rather than vice versa.~~
~~https://github.com/ricochet-im/ricochet/issues/68~~
~~There may be a race condition, however, if our hidden service doesn't become reachable until after we've polled our contacts' services. Can we poll our own hidden service to check its reachability?~~
~~Another possible culprit is the LAN plugin, which will bind to an interface with a non-local address if no local address is available. This is meant to enable the plugin to work on internal networks that use non-local addresses, such as UCL -- but it may also lead to observable connections across the WAN, so perhaps we should change it.~~https://code.briarproject.org/briar/briar/-/issues/1511Settings to increase polling time2021-12-13T14:13:45ZDmitry RubtsovSettings to increase polling timeSince Briar takes a lot of battery power (up to 20% of my Galaxy Note 9), I want to customize update frequency for incoming messages. I think, that it is easy and usefulSince Briar takes a lot of battery power (up to 20% of my Galaxy Note 9), I want to customize update frequency for incoming messages. I think, that it is easy and usefulhttps://code.briarproject.org/briar/briar/-/issues/1388Discussion: Only poll contacts if necessary2021-12-13T14:13:45ZBen WieDiscussion: Only poll contacts if necessaryFor some transports we could reduce the polling effort if we only poll contacts that we want to sent messages/ACKs to. This works for transports where both peers are able to connect to each other if one is able to.For some transports we could reduce the polling effort if we only poll contacts that we want to sent messages/ACKs to. This works for transports where both peers are able to connect to each other if one is able to.