Commit Graph

1293 Commits

Author SHA1 Message Date
akwizgran db6c813522 Merge branch '117-qr-contacts' into 'master'
BQP with QR codes

This MR implements BQP for key agreement over short-range transports. It also implements the Android UI for using BQP with QR codes.

Closes #117.

See merge request !84
2016-03-31 11:21:02 +00:00
akwizgran 5d1084ae84 Fixed a stupid forum post validation bug.
The signature covers the forum post body, not the message body.
2016-03-31 12:06:28 +01:00
akwizgran 7e3d3625aa Don't allow reentrant transactions.
The database's transaction lock is reentrant, meaning that a thread that's already holding the lock can acquire it again. This would allow a thread that already has a transaction in progress to start another transaction, which could cause transaction isolation issues and/or lock timeouts on the database's internal locks.

Check that the current thread isn't already holding the lock when starting a transaction.
2016-03-31 11:02:52 +01:00
Torsten Grote 54f320465f Add information about whether Contact is active to ContactAddedEvent 2016-03-30 13:36:14 -03:00
Torsten Grote f44cb5ff94 Add an IntroductionManager and Validator
This Introduction BSP Client uses its own group to communicate with
existing contacts. It uses four types of messages to facilitate
introductions: the introduction, the response, the ack and the abort.

The protocol logic is encapsulated in two protocol engines, one for the
introducer and one for the introducee. The introduction client keeps the
local state for each engine, hands messages over to the engines and
processes the result and state changes they return.
2016-03-30 13:36:14 -03:00
Torsten Grote e3459fb0a3 Use given transaction when adding remote properties in TransportPropertyManager. 2016-03-30 13:36:13 -03:00
Torsten Grote 5bde14c694 Add a contactExists() method to the contactManager
This requires exposing the `containsContact()` method to the `DatabaseComponent`
and is needed for finding out efficiently whether a contact already exists.
2016-03-30 13:36:13 -03:00
Torsten Grote e2d64e0a8c allow adding contacts within an existing transactions 2016-03-30 13:36:13 -03:00
Torsten Grote 51c3528efa Add log statements to MessageQueueManagerImpl in order to find bug #272 2016-03-30 13:36:13 -03:00
akwizgran 89d25d35d2 Save queue state before delivering message. #272 2016-03-30 17:15:45 +01:00
akwizgran e78ba2e806 Key derivation fixes, renamed a key derivation method. 2016-03-30 12:02:49 +01:00
akwizgran a8fa6339fb Don't disable Bluetooth, always reuse the connection. 2016-03-30 10:38:38 +01:00
akwizgran 1cdba02752 Updated javadocs for database methods. 2016-03-29 16:10:40 +01:00
akwizgran e58ca00979 Don't start transactions while holding locks. #272 2016-03-29 15:21:46 +01:00
akwizgran 1855dbbd2d Use a lock to ensure transaction isolation. #272 2016-03-28 13:52:12 +01:00
akwizgran 9714713d73 Add transports to DB during startup. #269 2016-03-28 13:47:23 +01:00
akwizgran 0417639410 Merge duplex and simplex plugin config classes. 2016-03-28 11:28:46 +01:00
str4d 8cacc73bef Implement BQP Android UI using QR codes 2016-03-26 15:53:09 +13:00
str4d 701cfdba48 Extract contact exchange protocol from BT introduction protocol 2016-03-26 15:53:02 +13:00
str4d c3997fb06f Implement BQP API 2016-03-26 15:53:02 +13:00
str4d d2d8d9d46e Implement BQP transport descriptors 2016-03-26 15:52:58 +13:00
akwizgran 31f6c0bf50 More logging for MessageQueueManagerImpl. #272 2016-03-22 13:46:27 +00:00
akwizgran 3d57516258 Fixed merge issues. 2016-03-15 20:26:50 +00:00
Ernir Erlingsson 11bfa212cc minor tweaks 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 85c66417b5 branch cleanup 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 686729b045 refactor with master and fixed files that were accidentally clobbered 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 4da63b3800 Modified the project structure, removed module extension and went instead for a non-complete core dependency graph 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 6f233070fe Semi-encapsulated the core/api dependency graphs and created a proper structure to load eager singletons 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 10764d727b rebased with master 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 9af3ce123a Added eager singletons and made some fixes 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 5aba1d79f1 Fixes after comments, also removed the CryptoComoponent from the IdentIcons 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 95d89553d5 merged with master 2016-03-14 21:02:51 +01:00
Ernir Erlingsson 1be400eb84 Switched Roboguice/Guice out for Dagger 2 2016-03-14 21:01:21 +01:00
Torsten Grote e8ad11210c Merge branch '266-message-queues' into 'master'
Message queues. #266

