briar merge requestshttps://code.briarproject.org/briar/briar/-/merge_requests2019-05-16T08:43:00Zhttps://code.briarproject.org/briar/briar/-/merge_requests/1093Add tests for equivalent handshake public keys2019-05-16T08:43:00ZakwizgranAdd tests for equivalent handshake public keysThis branch adds tests to confirm the solution to a potential security issue described in #1566.This branch adds tests to confirm the solution to a potential security issue described in #1566.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1094Add a REST endpoint for adding contacts2021-10-05T13:08:59ZTorsten GroteAdd a REST endpoint for adding contactsCloses #1256Closes #1256Headless MVPhttps://code.briarproject.org/briar/briar/-/merge_requests/1098Allow pending contacts to be removed at any time2019-05-24T14:49:49ZTorsten GroteAllow pending contacts to be removed at any timeCloses #1554Closes #1554Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1101Pass a connection handler to plugins when polling2019-05-21T13:33:54ZakwizgranPass a connection handler to plugins when pollingThis branch refactors the polling code to pass a connection handler to plugins when polling, rather than the connections being passed to the PluginCallback. This will allow us to pass a different handler when polling for connections to p...This branch refactors the polling code to pass a connection handler to plugins when polling, rather than the connections being passed to the PluginCallback. This will allow us to pass a different handler when polling for connections to pending contacts, without adding a second polling method to the plugins.
The poller is now constructed by Dagger rather than by the PluginManager.
Part of #1232.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1102Remove pending contact state from DB2019-05-22T16:56:59ZakwizgranRemove pending contact state from DBThis branch removes the pending contact state from the DB, as it doesn't need to be persisted across sessions. The ContactManager manages the list of pending contacts (which is persisted). This will be handed over to a new PendingContact...This branch removes the pending contact state from the DB, as it doesn't need to be persisted across sessions. The ContactManager manages the list of pending contacts (which is persisted). This will be handed over to a new PendingContactManager in a future MR, which will also manage the states (not persisted).
The pending contacts returned by the REST API no longer contain states. When getting the list of pending contacts, the state is returned alongside each pending contact.
Part of #1567.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1103Add rendezvous API to transport plugins2019-05-22T16:58:32ZakwizgranAdd rendezvous API to transport plugins
Part of #1564.
Part of #1564.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1105Use predicates to specify records to accept or ignore2019-05-24T16:16:25ZakwizgranUse predicates to specify records to accept or ignoreThis branch refactors the RecordReader used by various protocols to make it easier to specify which rules for which records the reader should accept or ignore. Currently this is implemented in a different way for each protocol, and I did...This branch refactors the RecordReader used by various protocols to make it easier to specify which rules for which records the reader should accept or ignore. Currently this is implemented in a different way for each protocol, and I didn't feel like doing it again for the handshake protocol.
Part of #1232.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1106Contact exchange refactoring2019-05-24T17:33:22ZakwizgranContact exchange refactoringThis branch refactors the contact exchange protocol to make it reusable for remote contacts.
Part of #1232.This branch refactors the contact exchange protocol to make it reusable for remote contacts.
Part of #1232.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1107Add database methods for converting a pending contact2019-05-28T15:42:16ZakwizgranAdd database methods for converting a pending contactCloses #1570Closes #1570Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1108Implement triple Diffie-Hellman key agreement2019-05-27T17:49:06ZakwizgranImplement triple Diffie-Hellman key agreementThis branch implements triple Diffie-Hellman key agreement to agree an ephemeral shared secret, authenticated by static public keys from both parties. This will be used in the handshake protocol.
Part of #1232This branch implements triple Diffie-Hellman key agreement to agree an ephemeral shared secret, authenticated by static public keys from both parties. This will be used in the handshake protocol.
Part of #1232Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1109Clean up connection manager, ready for pending contacts2019-05-29T15:16:36ZakwizgranClean up connection manager, ready for pending contactsPart of #1571Part of #1571Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1110Add method to get a pending contact2019-05-27T17:51:59ZakwizgranAdd method to get a pending contactPart of #1232Part of #1232Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1111Add support for pending contacts to connection registry2019-05-28T15:20:12ZakwizgranAdd support for pending contacts to connection registryPart of #1571Part of #1571Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1114Add contact manager and key manager methods for converting a pending contact2019-06-03T14:33:22ZakwizgranAdd contact manager and key manager methods for converting a pending contactThird attempt, this time solving the tag reuse issue by deriving a new root key for handshake mode when the pending contact becomes a contact. Keys are no longer transferred inside the DB. Instead we derive the new keys, remove the pendi...Third attempt, this time solving the tag reuse issue by deriving a new root key for handshake mode when the pending contact becomes a contact. Keys are no longer transferred inside the DB. Instead we derive the new keys, remove the pending contact and add the contact.
The static master key is derived while holding a database transaction, which is acceptable but not ideal as this is an expensive crypto operation. We could consider moving this onto the crypto executor in future, which would mean splitting ContactManager#addPendingContact() into separate create and add methods, and likewise for the addContact() method that takes a pending contact ID. The static master key would become a PendingContact field, and would be stored in the DB, saving us the cost of re-deriving it (at startup to get the rendezvous keys, and when converting the pending contact to a contact). These are fairly big changes that can be deferred, so I thought I'd put this up for review first.
Closes #1570Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1116Test sync at a higher level2019-06-04T10:37:33ZakwizgranTest sync at a higher levelThis branch changes the way the integration tests simulate a connection between devices, so that the key management and crypto code is included in the test.
Part of #1232.This branch changes the way the integration tests simulate a connection between devices, so that the key management and crypto code is included in the test.
Part of #1232.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1118Implement handshake protocol2019-06-04T11:49:12ZakwizgranImplement handshake protocolThis branch adds a ContactExchangeManager method for exchanging identities with a pending contact, and a new HandshakeManager that performs a handshake to establish an ephemeral shared secret authenticated with both parties' long-term ha...This branch adds a ContactExchangeManager method for exchanging identities with a pending contact, and a new HandshakeManager that performs a handshake to establish an ephemeral shared secret authenticated with both parties' long-term handshake key pairs.
Part of #1232.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1120Add rendezvous connection support to connection manager2019-06-04T14:08:07ZakwizgranAdd rendezvous connection support to connection managerCloses #1571Closes #1571Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1121Create poller for rendezvous connections2019-06-05T17:08:32ZakwizgranCreate poller for rendezvous connectionsThis branch adds a poller for rendezvous connections. The poller manages a rendezvous endpoint for each pair of a pending contact and an enabled transport. The endpoint is closed when the transport is disabled or the pending contact expi...This branch adds a poller for rendezvous connections. The poller manages a rendezvous endpoint for each pair of a pending contact and an enabled transport. The endpoint is closed when the transport is disabled or the pending contact expires or is removed. Endpoints are created by plugins that support rendezvous, which in the first iteration will only be the Tor plugin.
The poller listens for PendingContactAdded/RemovedEvents and TransportEnabled/DisabledEvents, and broadcasts a RendezvousFailedEvent when a pending contact expires.
The polling interval is 1 minute. Once we've tested this we may want to implement some kind of backoff - for example, increasing each endpoint's interval by 1 minute for each hour the endpoint has been open, up to a maximum of 10 minutes. However, I plan to keep the intervals aligned to multiples of 1 minute so we can use a single periodic task, which should make power management easier.
Newly added pending contacts are polled immediately, which should allow us to make a quick connection even if the local and remote devices have both recently polled and therefore won't make another periodic poll for nearly a full interval.
Closes #1567Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1122Add ContactManager support for pending contact states2019-06-06T21:31:44ZakwizgranAdd ContactManager support for pending contact statesPart of #1232.Part of #1232.Android 1.2https://code.briarproject.org/briar/briar/-/merge_requests/1124Transfer pending contact alias to contact2019-06-05T17:11:49ZakwizgranTransfer pending contact alias to contactThis branch transfers the pending contact's alias to the newly created contact, unless it's the same as the contact's own nickname.
Part of #1232.This branch transfers the pending contact's alias to the newly created contact, unless it's the same as the contact's own nickname.
Part of #1232.Android 1.2