Commit Graph

1312 Commits

Author SHA1 Message Date
Torsten Grote 0a8c42b939 Improve how the status of messages is indicated.
Remove the Toast that always says 'Message Sent' and show graphical
indicators instead that show either:
* message is waiting to be sent
* message was sent (or requested)
* message was delivered
2015-12-10 10:11:27 -02:00
Ernir Erlingsson a5fd7ff9dc Added dependency injections for FileUtils and removed redundant code 2015-12-10 11:07:10 +01:00
akwizgran 8529c976c2 Renamed a bunch of lock variables.
"synchLock" will become confusing when we have lots of objects with "sync" in the name.
2015-12-03 16:39:53 +00:00
akwizgran 8ae3fb3e35 Upgraded Spongy Castle to 1.53, fixed tests. #146 2015-12-03 11:12:16 +00:00
akwizgran 7841ae52ca Renamed SerialModule, fixed Roboguice module list. 2015-11-30 16:47:33 +00:00
akwizgran 027ae8340f Whitespace-only code formatting changes. 2015-11-30 09:38:25 +00:00
akwizgran d519c543a6 Represent booleans with a single byte. 2015-05-02 21:12:33 +01:00
akwizgran 41c4c4d808 Renamed raw data type. 2015-05-02 21:05:23 +01:00
akwizgran b8e37a5421 Renamed serial component to data, moved consumers to briar-core. 2015-05-02 20:39:24 +01:00
akwizgran 416719e3d9 Removed silly SerialComponent interface. 2015-05-02 20:30:25 +01:00
akwizgran 32c9ce50d9 Moved the messaging protocol one step closer to BSP.
This breaks backward compatibility for the wire protocol and messages
stored in the database. The database schema version has been
incremented.
2015-05-01 16:59:27 +01:00
akwizgran dea5a44724 Simpler forum sharing UX. 2015-04-29 15:08:58 +01:00
akwizgran 6135bea2b4 Support Tor on Android x86 (thanks to n8fr8). 2015-04-16 08:02:57 +01:00
akwizgran f8a4a4920d Merge branch 'AbrahamKiggundu/briar-master': better lock encapsulation 2015-01-29 11:28:48 +00:00
akwizgran 0dbfd7073f Comments to indicate which locks guard which variables. 2015-01-29 11:12:41 +00:00
akwizgran 47bd84122e Code formatting and small cleanups. 2015-01-28 21:18:31 +00:00
akwizgran 7fbad8dc26 Use FortunaGenerator to implement PseudoRandom. 2015-01-14 20:46:03 +00:00
akwizgran 1c7432cac4 Use a provider to instantiate AuthenticatedCipher. 2015-01-14 19:59:38 +00:00
akwizgran 6ff8f5ce69 Don't close the connection until both peers have finished. Bug #78. 2015-01-14 19:58:54 +00:00
akwizgran 03247aedd6 Log how long it takes to generate and verify signatures. 2015-01-14 19:09:37 +00:00
akwizgran 920c81199e Forgot to update some constants to reflect the new crypto primitives. 2015-01-14 16:38:15 +00:00
akwizgran 112d80420c Downgrade to 256-bit curve for performance.
Also reduced hash function to 256 bits because our target security level
is now 128 bits.
2015-01-09 13:23:44 +00:00
akwizgran 5d46d3a4b4 AuthenticatedCipher interface isn't needed outside crypto package. 2015-01-09 13:06:44 +00:00
akwizgran dc5e37a96d Remove AAD from AuthenticatedCipher interface. 2015-01-09 13:01:02 +00:00
Abraham Kiggundu 851151041e Pull-Merge of latest changes from main repo 2015-01-08 11:54:47 +03:00
Abraham Kiggundu 8d25840a1d Fixed bug calling notifyAll instead of signalAll 2015-01-07 00:47:27 +03:00
akwizgran 4e57029d98 Use constant-time GCM multiplier. 2015-01-06 19:30:11 +00:00
akwizgran 1f69f0d2f6 Variable-length frames (untested). 2015-01-05 17:35:45 +00:00
akwizgran d3bf2d59a1 Use the same maximum frame length for all transports. 2015-01-05 16:24:44 +00:00
akwizgran 358166bc12 Don't try to erase secrets from memory.
1. The things we're really trying to protect - contact identities,
message contents, etc - can't be erased from memory because they're
encapsulated inside objects we don't control.