A message queue is a group shared by two devices that delivers messages from each device to the other in order. The first 64 bits of the message body contain a sequence number that's incremented for each message sent in a given direction. The incoming and outgoing sequence numbers and information about any messages received out of order and waiting to be delivered are stored in the group metadata.

See merge request !121
2016-03-14 14:56:43 +00:00
akwizgran 4afcf2e4a4 Added logging to track down deletion bug. 2016-03-11 10:13:35 +00:00
akwizgran c615dd1ed1 Merge branch 'bluetooth-race' into 'master'
Fix race condition when closing redundant Bluetooth sockets

The Bluetooth invitation code has a race condition: if Alice and Bob connect to each other at roughly the same time, they each consider their outgoing socket to be redundant and close it, resulting in both sockets being closed. This can be triggered pretty reliably by using two phones of the same model and pressing 'Continue' at the same time on both phones.

When more than one invitation socket is opened, Alice should pick which one to use and Bob should use whichever one Alice picks, which Bob can detect by trying to read from both sockets.

Hopefully the Bluetooth invitation code will be retired when #117 is merged, but I'm putting this up for review in case we need to keep Bluetooth as a fallback method.

See merge request !120
2016-03-09 10:12:05 +00:00
akwizgran 5bb8e95b26 Pass original message to BDF validators and hooks. 2016-03-08 17:03:22 +00:00
akwizgran efa06527c9 Moved validation interfaces into respective managers. 2016-03-08 16:22:09 +00:00
akwizgran d308a30d05 Added BdfIncomingMessageHook. 2016-03-08 16:07:36 +00:00
akwizgran ab7cc13014 Added QueueMessage support to BdfMessageValidator. 2016-03-08 16:07:36 +00:00
akwizgran a4d6de0340 Added message queue manager. 2016-03-08 16:07:29 +00:00
akwizgran c8fed348f0 Merge branch '263-delete-all-the-things' into 'master'
Delete all app data when deleting account. #263

When deleting the user's account, delete everything in the app's persistent storage directory except the libs directory, which is populated with native libs when the app is installed.

Fixes #263.

See merge request !119
2016-03-08 09:37:24 +00:00
akwizgran c9276de399 Renamed validation hooks to incoming message hooks. 2016-03-07 18:36:30 +00:00
akwizgran 0ac67239e3 Fixed race condition when closing redundant sockets.
When more than one invitation socket is opened, Alice should pick which one to use and Bob should use whichever one Alice picks. This fixes a race condition where each party picked a different socket and closed the other.
2016-03-07 11:50:47 +00:00
akwizgran 88ab694af8 No need to unwrap Bytes before adding to dictionary. 2016-03-04 21:11:25 +00:00
akwizgran 5998412a8a Use ClientHelper in PrivateMessageFactoryImpl. 2016-03-04 21:10:52 +00:00
akwizgran d342594313 Use ClientHelper in ForumPostFactoryImpl. 2016-03-04 21:10:52 +00:00
akwizgran cc7ffee28d Superclass for validating messages that are BDF lists. 2016-03-04 21:10:44 +00:00
akwizgran 05ec49e45b Use ClientHelper in TransportPropertyManagerImpl. 2016-03-04 21:07:33 +00:00
akwizgran 9d5924fc24 Use ClientHelper in ForumSharingManagerImpl. 2016-03-04 21:07:33 +00:00