briar issueshttps://code.briarproject.org/groups/briar/-/issues2018-06-12T11:32:42Zhttps://code.briarproject.org/briar/briar/-/issues/1Migrate issues from Sourceforge2018-06-12T11:32:42ZakwizgranMigrate issues from Sourceforgehttp://sourceforge.net/p/briar/_list/tickets?source=navbarhttp://sourceforge.net/p/briar/_list/tickets?source=navbarMilestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/21Unit tests for encryption using test vectors2020-11-21T20:32:16ZakwizgranUnit tests for encryption using test vectorshttps://code.briarproject.org/briar/briar/-/issues/22Build external dependencies from source2020-11-21T20:31:32ZakwizgranBuild external dependencies from sourceCreate a build script for building the external dependencies from source. Code should be cloned from git rather than bundled - create a repo on code.briarproject.org if no suitable upstream repo is available.
For Java libraries, ensure ...Create a build script for building the external dependencies from source. Code should be cloned from git rather than bundled - create a repo on code.briarproject.org if no suitable upstream repo is available.
For Java libraries, ensure the target version is set to 6 for Android compatibility.https://code.briarproject.org/briar/briar/-/issues/23Raise minimum Android version to 2.32018-06-12T11:32:40ZakwizgranRaise minimum Android version to 2.3Update the minSdkVersion to 9, remove any workarounds for older APIs. Wave goodbye to the Huawei U8110...Update the minSdkVersion to 9, remove any workarounds for older APIs. Wave goodbye to the Huawei U8110...Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/24Raise minimum Java version to 62018-06-12T11:32:40ZakwizgranRaise minimum Java version to 6Upgrade H2 and any other libraries that were held back for Java 5 compatibility. Remove any workarounds for older APIs, such as `new IOException(e.toString())`.Upgrade H2 and any other libraries that were held back for Java 5 compatibility. Remove any workarounds for older APIs, such as `new IOException(e.toString())`.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/25Replace JNotify with WatchService2018-05-31T09:01:35ZakwizgranReplace JNotify with WatchServiceDesktophttps://code.briarproject.org/briar/briar-desktop/-/issues/340Detect when LAN IP address changes2022-04-18T09:39:50ZakwizgranDetect when LAN IP address changesThis already works on Android, but how to do it on the desktop is an open question.This already works on Android, but how to do it on the desktop is an open question.https://code.briarproject.org/briar/briar/-/issues/27Detect when LAN IP address changes2022-04-20T14:53:37ZakwizgranDetect when LAN IP address changesThis already works on Android, but how to do it on the desktop is an open question.This already works on Android, but how to do it on the desktop is an open question.https://code.briarproject.org/briar/briar/-/issues/29Use ints instead of byte arrays as DB keys?2018-06-12T11:32:40ZakwizgranUse ints instead of byte arrays as DB keys?Primary keys and foreign keys for many tables are unique IDs; performance may be improved by using ints instead.
https://groups.google.com/d/msg/h2-database/fAl49EWpHx0/tikMFAj_eo0JPrimary keys and foreign keys for many tables are unique IDs; performance may be improved by using ints instead.
https://groups.google.com/d/msg/h2-database/fAl49EWpHx0/tikMFAj_eo0Jhttps://code.briarproject.org/briar/briar/-/issues/31Use built-in error correction for modem plugin?2022-04-18T09:39:27ZakwizgranUse built-in error correction for modem plugin?
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) co...
Newer dialup modems (presumably the majority of those still in use) support error correction via V.42 LAPM and/or MNP. This may be sufficient to carry BTP without an intermediate reliability layer. If so, the reliability code (SLTP) could be removed, reducing the size of the codebase and making BTP connections harder to identify: they would simply be SLIP-framed random data. (SLIP-framed UDP packets full of random data would be another easily implemented option, if that would be less likely to stand out.)
AT commands for enabling error correction (on which modems?):
* AT\N2: Require error correction, report NO CARRIER if the other end doesn't support it.
* AT&Q5: Try to negotiate an error corrected link.https://code.briarproject.org/briar/briar/-/issues/35Break up DatabaseComponent interface2020-11-21T20:28:33ZakwizgranBreak up DatabaseComponent interfaceThis monolithic interface should be separated into smaller interfaces relevant to different components.This monolithic interface should be separated into smaller interfaces relevant to different components.https://code.briarproject.org/briar/briar/-/issues/36Break up CryptoComponent interface2020-11-21T20:28:14ZakwizgranBreak up CryptoComponent interfaceThis monolithic interface should be separated into smaller interfaces relevant to different components.This monolithic interface should be separated into smaller interfaces relevant to different components.https://code.briarproject.org/briar/briar/-/issues/48Test the effect of restricting background data2020-11-21T20:22:58ZakwizgranTest the effect of restricting background dataAndroid has settings to prevent individual apps or all apps from using background data. "Restricting background data usage for individual apps can sometimes be a useful way to reduce your overall data usage. However, this is a drastic me...Android has settings to prevent individual apps or all apps from using background data. "Restricting background data usage for individual apps can sometimes be a useful way to reduce your overall data usage. However, this is a drastic measure that may also affect the app's performance or cause it to malfunction."
https://support.google.com/nexus/answer/2819524
Test how these settings affect Briar.https://code.briarproject.org/briar/briar/-/issues/49Test the effect of clearing background processes2020-11-21T20:22:30ZakwizgranTest the effect of clearing background processesSamsung's task manager has a 'Clear memory' feature that clears inactive and background processes. Test what effect this has when Briar is running. Does it kill the Briar process and/or the Tor process? Does it call BriarService's `onLow...Samsung's task manager has a 'Clear memory' feature that clears inactive and background processes. Test what effect this has when Briar is running. Does it kill the Briar process and/or the Tor process? Does it call BriarService's `onLowMemory()` callback?https://code.briarproject.org/briar/briar/-/issues/50Test Briar on Android devices outside the Google ecosystem2020-11-21T20:22:13ZakwizgranTest Briar on Android devices outside the Google ecosystemVarious manufacturers produce Android devices outside the Google ecosystem, including Blackberry, Xiaomi, Amazon and Nokia. Test Briar on as many of these platforms as possible to ensure it's compatible with whatever modifications they'v...Various manufacturers produce Android devices outside the Google ecosystem, including Blackberry, Xiaomi, Amazon and Nokia. Test Briar on as many of these platforms as possible to ensure it's compatible with whatever modifications they've made.https://code.briarproject.org/briar/briar/-/issues/51Can we trigger the TRIM command on Android?2020-11-16T11:04:26ZakwizgranCan we trigger the TRIM command on Android?Android 4.3 uses the TRIM command to erase blocks of flash that are unused by the filesystem. This could improve our chances of securely deleting data on Android.
MountService issues the TRIM command once every 24 hours if the device is...Android 4.3 uses the TRIM command to erase blocks of flash that are unused by the filesystem. This could improve our chances of securely deleting data on Android.
MountService issues the TRIM command once every 24 hours if the device is idle and charged, as determined by `IdleMaintenanceService`:
https://android.googlesource.com/platform/frameworks/base/+/master/services/java/com/android/server/IdleMaintenanceService.java
Investigate whether we can broadcast any of the intents issued by `IdleMaintenanceService` to cause a TRIM on demand, e.g. in a panic button situation after deleting the database.
We can broadcast an intent with the action `"com.android.server.IdleMaintenanceService.action.FORCE_IDLE_MAINTENANCE"`, but it's not clear whether that has any effect - nothing shows up in the logs on a Galaxy Nexus with Android 4.3 when the intent is broadcast.
When `IdleMaintenanceService` decides (due to receiving the above intent or otherwise) that it's time to run idle maintenance tasks, it broadcasts an intent with the action `"android.intent.action.ACTION_IDLE_MAINTENANCE_START"`. According to the `Intent` javadoc, that intent "can only be sent by the system":
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/Intent.java
Alternatively, we might be able to invoke `android.app.ActivityManagerNative.getDefault().performIdleMaintenance()` via reflection. The method in question was added in September 2013:
https://android.googlesource.com/platform/frameworks/base/+blame/master/core/java/android/app/ActivityManagerNative.java
It's included in the `kitkat-release` branch but not the `jb-release` branch, so we'd need a phone with 4.4 to test this.https://code.briarproject.org/briar/briar/-/issues/53Use XML for Android layouts2018-06-12T11:32:40ZakwizgranUse XML for Android layoutsThe Android UI uses Java rather than XML to define its layouts -- that's easier for developers but harder for designers, who can't use the graphical layout tools. We should use XML, which is the standard way to define layouts on Android.The Android UI uses Java rather than XML to define its layouts -- that's easier for developers but harder for designers, who can't use the graphical layout tools. We should use XML, which is the standard way to define layouts on Android.Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/54Support simplex transports where the recipient makes the connection2020-11-21T20:19:22ZakwizgranSupport simplex transports where the recipient makes the connectionFor the simplex transports we've considered so far, such as USB sticks and radio broadcasts, the sender of a stream is the one who creates the underlying transport connection. But it's possible for a transport to operate the other way ro...For the simplex transports we've considered so far, such as USB sticks and radio broadcasts, the sender of a stream is the one who creates the underlying transport connection. But it's possible for a transport to operate the other way round: the recipient opens a connection and receives a stream. Downloading from a web server would be an example.
The plugin architecture should support such transports. This can be deferred until we actually want to implement such a transport.https://code.briarproject.org/briar/briar/-/issues/55Refactor KeyManager and TagRecogniser2018-06-12T11:32:40ZakwizgranRefactor KeyManager and TagRecogniserThese classes are tightly coupled but live in different packages. They both provide StreamContexts - KeyManager for outgoing streams and TagRecogniser for incoming streams. They both hold copies of temporary secrets.These classes are tightly coupled but live in different packages. They both provide StreamContexts - KeyManager for outgoing streams and TagRecogniser for incoming streams. They both hold copies of temporary secrets.Milestone Aakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/56Handle fatal errors2020-11-21T20:18:34ZakwizgranHandle fatal errorsWe should decide how to handle various errors that prevent the app from starting or continuing. Right now these are handled in ad hoc ways such as throwing an Error, which crashes the app. Situations we need to handle include:
* Can't o...We should decide how to handle various errors that prevent the app from starting or continuing. Right now these are handled in ad hoc ways such as throwing an Error, which crashes the app. Situations we need to handle include:
* Can't open the database
* Services fail to start
* Out of disk space
* Clock moves backwards
* Database state is inconsistent (DbStateException)
This is a UX issue as much as a programming issue. How do we communicate these errors to the user and what do we advise them to do?