2. Long-term secrets can't be protected by erasing them from memory
because they're stored in the database and the database key has to be
held in memory whenever the app's running.

3. If the runtime uses a compacting garbage collector then we have no
way to ensure an object is erased from memory.

4. Trying to erase secrets from memory makes the code more complex.

Conclusion: Let's not try to protect secrets from an attacker who can
read arbitrary memory locations.
2014-12-29 21:08:27 +00:00
akwizgran f316d64afa Moved stream crypto to crypto component. 2014-12-29 19:55:05 +00:00
Abraham Kiggundu 9a2e93ebb9 cleanup 2014-12-26 17:35:37 +03:00
Abraham Kiggundu b074978472 Improved encapsulation of thread synchronisation as follows
- replaced use of Object instance mutex with a private final Lock object
- replaced Object signaling with specific condition signalling
2014-12-26 16:40:46 +03:00
akwizgran 388b36b6be Check periodically for retransmittable packets. Bug #46. 2014-12-14 20:26:41 +00:00
akwizgran 29a6596ee3 Use the transport's idle timeout, not a hardcoded value. 2014-12-14 15:18:39 +00:00
akwizgran d4fa656dbb Application layer keepalives to detect dead TCP connections.
DuplexOutgoingSession flushes its output stream if it's idle for a
transport-defined interval, causing an empty frame to be sent. The TCP
and Tor plugins use a socket timeout equal to twice the idle interval to
detect dead connections.

See bugs #27, #46 and #60.
2014-12-13 12:00:40 +00:00
akwizgran ab467b3d3e Flush the output stream before rather than after waiting for packets.
See bug #27.
2014-11-09 18:03:24 +00:00
akwizgran 4b92de619c Added missing packet handlers to IncomingSession. 2014-11-09 17:20:06 +00:00
akwizgran c280e213c8 Don't send tags for invitation connections. 2014-11-09 17:11:16 +00:00
akwizgran 8584194138 Removed redundant parameter checks. 2014-11-09 16:59:08 +00:00
akwizgran 9dbabdeceb Document the contract of DatabaseExecutor. 2014-11-08 16:40:22 +00:00
akwizgran 4009561996 Refactored PluginManager and Poller to remove non-open calls. Bug #15. 2014-11-08 15:40:51 +00:00
akwizgran c2d6e9afde Some variables were still referring to TagRecogniser by its old name. 2014-11-06 20:51:10 +00:00
akwizgran d321bc0a3e Renamed some inner classes to match the renamed outer class. 2014-11-06 13:53:59 +00:00
akwizgran 1d20761123 Messaging sessions aren't responsible for closing their streams.
The TransportReader/Writer's dispose() method should handle that, and
ConnectionManager is responsible for calling it.
2014-11-06 13:13:23 +00:00
akwizgran b27a17db88 Erase temporary secrets after deriving keys. 2014-11-06 08:39:07 +00:00
akwizgran 1f4d801162 Interrupt all messaging sessions when the app starts shutting down.
This makes it more likely that connections will be closed cleanly.
However, the interrupt() method is currently ineffective for incoming
sessions as it won't interrupt a blocking read, e.g. when the packet
reader is waiting for a packet.
2014-11-06 08:24:08 +00:00
akwizgran 852a618cb3 Interrupt messaging session if contact or transport is removed. 2014-11-06 08:10:29 +00:00
akwizgran c202b6f0ac Renamed ConnectionManager to ConnectionDispatcher.
Because that's what it does.
2014-11-05 19:47:54 +00:00
akwizgran 4ca83842d1 Moved ConnectionDispatcher and ConnectionRegistry to plugins package. 2014-11-05 19:40:07 +00:00