briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-08-28T16:03:33Zhttps://code.briarproject.org/briar/briar/-/issues/2398Testers didn't understand why Mailbox was still linked after failed unlinking2023-08-28T16:03:33ZakwizgranTesters didn't understand why Mailbox was still linked after failed unlinking![unlink-1](/uploads/291b980ba78f2254b8ec690bb77f1850/unlink-1.png) ![unlink-2](/uploads/1279bbd2726de7a3d2adbc3076af895c/unlink-2.png)
> This step was confusing in most cases. Participants ignored the textboxes and when they unlinked t...![unlink-1](/uploads/291b980ba78f2254b8ec690bb77f1850/unlink-1.png) ![unlink-2](/uploads/1279bbd2726de7a3d2adbc3076af895c/unlink-2.png)
> This step was confusing in most cases. Participants ignored the textboxes and when they unlinked the device, the Mailbox still showed that it was linked. In those cases, they thought that this must be happening because of bugs in the test app.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2396Testers couldn't find mailbox pairing screen2023-08-28T16:03:37ZakwizgranTesters couldn't find mailbox pairing screen> All participants successfully installed and created accounts. On the other hand, linking devices was one of the most difficult tasks for all
participants.
>
> The common pattern for all was to misinterpret the device-linking process a...> All participants successfully installed and created accounts. On the other hand, linking devices was one of the most difficult tasks for all
participants.
>
> The common pattern for all was to misinterpret the device-linking process as adding a new contact. The first instinct for four out of five participants was to click on the + icon and try to “add a contact nearby”, they chose that because the devices are near to each other.
>
> The second place they went to look for the feature was always the sidebar menu. First, they looked at the options there and the connection icons. They guessed that linking devices is a form of connection, so they would find it there. One of the participants assumed that the “Internet” icon represents the Mailbox connection.
>
> On the third attempt, they could all find the Mailbox option, listed under the Settings menu.Mailbox: Usability testinghttps://code.briarproject.org/briar/briar/-/issues/2381Image attachment button doesn't get enabled while conversation is open2022-10-31T12:35:50ZakwizgranImage attachment button doesn't get enabled while conversation is openWhen we receive a client versioning message informing us that a contact supports image attachments, the image attachment button in the conversation screen should be enabled. Currently this only happens after leaving and re-entering the c...When we receive a client versioning message informing us that a contact supports image attachments, the image attachment button in the conversation screen should be enabled. Currently this only happens after leaving and re-entering the conversation screen.https://code.briarproject.org/briar/briar/-/issues/2379Hotspot fails to start if hotspot was previously running when app was killed2022-10-28T10:29:52ZakwizgranHotspot fails to start if hotspot was previously running when app was killedIf the app is killed (eg by revoking permissions) while a hotspot is running, it's not possible to start another hotspot until the phone has been rebooted or the phone's wifi has been turned off and on again.
This is a platform bug, but...If the app is killed (eg by revoking permissions) while a hotspot is running, it's not possible to start another hotspot until the phone has been rebooted or the phone's wifi has been turned off and on again.
This is a platform bug, but we might be able to find a workaround. Some things we could try:
* Call removeGroup() and wait for the async response before calling createGroup()
* If the hotspot fails to start, ask the user to turn wifi off and on again, and perhaps open the settings panel that provides a toggle for this (like we do if wifi is turned off when we're preparing to start the hotspot)https://code.briarproject.org/briar/briar-desktop/-/issues/421Visual bug in forum with large author names2023-01-11T21:49:54ZMikolai GütschowVisual bug in forum with large author namesalthough the name is abbreviated (with ellipsis), the trust indicators are moved to the right:
![grafik](/uploads/258ace9883049e0d3364bc3f46ba8507/grafik.png)although the name is abbreviated (with ellipsis), the trust indicators are moved to the right:
![grafik](/uploads/258ace9883049e0d3364bc3f46ba8507/grafik.png)https://code.briarproject.org/briar/briar/-/issues/2375Android 12 - New installation of Briar under certain conditions - Start Hostp...2022-10-24T11:58:48ZIvanaAndroid 12 - New installation of Briar under certain conditions - Start Hostpot button disabledSteps to reproduce:
- Clean installation of Briar = OK
- "Stop optimising battery usage? " => Allow
- Create Account = OK
- Briar > Settings > Share this app offline (no contacts yet)
- Start Hotspot
- Dialog: Allow Briar Debug access t...Steps to reproduce:
- Clean installation of Briar = OK
- "Stop optimising battery usage? " => Allow
- Create Account = OK
- Briar > Settings > Share this app offline (no contacts yet)
- Start Hotspot
- Dialog: Allow Briar Debug access to devices location?
- I select "Approximate" and "Only this time"
- Start Hotspot screen (again)
- "Location Permission" Dialog "You have denied access to your precise location, but Briar needs this permission to create a wifi hotspot. Please consider granting access". I click OK
- App permissions screen opens = OK
- I tap Permissions, I see location is marked as "Ask every time" - which is OK, as that is what I selected earlier.
- I tap Location and I see the location setting details - the Use Precise Location setting is OFF. I switch it on.
- Then I use the app switcher to go bac to Briar and I see the Start Hotspot screen, but with the Start Hotspot button disabled. See video for details.
Do not keep activities = OFF.
branch tested: 25f99bd7decfb1494462e54c7f92d2a11e025df0
![device-2022-10-24-134926](/uploads/6fbd116207ce0058a516bb0811db1894/device-2022-10-24-134926.mp4)https://code.briarproject.org/briar/briar/-/issues/2374Android 12 - hotspot error when nearby devices = ON and location = OFF2022-10-20T13:14:50ZIvanaAndroid 12 - hotspot error when nearby devices = ON and location = OFFSteps to reproduce:
Android 12 device
- Briar build 25f99bd7decfb1494462e54c7f92d2a11e025df0 is running
- in device settings - set the location permission to Off and nearby devices to ON.
- go back to Briar app > settings > share this...Steps to reproduce:
Android 12 device
- Briar build 25f99bd7decfb1494462e54c7f92d2a11e025df0 is running
- in device settings - set the location permission to Off and nearby devices to ON.
- go back to Briar app > settings > share this app offline
- tap Start hotspot
- a dialog box comes up asking the user to select the precise or approximate location...
- select the approximate location
- Start the Hitspot again
- A message comes up asking the user to set the device location to on (or some such)
- User continues and on the following dialog box selects 'change to precise location'.
- The progress circle starts and the hotspot is opening... and then...
- the error message - see attached screens.
If at the start of this process both nearby devices and location are off, then hotspot starts OK
Interesting maybe - if I go back to Briar > settings and restart the process of sharing the app, the process does not restart, but imemdiately the error screen shows again. And If I log out of Briar all together, and log back in, the same thing happens.
![Screenshot_20221020_133441](/uploads/1b32fff4eb4149c9851d677f06b991e8/Screenshot_20221020_133441.png)
![Screenshot_20221020_133502](/uploads/a660d1ee89930a71a604193a628022b2/Screenshot_20221020_133502.png)
![Screenshot_20221020_133515](/uploads/61cbc6014500fd8af49f8ea663131605/Screenshot_20221020_133515.png)
![Screenshot_20221020_133529](/uploads/9862fd1068b92d40f249f0597eb5ae14/Screenshot_20221020_133529.png)
![Screenshot_20221020_133546](/uploads/fa2ee59a4f6415d3c1ee017acf6ae7e0/Screenshot_20221020_133546.png)https://code.briarproject.org/briar/briar/-/issues/2372Restarting the app after having killed it, shows the last screen displayed be...2022-10-19T12:44:00ZIvanaRestarting the app after having killed it, shows the last screen displayed before killing the app -which hangsSteps to reproduce
Android 12, Samsung device
- In Briar app go to contacts screen and tap create a new nearby contact
- go through the steps as required, and Allow briar to access 'nearby devices'
- when the camera is showing, leave t...Steps to reproduce
Android 12, Samsung device
- In Briar app go to contacts screen and tap create a new nearby contact
- go through the steps as required, and Allow briar to access 'nearby devices'
- when the camera is showing, leave the Briar app and go to device settings, and change the 'nearby devices' setting
- This will kill the Briar app -
- log in again
- The first screen that the user sees after the log in is the camera screen again, which hangs... see attached - it is from this screen that I left the Briar app and went to the device settings
-expectation: after the log in, the Briar main screen should be shown and not the camera screen.
the 'do not keep activities' = Off in this case.
This may not be specifically the Android 12 issue... Will try and reproduce with other phones and add comments
![device-2022-10-19-140006](/uploads/bdc3665c4517e133373a76753dd2b438/device-2022-10-19-140006.mp4)https://code.briarproject.org/briar/briar/-/issues/2371Adding remote contact on API 19 crashes the app.2022-10-18T16:52:29ZFlyingP1g FlyingP1gAdding remote contact on API 19 crashes the app.I was adding a remote contact with virtual device (Nexus 5x API 19), it crashed without even giving briar crash fragment. (Tested multiple times)
Adding a remote contact with virtual device (Pixel 4a API 31) works ok.
I was using master ...I was adding a remote contact with virtual device (Nexus 5x API 19), it crashed without even giving briar crash fragment. (Tested multiple times)
Adding a remote contact with virtual device (Pixel 4a API 31) works ok.
I was using master branch and the latest comit was this 718d95f3d5426f8bbb65b8c8664874bb4f6ac53d
Steps to reproduce:
1) Add contact at distance
2) adb shell input text 'briar link'
3) Go to the next screen
4) give nickname and press add contact (Note: sometimes briar doesn't crash instantly, but later, I was never able to add a contact.)
5) Briar should crash
Last lines in Logcat:
```
2022-10-16 14:25:12.140 2745-2745/org.briarproject.briar.android.debug W/dalvikvm: VFY: unable to resolve virtual method 2963: Landroid/widget/Button;.setAutoSizeTextTypeWithDefaults (I)V
2022-10-16 14:25:12.140 2745-2745/org.briarproject.briar.android.debug D/dalvikvm: VFY: replacing opcode 0x6f at 0x0004
2022-10-16 14:25:12.140 2745-2745/org.briarproject.briar.android.debug I/BaseActivity: Resuming StartupActivity
2022-10-16 14:25:12.180 2745-2745/org.briarproject.briar.android.debug D/: HostConnection::get() New Host Connection established 0xb8e34bc0, tid 2745
2022-10-16 14:25:12.180 2745-2745/org.briarproject.briar.android.debug D/EGL_emulation: eglCreateContext: 0xb8e33a00: maj 3 min 1 rcv 4
2022-10-16 14:25:12.220 2745-2745/org.briarproject.briar.android.debug D/EGL_emulation: eglMakeCurrent: 0xb8e33a00: ver 3 1
2022-10-16 14:25:12.220 2745-2745/org.briarproject.briar.android.debug E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
2022-10-16 14:25:12.220 2745-2745/org.briarproject.briar.android.debug E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf
2022-10-16 14:25:12.220 2745-2745/org.briarproject.briar.android.debug E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824
2022-10-16 14:25:12.220 2745-2745/org.briarproject.briar.android.debug E/EGL_emulation: tid 2745: eglSurfaceAttrib(1199): error 0x3009 (EGL_BAD_MATCH)
2022-10-16 14:25:12.220 2745-2745/org.briarproject.briar.android.debug W/HardwareRenderer: Backbuffer cannot be preserved
2022-10-16 14:25:12.220 2745-2745/org.briarproject.briar.android.debug D/OpenGLRenderer: Enabling debug mode 0
2022-10-16 14:25:12.250 2745-2745/org.briarproject.briar.android.debug I/dalvikvm: Could not find method android.view.View.setTooltipText, referenced from method androidx.appcompat.widget.TooltipCompat.setTooltipText
2022-10-16 14:25:12.250 2745-2745/org.briarproject.briar.android.debug W/dalvikvm: VFY: unable to resolve virtual method 2302: Landroid/view/View;.setTooltipText (Ljava/lang/CharSequence;)V
2022-10-16 14:25:12.250 2745-2745/org.briarproject.briar.android.debug D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006
2022-10-16 14:25:12.270 2745-2745/org.briarproject.briar.android.debug I/BaseActivity: Stopping NavDrawerActivity
```https://code.briarproject.org/briar/briar-desktop/-/issues/390Image compressor unable to compress file to 32kb2022-12-09T08:26:46ZSebastianImage compressor unable to compress file to 32kbI found an image for which our ImageCompressor implementation fails to compress it to the required file size:
https://unsplash.com/photos/EHcIO_3DbOg
This is the log:
```
Exception in thread "Thread-13" java.io.IOException
at o...I found an image for which our ImageCompressor implementation fails to compress it to the required file size:
https://unsplash.com/photos/EHcIO_3DbOg
This is the log:
```
Exception in thread "Thread-13" java.io.IOException
at org.briarproject.briar.desktop.attachment.media.ImageCompressorImpl.compressImage(ImageCompressorImpl.kt:86)
at org.briarproject.briar.desktop.conversation.ConversationViewModel$sendMessage$1.invoke(ConversationViewModel.kt:180)
at org.briarproject.briar.desktop.conversation.ConversationViewModel$sendMessage$1.invoke(ConversationViewModel.kt:175)
at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
```
[ImageCompressorImpl.kt:86](https://code.briarproject.org/briar/briar-desktop/-/blob/main/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressorImpl.kt#L86)
We have this there:
```kotlin
for (quality in 100 downTo 1 step 10) {
val jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next()
jpgWriter.output = ImageIO.createImageOutputStream(out)
val jpgWriteParam = jpgWriter.defaultWriteParam
jpgWriteParam.compressionMode = ImageWriteParam.MODE_EXPLICIT
jpgWriteParam.compressionQuality = quality / 100f
val outputImage = IIOImage(scaled, null, null)
jpgWriter.write(null, outputImage, jpgWriteParam)
jpgWriter.dispose()
if (out.size() <= MAX_IMAGE_SIZE) {
LOG.i { "Compressed image to ${out.size()} bytes, quality $quality" }
return ByteArrayInputStream(out.toByteArray())
}
out.reset()
}
throw IOException()
```
I have not yet debugged this, but I'm wondering what the lowest quality is that we actually try. We start with 100 but do we reach 1 or 10 as the last value? Edit: I just checked. We never reach 1 but the lowest value we try is 10. I guess we probably should change this to try quality 1 and in doubt even reduce image dimensions if even that does not suffice.
This is the full image:
![imran-hecimovic-EHcIO_3DbOg-unsplash](/uploads/800f92fcdac18eb25a9e43417961d99a/imran-hecimovic-EHcIO_3DbOg-unsplash.jpg)https://code.briarproject.org/briar/briar-desktop/-/issues/385IOException on startup2023-04-19T14:32:03ZMikolai GütschowIOException on startupOn current `main`, but only marked as warning at logging time. Doesn't seem to cause further issues, but should probably be adressed at some point.
```
10:34:59.932 [main] WARN o.b.b.s.UnixSecureRandomProvider - java.io.IOException: Op...On current `main`, but only marked as warning at logging time. Doesn't seem to cause further issues, but should probably be adressed at some point.
```
10:34:59.932 [main] WARN o.b.b.s.UnixSecureRandomProvider - java.io.IOException: Operation not permitted
java.io.IOException: Operation not permitted
at java.base/java.io.FileOutputStream.writeBytes(Native Method)
at java.base/java.io.FileOutputStream.write(FileOutputStream.java:349)
at java.base/java.io.DataOutputStream.writeLong(DataOutputStream.java:230)
at org.briarproject.bramble.system.AbstractSecureRandomProvider.writeToEntropyPool(AbstractSecureRandomProvider.java:24)
at org.briarproject.bramble.system.UnixSecureRandomProvider.writeSeed(UnixSecureRandomProvider.java:49)
at org.briarproject.bramble.system.UnixSecureRandomProvider.getProvider(UnixSecureRandomProvider.java:41)
at org.briarproject.bramble.crypto.CryptoComponentImpl.<init>(CryptoComponentImpl.java:85)
at org.briarproject.bramble.crypto.CryptoModule.provideCryptoComponent(CryptoModule.java:32)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.provideCryptoComponent(CryptoModule_ProvideCryptoComponentFactory.java:42)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:31)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:10)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.sync.MessageFactoryImpl_Factory.get(MessageFactoryImpl_Factory.java:21)
at org.briarproject.bramble.sync.MessageFactoryImpl_Factory.get(MessageFactoryImpl_Factory.java:8)
at org.briarproject.bramble.sync.SyncModule_ProvideMessageFactoryFactory.get(SyncModule_ProvideMessageFactoryFactory.java:26)
at org.briarproject.bramble.sync.SyncModule_ProvideMessageFactoryFactory.get(SyncModule_ProvideMessageFactoryFactory.java:9)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseFactory.get(DatabaseModule_ProvideDatabaseFactory.java:36)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseFactory.get(DatabaseModule_ProvideDatabaseFactory.java:12)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseComponentFactory.get(DatabaseModule_ProvideDatabaseComponentFactory.java:40)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseComponentFactory.get(DatabaseModule_ProvideDatabaseComponentFactory.java:13)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl_Factory.get(LifecycleManagerImpl_Factory.java:30)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl_Factory.get(LifecycleManagerImpl_Factory.java:10)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:26)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:9)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.cleanup.CleanupModule_ProvideCleanupManagerFactory.get(CleanupModule_ProvideCleanupManagerFactory.java:35)
at org.briarproject.bramble.cleanup.CleanupModule_ProvideCleanupManagerFactory.get(CleanupModule_ProvideCleanupManagerFactory.java:11)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.briar.desktop.DaggerBriarDesktopTestApp.injectEagerSingletons(DaggerBriarDesktopTestApp.java:1641)
at org.briarproject.briar.desktop.DaggerBriarDesktopTestApp.inject(DaggerBriarDesktopTestApp.java:1493)
at org.briarproject.bramble.BrambleCoreEagerSingletons$Helper.injectEagerSingletons(BrambleCoreEagerSingletons.java:51)
at org.briarproject.briar.desktop.RunWithMultipleTemporaryAccounts.app(RunWithMultipleTemporaryAccounts.kt:91)
at org.briarproject.briar.desktop.RunWithMultipleTemporaryAccounts.run(RunWithMultipleTemporaryAccounts.kt:52)
at org.briarproject.briar.desktop.TestWithTwoConnectedTemporaryAccountsKt.main(TestWithTwoConnectedTemporaryAccounts.kt:28)
at org.briarproject.briar.desktop.TestWithTwoConnectedTemporaryAccountsKt.main(TestWithTwoConnectedTemporaryAccounts.kt)
```https://code.briarproject.org/briar/briar/-/issues/2362Timestamps in contact list (and maybe other lists) aren't updated2022-08-30T13:17:55ZakwizgranTimestamps in contact list (and maybe other lists) aren't updatedTimestamps in the contact list aren't updated if the screen timeout is set to less than 1 minute, as the refresher task is cancelled when the screen turns off.
Other BriarRecyclerViews may be affected if they don't reload their data or ...Timestamps in the contact list aren't updated if the screen timeout is set to less than 1 minute, as the refresher task is cancelled when the screen turns off.
Other BriarRecyclerViews may be affected if they don't reload their data or redraw their lists when started/resumed.https://code.briarproject.org/briar/dont-kill-me-lib/-/issues/3Huawei app launch intent doesn't work on P40 Lite 5G2023-08-24T14:46:52ZakwizgranHuawei app launch intent doesn't work on P40 Lite 5GOn the Huawei P40 Lite 5G (Android 10, EMUI 12.0.0), `HuaweiUtils.appLaunchNeedsToBeShown()` returns `true` but none of the intents in `huaweiAppLaunchIntents` can be used to open an activity.On the Huawei P40 Lite 5G (Android 10, EMUI 12.0.0), `HuaweiUtils.appLaunchNeedsToBeShown()` returns `true` but none of the intents in `huaweiAppLaunchIntents` can be used to open an activity.https://code.briarproject.org/briar/briar-mailbox/-/issues/154Last connection on the mailbox status screen not updating as minutes pass by2023-08-28T16:00:11ZIvanaLast connection on the mailbox status screen not updating as minutes pass bySteps to reproduce
- do not keep activities = ON
- on any two device where Briar and Mailbox are linked check the values for last connection.
- this can be after initial linking, or after the screens have fallen asleep and been woken ...Steps to reproduce
- do not keep activities = ON
- on any two device where Briar and Mailbox are linked check the values for last connection.
- this can be after initial linking, or after the screens have fallen asleep and been woken up, or after the link Check Connection on Briar is tapped
- What happens is that initially both values are set to 'now' and the Briar device then updates its 'last connection' value as minutes roll by, but the mailbox device does not.
- Here are the photos to illustrate
- Whilst I was typing this and taking the photos, the difference has become 7 mins...
- after the mailbox screen falls asleep and is reactivate by the user - the value is reset to the correct value - ie the same as on the Briar app
- Andanother microscoping inconsistency with briar screens - on mailbox Last connection says 1 min. ago, on Briar it says 1 min ago. Ie in one place we have a full stop after the short 'min', and in the other place we do not. This really is splitting hairs, but I thought as we will be looking into it anyway, we may as well make it consistent. It should take only a milisecond to do it.
![20220808_145527](/uploads/5d30834bc307c2391773262381aaee21/20220808_145527.jpg)
![20220808_145620](/uploads/030d1fd2ad075b07f3fbef23471a3564/20220808_145620.jpg)
![20220808_145714](/uploads/610ee7753f5ae0066fa0694ddcd70742/20220808_145714.jpg)https://code.briarproject.org/briar/briar/-/issues/2349SecurityException when setting clipboard contents2022-07-13T15:05:41ZakwizgranSecurityException when setting clipboard contents* Android version: 10
* Phone model: Realme RMX2020 (RMX2020RU)
* Briar version: 1.4.9 (592daf9)
Stacktrace:
```
java.lang.SecurityException: com.miHoYo.GenshinImpact from uid 10622 not allowed to perform READ_CLIPBOARD
at andro...* Android version: 10
* Phone model: Realme RMX2020 (RMX2020RU)
* Briar version: 1.4.9 (592daf9)
Stacktrace:
```
java.lang.SecurityException: com.miHoYo.GenshinImpact from uid 10622 not allowed to perform READ_CLIPBOARD
at android.os.Parcel.createException(Parcel.java:2087)
at android.os.Parcel.readException(Parcel.java:2055)
at android.os.Parcel.readException(Parcel.java:2003)
at android.content.IClipboard$Stub$Proxy.setPrimaryClip(IClipboard.java:293)
at android.content.ClipboardManager.setPrimaryClip(ClipboardManager.java:106)
at org.briarproject.briar.android.contact.add.remote.LinkExchangeFragment.lambda$onHandshakeLinkLoaded$1(LinkExchangeFragment.java:130)
at org.briarproject.briar.android.contact.add.remote.LinkExchangeFragment.$r8$lambda$7puQg0Zpj-kqg_hU0AyYfKEiXJI(Unknown Source:0)
at org.briarproject.briar.android.contact.add.remote.LinkExchangeFragment$$ExternalSyntheticLambda2.onClick(Unknown Source:4)
at android.view.View.performClick(View.java:7254)
at android.view.View.performClickInternal(View.java:7212)
at android.view.View.access$3800(View.java:828)
at android.view.View$PerformClick.run(View.java:27888)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:227)
at android.app.ActivityThread.main(ActivityThread.java:7822)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
Caused by: android.os.RemoteException: Remote stack trace:
at android.app.AppOpsManager.noteOp(AppOpsManager.java:5344)
at com.android.server.clipboard.ClipboardService.clipboardAccessAllowed(ClipboardService.java:759)
at com.android.server.clipboard.ClipboardService.setPrimaryClipInternal(ClipboardService.java:599)
at com.android.server.clipboard.ClipboardService.setPrimaryClipInternal(ClipboardService.java:530)
at com.android.server.clipboard.ClipboardService$ClipboardImpl.setPrimaryClip(ClipboardService.java:369)
```
Last lines of log:
```
07-10 20:03:40.221 W/BriarService: Trim memory: running critically low
07-10 20:03:40.222 I/BriarService: Clearing Glide cache
07-10 20:03:40.459 I/BaseActivity: Destroying NavDrawerActivity
07-10 20:03:45.769 I/BriarService: Trim memory: running low
07-10 20:03:45.769 I/BriarService: Clearing Glide cache
07-10 20:03:49.532 I/BaseActivity: Creating SplashScreenActivity
07-10 20:03:49.608 I/BaseActivity: Creating NavDrawerActivity
07-10 20:03:49.670 I/BaseActivity: Starting NavDrawerActivity
07-10 20:03:49.675 I/BaseActivity: Resuming NavDrawerActivity
07-10 20:03:49.840 I/BaseActivity: Destroying SplashScreenActivity
07-10 20:03:52.103 I/BaseActivity: Pausing NavDrawerActivity
07-10 20:03:52.128 I/BaseActivity: Creating AddContactActivity
07-10 20:03:52.183 I/BaseActivity: Starting AddContactActivity
07-10 20:03:52.184 I/BaseActivity: Resuming AddContactActivity
07-10 20:03:52.702 I/BaseActivity: Stopping NavDrawerActivity
```
I don't understand why Briar would receive a SecurityException when setting the primary clip, if a different app (Genshin Impact) doesn't have permission to read the clipboard. Still, perhaps we should catch this exception rather than crashing.https://code.briarproject.org/briar/briar/-/issues/2345NPE when unlocking app2022-06-29T10:44:12ZakwizgranNPE when unlocking app* Android version: 9
* Phone model: Huawei ANE-LX1
* Briar version: 1.4.8 (6e61827)
Stacktrace:
```
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=11, result=0, data=null} to activity {org.briarprojec...* Android version: 9
* Phone model: Huawei ANE-LX1
* Briar version: 1.4.8 (6e61827)
Stacktrace:
```
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=11, result=0, data=null} to activity {org.briarproject.briar.android/org.briarproject.briar.android.navdrawer.NavDrawerActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.android.server.fingerprint.ClientMonitor.stop(boolean)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:5078)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5120)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.android.server.fingerprint.ClientMonitor.stop(boolean)' on a null object reference
at android.os.Parcel.createException(Parcel.java:1965)
at android.os.Parcel.readException(Parcel.java:1927)
at android.os.Parcel.readException(Parcel.java:1877)
at android.app.IActivityManager$Stub$Proxy.finishActivity(IActivityManager.java:3774)
at android.app.Activity.finish(Activity.java:5905)
at android.app.Activity.finish(Activity.java:5929)
at android.app.Activity.finishAfterTransition(Activity.java:5990)
at androidx.core.app.ActivityCompat.finishAfterTransition(ActivityCompat.java:305)
at androidx.fragment.app.FragmentActivity.supportFinishAfterTransition(FragmentActivity.java:178)
at org.briarproject.briar.android.activity.BriarActivity.onActivityResult(BriarActivity.java:91)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.onActivityResult(NavDrawerActivity.java:223)
at android.app.Activity.dispatchActivityResult(Activity.java:7797)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5071)
... 11 more
```
Edited log:
```
06-20 12:03:16.624 I/BriarService: Trim memory: running moderately low
06-20 12:03:16.624 I/BriarService: Clearing Glide cache
06-20 12:03:17.244 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
06-20 12:03:28.006 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_OFF
06-20 12:07:38.666 I/BaseActivity: Starting NavDrawerActivity
06-20 12:07:38.671 I/BaseActivity: Resuming NavDrawerActivity
06-20 12:07:38.672 I/BriarActivity: Locked, launching UnlockActivity
06-20 12:07:38.799 I/BaseActivity: Pausing NavDrawerActivity
06-20 12:07:38.840 I/BaseActivity: Creating UnlockActivity
06-20 12:07:38.872 I/BaseActivity: Starting UnlockActivity
06-20 12:07:38.874 I/BaseActivity: Resuming UnlockActivity
06-20 12:07:39.133 I/BaseActivity: Stopping NavDrawerActivity
06-20 12:07:39.655 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
06-20 12:07:39.793 I/BaseActivity: Pausing UnlockActivity
```
The SCREEN_ON broadcast seems to have been received nearly a second after NavDrawerActivity was started and replaced by UnlockActivity. The broadcasts are sometimes delivered late so I'm not sure if that's relevant.
The device has `"android.hardware.fingerprint" : true`.https://code.briarproject.org/briar/briar/-/issues/2334IllegalArgumentException: Center point is not inside any of the rectangles2022-06-13T15:46:19ZakwizgranIllegalArgumentException: Center point is not inside any of the rectangles* Android version: 11
* Phone model: Realme RMX3085 (RMX3085RU)
* Briar version: 1.4.5 (4df523a)
Last lines of log:
```
03-06 17:10:56.730 I/BaseActivity: Pausing ConversationActivity
03-06 17:10:56.741 I/BaseActivity: Starting NavDrawe...* Android version: 11
* Phone model: Realme RMX3085 (RMX3085RU)
* Briar version: 1.4.5 (4df523a)
Last lines of log:
```
03-06 17:10:56.730 I/BaseActivity: Pausing ConversationActivity
03-06 17:10:56.741 I/BaseActivity: Starting NavDrawerActivity
03-06 17:10:56.741 I/BaseActivity: Resuming NavDrawerActivity
03-06 17:10:57.210 I/BaseActivity: Stopping ConversationActivity
03-06 17:10:57.213 I/BaseActivity: Destroying ConversationActivity
03-06 17:11:01.090 I/BaseActivity: Pausing NavDrawerActivity
03-06 17:11:01.100 I/BaseActivity: Creating ConversationActivity
03-06 17:11:01.108 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
03-06 17:11:01.121 I/BaseActivity: Starting ConversationActivity
03-06 17:11:01.123 I/BaseActivity: Resuming ConversationActivity
03-06 17:11:01.159 I/ConversationActivity: Eagerly loading text for latest message
03-06 17:11:01.577 I/BaseActivity: Stopping NavDrawerActivity
03-06 17:11:02.299 I/BaseActivity: Pausing ConversationActivity
03-06 17:11:02.309 I/BaseActivity: Starting NavDrawerActivity
03-06 17:11:02.309 I/BaseActivity: Resuming NavDrawerActivity
03-06 17:11:02.781 I/BaseActivity: Stopping ConversationActivity
03-06 17:11:02.783 I/BaseActivity: Destroying ConversationActivity
03-06 17:11:03.434 I/BaseActivity: Pausing NavDrawerActivity
03-06 17:11:03.447 I/BaseActivity: Creating ConversationActivity
03-06 17:11:03.452 I/ConversationViewModel: PrivateMessageFormat loaded: TEXT_IMAGES_AUTO_DELETE
03-06 17:11:03.468 I/BaseActivity: Starting ConversationActivity
03-06 17:11:03.469 I/BaseActivity: Resuming ConversationActivity
03-06 17:11:03.506 I/ConversationActivity: Eagerly loading text for latest message
03-06 17:11:03.923 I/BaseActivity: Stopping NavDrawerActivity
```
Stacktrace:
```
java.lang.IllegalArgumentException: Center point is not inside any of the rectangles!
at android.widget.SmartSelectSprite.startAnimation(SmartSelectSprite.java:391)
at android.widget.SelectionActionModeHelper.startSelectionActionModeWithSmartSelectAnimation(SelectionActionModeHelper.java:357)
at android.widget.SelectionActionModeHelper.lambda$l1f1_V5lw6noQxI_3u11qF753Iw(Unknown Source:0)
at android.widget.-$$Lambda$SelectionActionModeHelper$l1f1_V5lw6noQxI_3u11qF753Iw.accept(Unknown Source:4)
at android.widget.SelectionActionModeHelper$TextClassificationAsyncTask.onPostExecute(SelectionActionModeHelper.java:1039)
at android.widget.SelectionActionModeHelper$TextClassificationAsyncTask.onPostExecute(SelectionActionModeHelper.java:993)
at android.os.AsyncTask.finish(AsyncTask.java:771)
at android.os.AsyncTask.access$900(AsyncTask.java:199)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:788)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:255)
at android.app.ActivityThread.main(ActivityThread.java:8232)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
```
Possibly a platform bug that was triggered when selecting text?https://code.briarproject.org/briar/briar/-/issues/2333AssertionError in TextAttachmentController when previewing attachments2022-06-13T15:40:19ZakwizgranAssertionError in TextAttachmentController when previewing attachments* Android version: 9
* Phone model: Tecno KC2j (H6113)
* Briar version: 1.4.5 (4df523a)
Edited log:
```
03-23 21:53:07.213 I/BaseActivity: Starting ConversationActivity
03-23 21:53:07.214 I/BaseActivity: Resuming ConversationActivity
03...* Android version: 9
* Phone model: Tecno KC2j (H6113)
* Briar version: 1.4.5 (4df523a)
Edited log:
```
03-23 21:53:07.213 I/BaseActivity: Starting ConversationActivity
03-23 21:53:07.214 I/BaseActivity: Resuming ConversationActivity
03-23 21:53:17.378 I/BaseActivity: Pausing ConversationActivity
03-23 21:53:17.827 I/BaseActivity: Stopping ConversationActivity
03-23 21:53:18.516 I/BaseActivity: Starting ConversationActivity
03-23 21:53:18.518 I/BaseActivity: Resuming ConversationActivity
03-23 21:53:19.508 I/BaseActivity: Pausing ConversationActivity
03-23 21:53:19.557 I/ConversationActivity: Concurrent update, reloading
03-23 21:53:19.906 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
03-23 21:53:20.007 I/BaseActivity: Stopping ConversationActivity
03-23 21:53:20.065 I/ContactsViewModel: Conversation message tracked, updating item
03-23 21:53:21.340 I/AutoDeleteManagerImpl: Sending message with auto-delete timer -1
03-23 21:53:21.467 I/ContactsViewModel: Conversation message tracked, updating item
03-23 21:53:21.533 I/BaseActivity: Starting ConversationActivity
03-23 21:53:21.550 I/BaseActivity: Resuming ConversationActivity
03-23 21:53:21.583 I/ImageCompressorImpl: Original image size: 640x1337
03-23 21:53:21.583 I/ImageCompressorImpl: Scaling attachment by factor of 2
03-23 21:53:21.657 I/ImageCompressorImpl: Compressed image to 28878 bytes, quality 60
03-23 21:53:41.496 I/AndroidTaskScheduler: Running 1 due tasks
03-23 21:53:41.496 I/AndroidTaskScheduler: Task is 2 ms overdue
03-23 21:53:42.337 I/AndroidTaskScheduler: Running 1 due tasks
03-23 21:53:42.337 I/AndroidTaskScheduler: Task is 1 ms overdue
03-23 21:53:54.255 I/ConversationActivity: Eagerly loading text for latest message
03-23 21:53:54.495 I/ConversationActivity: Concurrent update, reloading
```
Stacktrace:
```
java.lang.AssertionError
at org.briarproject.briar.android.view.TextAttachmentController.onNewAttachmentItemResults(TextAttachmentController.java:200)
at org.briarproject.briar.android.view.TextAttachmentController.access$000(TextAttachmentController.java:44)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:187)
at org.briarproject.briar.android.view.TextAttachmentController$1.onChanged(TextAttachmentController.java:179)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:93)
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:6758)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:912)
```
This looks similar to #2218 but it's a different assertion that's failing.Android 1.4https://code.briarproject.org/briar/briar/-/issues/2332NPE in AutofillManager2022-06-13T15:14:03ZakwizgranNPE in AutofillManager* Android version: 12
* Phone model: OnePlus LE2125 (OnePlus9Pro)
* Briar version: 1.4.5 (4df523a)
Log:
```
03-16 13:27:13.111 I/BriarApplicationImpl: Created
03-16 13:27:13.125 I/BaseActivity: Creating SplashScreenActivity
03-16 13:27:...* Android version: 12
* Phone model: OnePlus LE2125 (OnePlus9Pro)
* Briar version: 1.4.5 (4df523a)
Log:
```
03-16 13:27:13.111 I/BriarApplicationImpl: Created
03-16 13:27:13.125 I/BaseActivity: Creating SplashScreenActivity
03-16 13:27:13.137 I/BaseActivity: Starting SplashScreenActivity
03-16 13:27:13.137 I/BaseActivity: Resuming SplashScreenActivity
03-16 13:27:13.656 I/BaseActivity: Pausing SplashScreenActivity
03-16 13:27:13.666 I/BaseActivity: Creating NavDrawerActivity
03-16 13:27:13.682 I/BaseActivity: Starting NavDrawerActivity
03-16 13:27:13.683 I/BaseActivity: Resuming NavDrawerActivity
03-16 13:27:13.683 I/BriarActivity: Not signed in, launching StartupActivity
03-16 13:27:13.690 I/BaseActivity: Pausing NavDrawerActivity
03-16 13:27:13.697 I/BaseActivity: Creating StartupActivity
03-16 13:27:13.701 I/AccountManagerImpl: Found database key in primary file
03-16 13:27:13.701 I/BaseActivity: Starting StartupActivity
03-16 13:27:13.709 I/BaseActivity: Resuming StartupActivity
03-16 13:27:13.739 I/BaseActivity: Stopping NavDrawerActivity
03-16 13:27:14.167 I/BaseActivity: Stopping SplashScreenActivity
03-16 13:27:14.167 I/BaseActivity: Destroying SplashScreenActivity
03-16 13:27:16.222 I/BaseActivity: Pausing StartupActivity
03-16 13:27:17.069 I/BaseActivity: Stopping StartupActivity
```
Stacktrace:
```
Failure delivering result ResultInfo{who=@android:autoFillAuth:, request=1048576, result=-1, data=Intent { }} to activity {org.briarproject.briar.android/org.briarproject.briar.android.login.StartupActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.containsKey(java.lang.String)' on a null object reference
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:autoFillAuth:, request=1048576, result=-1, data=Intent { }} to activity {org.briarproject.briar.android/org.briarproject.briar.android.login.StartupActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.containsKey(java.lang.String)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:5510)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5549)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2341)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:233)
at android.os.Looper.loop(Looper.java:344)
at android.app.ActivityThread.main(ActivityThread.java:8184)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.containsKey(java.lang.String)' on a null object reference
at android.view.autofill.AutofillManager.onAuthenticationResult(AutofillManager.java:1798)
at android.app.Activity.dispatchActivityResult(Activity.java:8494)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5503)
```https://code.briarproject.org/briar/briar/-/issues/2331KeyStoreException: Invalid key blob2024-03-19T16:03:18ZakwizgranKeyStoreException: Invalid key blob* Android version: 11
* Phone model: Samsung SM-G970F (beyond0ltexx)
* Briar version: 1.4.5 (4df523a)
* User feedback: "I tried to login, entered my password and then Briar just crashed. I used this account before. But then I restored my...* Android version: 11
* Phone model: Samsung SM-G970F (beyond0ltexx)
* Briar version: 1.4.5 (4df523a)
* User feedback: "I tried to login, entered my password and then Briar just crashed. I used this account before. But then I restored my phone from the backup I made a month ago."
Log:
```
03-07 19:47:35.275 I/BriarApplicationImpl: Created
03-07 19:47:35.321 I/AccountManagerImpl: Found database key in primary file
03-07 19:47:39.685 I/BaseActivity: Creating SplashScreenActivity
03-07 19:47:39.700 I/BaseActivity: Starting SplashScreenActivity
03-07 19:47:39.702 I/BaseActivity: Resuming SplashScreenActivity
03-07 19:47:40.210 I/BaseActivity: Pausing SplashScreenActivity
03-07 19:47:40.222 I/BaseActivity: Creating NavDrawerActivity
03-07 19:47:40.266 I/BaseActivity: Starting NavDrawerActivity
03-07 19:47:40.270 I/BaseActivity: Resuming NavDrawerActivity
03-07 19:47:40.270 I/BriarActivity: Not signed in, launching StartupActivity
03-07 19:47:40.277 I/BaseActivity: Pausing NavDrawerActivity
03-07 19:47:40.282 I/BaseActivity: Creating StartupActivity
03-07 19:47:40.288 I/AccountManagerImpl: Found database key in primary file
03-07 19:47:40.289 I/BaseActivity: Starting StartupActivity
03-07 19:47:40.303 I/BaseActivity: Resuming StartupActivity
03-07 19:47:40.394 I/BaseActivity: Stopping NavDrawerActivity
03-07 19:47:40.803 I/BaseActivity: Stopping SplashScreenActivity
03-07 19:47:40.804 I/BaseActivity: Destroying SplashScreenActivity
03-07 19:47:47.649 I/AccountManagerImpl: Found database key in primary file
03-07 19:47:48.424 I/AndroidKeyStrengthener: Loaded key from keystore
```
Stacktrace:
```
java.lang.RuntimeException: java.security.InvalidKeyException: Keystore operation failed
at org.briarproject.briar.android.AndroidKeyStrengthener.strengthenKey(AndroidKeyStrengthener.java:101)
at org.briarproject.bramble.crypto.CryptoComponentImpl.decryptWithPassword(CryptoComponentImpl.java:412)
at org.briarproject.bramble.account.AccountManagerImpl.loadAndDecryptDatabaseKey(AccountManagerImpl.java:214)
at org.briarproject.bramble.account.AccountManagerImpl.signIn(AccountManagerImpl.java:200)
at org.briarproject.briar.android.login.StartupViewModel.lambda$validatePassword$0(StartupViewModel.java:112)
at org.briarproject.briar.android.login.StartupViewModel.$r8$lambda$5aurY1rQupylNVXCUST5DjfL1L4(Unknown Source:0)
at org.briarproject.briar.android.login.StartupViewModel$$ExternalSyntheticLambda0.run(Unknown Source:4)
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)
Caused by: java.security.InvalidKeyException: Keystore operation failed
at android.security.KeyStore.getInvalidKeyException(KeyStore.java:1383)
at android.security.KeyStore.getInvalidKeyException(KeyStore.java:1393)
at android.security.keystore.KeyStoreCryptoOperationUtils.getInvalidKeyExceptionForInit(KeyStoreCryptoOperationUtils.java:54)
at android.security.keystore.AndroidKeyStoreHmacSpi.ensureKeystoreOperationInitialized(AndroidKeyStoreHmacSpi.java:184)
at android.security.keystore.AndroidKeyStoreHmacSpi.engineInit(AndroidKeyStoreHmacSpi.java:101)
at javax.crypto.Mac.chooseProvider(Mac.java:443)
at javax.crypto.Mac.init(Mac.java:513)
at org.briarproject.briar.android.AndroidKeyStrengthener.strengthenKey(AndroidKeyStrengthener.java:98)
... 9 more
Caused by: android.security.KeyStoreException: Invalid key blob
at android.security.KeyStore.getKeyStoreException(KeyStore.java:1306)
... 16 more
```Android 1.4