Commit Graph

194 Commits

Author SHA1 Message Date
akwizgran
08e7cc8e0c Updated Gradle wrapper. 2015-12-03 11:56:49 +00:00
akwizgran
8ae3fb3e35 Upgraded Spongy Castle to 1.53, fixed tests. #146 2015-12-03 11:12:16 +00:00
akwizgran
427efdc7d6 Raise minimum Java version to 6, upgrade H2. #24 2015-12-02 14:59:51 +00:00
akwizgran
79d9b4b6af Raised minimum Android version to 2.3 (API 9). #23 2015-12-02 13:20:55 +00:00
akwizgran
7eb7257076 Added project files for Android Studio. 2015-11-30 11:49:44 +00:00
akwizgran
027ae8340f Whitespace-only code formatting changes. 2015-11-30 09:38:25 +00: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
a1d2aaf10e Use JDK 1.7, target Android 5.1. 2015-04-03 20:56:01 +01:00
akwizgran
7fbad8dc26 Use FortunaGenerator to implement PseudoRandom. 2015-01-14 20:46:03 +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
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
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
6b4a72aea7 Added Gradle build files because Ant's too efficient for some people. 2014-11-25 14:54:34 +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
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
akwizgran
26d93b83b4 Factored out StreamReader/Writer from messaging layer. 2014-11-05 19:22:01 +00:00
akwizgran
5b8eab6035 Interrupt the other side of a duplex connection if an exception occurs. 2014-11-05 18:28:05 +00:00
akwizgran
33c3eb7308 PacketWriters aren't responsible for flushing their output streams. 2014-11-04 17:03:06 +00:00
akwizgran
7b8181e309 Massive refactoring to merge handling of simplex and duplex connections. 2014-11-04 16:51:25 +00:00
akwizgran
b24f153704 Renamed a load of things from 'connection' to 'stream'. 2014-10-08 16:21:55 +01:00
akwizgran
cdb5a12156 Use the event bus to observe contacts connecting and disconnecting. 2014-10-03 10:04:02 +01:00
akwizgran
8b8df435a5 Separated event infrastructure from DB. 2014-10-03 09:44:54 +01:00
akwizgran
f9a6c46efe Merged ReliabilityExecutor into IoExecutor. 2014-10-02 18:06:05 +01:00
akwizgran
941efb4bbe Merged IncomingConnectionExecutor and PluginExecutor into IoExecutor.
We don't need two separate executors for long-running IO threads.
2014-10-02 18:02:53 +01:00
akwizgran
14c5b4e4ff Removed DatabaseUiExecutor as DatabaseExecutor is now single-threaded. 2014-07-04 15:16:55 +01:00
akwizgran
4c9296d286 Merged all licensing info into a single file to avoid APK build problems. 2014-07-02 23:01:13 +01:00
akwizgran
b4e02a7196 Release Briar code (but not bundled libraries) under Apache 2 license. 2014-06-23 10:26:16 +01:00
akwizgran
4dcf9f632e Show which contacts subscribe to each forum. Dev task #79. 2014-05-02 16:24:49 +01:00
akwizgran
e1d099903d Don't allow LifecycleManager to start and stop concurrently. Bug #68. 2014-05-02 15:16:53 +01:00
akwizgran
0eaf46209c Show more debugging info: system memory, VM memory and disk space. 2014-04-10 15:48:15 +01:00
akwizgran
839f67dd44 Replaced last connection time with time of last private message. 2014-04-05 18:14:36 +01:00
akwizgran
08b91d2483 Poll plugins when connectivity changes. Bug #66.
This should enable us to connect to contacts faster at startup and
whenever a new means of connecting becomes available.
2014-04-04 22:06:36 +01:00
akwizgran
1c282a8835 Show when private messages have been delivered. 2014-04-03 23:42:24 +01:00