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
f0f5daf607
Updated Bouncy Castle source code.
2014-12-05 13:32:59 +00:00
akwizgran
0b9671a0fa
Updated Bouncy Castle source code.
2014-12-04 12:06:41 +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
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
akwizgran
26d93b83b4
Factored out StreamReader/Writer from messaging layer.
2014-11-05 19:22:01 +00:00
akwizgran
dfa4860200
Cancel database queries if the messaging session has been interrupted.
2014-11-05 18:34:59 +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
3dab4543e6
Combine the system's PRNG with Fortuna, in case either one is flawed.
2014-10-08 15:03:19 +01:00
akwizgran
bb38911dc8
SecureRandom impl that XORs the outputs of other impls (not yet used).
...
This can be used to combine e.g. the platform's SecureRandom
implementation with our own, so that a weakness in either source doesn't
harm security as long as the other source is strong.
2014-10-08 15:03:02 +01:00
akwizgran
4e028e217b
Upgraded BouncyCastle to 1.51.
2014-10-03 13:28:45 +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
458c0ca285
Don't broadcast MessageAddedEvent if message wasn't added.
...
Fixed a bug in SimplexMessagingIntegrationTest that should've caught
this.
2014-07-04 15:16:56 +01:00
akwizgran
96a9178b0b
Use a single read-write lock for the DB - don't optimise prematurely.
2014-07-04 15:16:56 +01:00
akwizgran
f90f7c5e7b
Use a single-threaded executor for the database.
...
This ensures that if two DatabaseExecutor tasks update the database and
broadcast events, the events are broadcast in the same order as the
updates occurred.
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
eaff042601
Don't try to close server sockets twice.
...
This may have been the cause of bug #69 . Removed the wait-for-shutdown
code in DroidtoothPlugin that was added to attempt to avoid that bug.
2014-05-09 19:09:13 +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