Commit Graph

1370 Commits

Author SHA1 Message Date
akwizgran 2e472c1d16 Added the ability to skip serialised objects. 2013-11-19 21:28:53 +00:00
akwizgran 6764ade475 Delimited structs - this will allow us to skip unrecognised structs. 2013-11-19 18:05:44 +00:00
akwizgran e0d313a28c Simplified serialisation format: removed compact encodings. 2013-10-11 15:16:16 +01:00
akwizgran 7b01e42da8 Removed the ability to star messages (unused in UI). 2013-09-27 18:15:43 +01:00
akwizgran 0a153acd02 Removed peer moderation (may be restored after beta testing). 2013-09-27 18:04:27 +01:00
akwizgran b94954544d Removed restricted groups (may be restored after beta testing). 2013-09-27 15:11:04 +01:00
akwizgran c868764244 Separate FileUtils implementations for Android and desktop builds.
The method used by Commons IO to get the available disk space fails on
Android devices that lack a df binary - use the Android API instead.
2013-07-27 20:50:05 +01:00
akwizgran 95788cc1c6 Simplified the KDF implementation, since one iteration is enough.
We don't need to call HMAC-SHA-384 more than once to get 256 bits of key
material. The code will throw a RuntimeException if CIPHER_KEY_BYTES is
changed in future so that one iteration's no longer enough.
2013-07-12 19:05:27 +01:00
akwizgran a8d86a1b05 Don't use a byte[1] where a byte will do. 2013-07-12 18:59:52 +01:00
akwizgran a731b68e9f Switched from CMAC to HMAC-SHA-384 in key derivation function. 2013-07-12 18:56:12 +01:00
akwizgran 2ee3869327 Switched to AESLightEngine to minimise cache timing side-channel leaks. 2013-07-12 18:54:50 +01:00
akwizgran a2fffedc64 Erase temporary copies of keys. 2013-07-12 18:53:15 +01:00
akwizgran e9859e9f38 The counter mode KDF was not correctly following NIST SP 800-108.
Fixes bug #25. CMAC is used as the PRF. Note that we're currently using
a version of Spongy Castle with a CMAC implementation that's vulnerable
to a side-channel attack - this has been reported and fixed upstream but
we haven't yet upgraded to the fixed version.
2013-07-11 15:13:48 +01:00
akwizgran d02266d827 Moved Android-specific plugin code into briar-android project.
This removes the other projects' dependency on the Android API.
2013-06-27 16:26:52 +01:00
akwizgran 473cec8735 Moved desktop-specific code into a separate project (other task #34). 2013-06-27 16:05:31 +01:00
akwizgran 3e6d3e0b1f Downgraded H2 to version 1.3.170 (last version that supports Java 1.5). 2013-06-19 16:10:26 +01:00
akwizgran b2e7f9f3b6 Removed an unused method and an unused source jar. 2013-06-19 14:08:43 +01:00
akwizgran 3e0c16b59a Removed all uses of JCE so we can use full-strength crypto on all JVMs. 2013-06-17 16:29:46 +01:00
akwizgran 1808ceaf58 Replaced further JCE calls with direct instantiation of SC objects. 2013-06-14 12:22:32 +01:00
akwizgran a979cab43a Don't pass a null provider to the Cipher constructor. 2013-06-14 11:24:14 +01:00
akwizgran 155a231292 Replaced JCE provider calls with direct instantiation of Spongy Castle classes. 2013-06-14 10:57:48 +01:00
akwizgran 3054605a79 Set javac's target version to Java 1.5 in the ant buildfiles. 2013-06-13 18:38:54 +01:00
akwizgran a4d3daaa3e Removed a Java 1.6 API call. 2013-06-13 17:55:12 +01:00
akwizgran e1ec17f4b6 Made the invitation protocol symmetrical.
Both devices try to make outgoing connections and accept incoming
connections simultaneously. This should lead to faster connection
establishment when there are asymmetrical connectivity problems, such as
devices that are unable to receive LAN multicast packets or make
themselves discoverable via Bluetooth.
2013-06-13 13:10:22 +01:00
akwizgran bebaf4f84b Reworked the Bluetooth invitation process to be symmetrical (untested). 2013-06-13 12:40:44 +01:00
akwizgran a17349e015 Replaced redundant SocketReceiver classes with a generic class. 2013-06-13 12:40:19 +01:00
akwizgran 3833eac4e2 Made two private classes static. 2013-06-13 11:50:01 +01:00
akwizgran 4431e502f7 Symmetric invitation protocol for the Droidtooth plugin. 2013-06-06 15:17:35 +01:00
akwizgran 4170e8a08b Symmetric invitation protocol for the LAN plugin.
See issue #development-tasks/20: some devices can send but not receive
multicast packets.
2013-06-06 15:17:11 +01:00
akwizgran 08b11412fb Allow plugins to use different maximum frame lengths. 2013-06-05 14:16:44 +01:00
akwizgran 90c323e82b Set H2's write delay to 0 and flush data to disk after every commit.
This should improve durability in the case of a crash (see
http://www.h2database.com/html/advanced.html#durability_problems). The
performance penalty for H2DatabaseTest is roughly 10%.
2013-05-31 15:31:15 +01:00
akwizgran cb2d8b50d2 Upgraded H2 to version 1.3.172. 2013-05-31 15:27:32 +01:00
akwizgran 4c480912a8 Removed unnecessary calls to Connection.setAutoCommit().
We always use transactions so auto-commit can always be false.
2013-05-30 17:35:32 +01:00
akwizgran 12192aea43 Patched jtorctl so a control connection can be used by multiple threads.
Various thread safety fixes, saner use of exceptions, and code
reformatting. The Tor plugin now creates a single control connection at
startup and closes it at shutdown. Fixes issue #3611962.
2013-05-16 20:02:48 +01:00
akwizgran c3e9ada0d9 Escaped a dot in the regex used to validate onion hostnames. 2013-05-16 15:44:56 +01:00
akwizgran 1692e5a695 Invitation protocol was proceeding after confirmation timed out.
Both sides now close the connection after exchanging confirmation
results unless both results are positive.
2013-05-16 15:10:16 +01:00
akwizgran 91ccdfd8d7 Created Android-specific LAN TCP plugin in order to enable multicast.
Some Android devices require a lock to be held while using multicast, to
disable the packet filter that normally filters out multicast packets.
2013-05-16 13:48:42 +01:00
akwizgran 635973c845 Provide earlier feedback in the UI when connecting to a new contact.
Partially addresses issue #3611924.
2013-05-15 18:22:04 +01:00
akwizgran fd5dcd4893 Removed override annotations from overridden abstract methods. 2013-05-15 12:38:43 +01:00
akwizgran 630cfde81e Executors and Services register themselves with the LifecycleManager.
Fixes issue #3612607.
2013-05-15 12:26:56 +01:00
akwizgran dddd15cd10 Fixed a race conditon when adding a transport and then an endpoint.
To fix issue #3611966, KeyManagerImpl's handling of TransportAddedEvent
was made asynchronous. This made it possible for a thread to call
KeyManager.endpointAdded() before the KeyManager had asynchronously
handled the TransportAddedEvent from a previous call to
DatabaseComponent.addTransport().
2013-05-14 20:54:23 +01:00
akwizgran 673d7fa0c3 Moved lifecycle management into briar-core and reconfigured executors.
CryptoExecutor and DatabaseExecutor now use bounded thread pools with
unbounded queues, since running too many tasks in parallel is likely to
harm performance; IncomingConnectionExecutor, PluginExecutor and
ReliabilityExecutor use unbounded thread pools with direct handoff,
since their tasks may run indefinitely. There are no longer any bounded
executors, and all executors discard tasks when shutting down, which
fixes issue #3612189.

Responsibility for starting and stopping services has been moved from
BriarService in briar-android to LifecycleManagerImpl in briar-core.
However, BriarService is still responsible for stopping the
Android-specific executors, which is ugly. It would be better if
executors registered themselves with LifecycleManager.
2013-05-04 01:26:11 +01:00
akwizgran 48396262d7 Reuse invitation connections as BTP connections. Fixes issue #3611916. 2013-05-01 14:59:31 +01:00
akwizgran 5179e2fde1 Turn off Bluetooth at shutdown if we turned it on at startup.
Also, turn on Bluetooth if necessary before polling. Fixes issue
#3611935
2013-05-01 11:39:10 +01:00
akwizgran d5720c085f Removed bundle encryption.
Android doesn't currently store bundles persistently, so it's premature
to protect against accidental information leaks through persistent
bundle storage. Protecting against deliberate information leaks by the
OS is probably futile, so there's currently no need for bundle
encryption.
2013-04-30 15:05:23 +01:00
akwizgran 2da873aa01 Moved synchronisation out of event handler. Fixes issue #3611966. 2013-04-29 13:28:25 +01:00
akwizgran ae76a7935c Moved a couple of annotations from API to core. 2013-04-29 13:15:17 +01:00
akwizgran 458258f2ff Moved blocking call out of event handler. Fixes issue #3611961. 2013-04-29 12:56:58 +01:00
akwizgran f8d9170a25 Removed override annotation from abstract method. 2013-04-29 12:46:39 +01:00
akwizgran 2c9ce014a5 Renamed a method and expanded the javadoc to be clear that it blocks. 2013-04-26 18:15:51 +01:00