Commit Graph

431 Commits

Author SHA1 Message Date
akwizgran
2a38efd13a Added the Bouncy Castle sources. 2011-11-29 21:10:22 +00:00
akwizgran
851a44eb40 Return a copy when explicitly asked for one (fixes a test). 2011-11-29 21:09:48 +00:00
akwizgran
e5c8a1415d Use a single SecureRandom instance to avoid blocking on creation. 2011-11-29 21:07:50 +00:00
akwizgran
a3067dbff8 Don't create copies of erasable keys. 2011-11-29 11:03:57 +00:00
akwizgran
7bf2ee64a8 Use immutable collections for thread safety. 2011-11-29 11:01:09 +00:00
akwizgran
42430272f4 Removed the initiator flag from the IV (no longer needed with the new
key derivation rules).
2011-11-28 17:34:50 +00:00
akwizgran
b773660bca Advertise the Bluetooth address if the device is discoverable in
either GIAC or LIAC mode.
2011-11-28 15:51:48 +00:00
akwizgran
e23f646181 Cache the return value of Arrays.hashCode(). 2011-11-28 15:44:19 +00:00
akwizgran
b72a90be21 String caches its hash code, so prefer HashMap to TreeMap. 2011-11-28 15:40:16 +00:00
akwizgran
ebd6ebf902 Made TransportConfig and TransportProperties thread-safe. 2011-11-28 15:36:36 +00:00
akwizgran
a348ff9091 Return immutable collections from the database. 2011-11-28 15:29:53 +00:00
akwizgran
40109000ad Use CountDownLatch rather than wait/notify. 2011-11-28 15:22:29 +00:00
akwizgran
26c7f1bd80 Use CopyOnWriteArrayList for listener lists. 2011-11-28 15:12:13 +00:00
akwizgran
c9a43ad4bd Fixed a test. 2011-11-24 22:17:02 +00:00
akwizgran
aefa7798e1 One more unit test for the road... 2011-11-24 22:12:05 +00:00
akwizgran
9345b5c71b Avoid DB lookups where possible. 2011-11-24 22:09:04 +00:00
akwizgran
ff8010a945 Merge branch 'refs/heads/master' of ssh://akwizgran@briar.git.sourceforge.net/gitroot/briar/prototype 2011-11-24 14:59:04 +00:00
akwizgran
8068fa0d38 Don't keep connection windows in memory. 2011-11-24 13:56:58 +00:00
akwizgran
98148085b6 Don't lock the list of listeners while calling them. 2011-11-23 12:13:51 +00:00
akwizgran
214b274ee5 Removable drive monitor for OS X 10.4 (JNotify requires at least 10.5). 2011-11-19 18:09:10 +00:00
akwizgran
b2226067e1 Don't start shutdown hook threads more than once. 2011-11-19 17:23:18 +00:00
akwizgran
bc7d882af6 Upgraded H2 jar (the new version was built on OS X 10.4 for Java 1.5
compatibility).
2011-11-19 17:05:10 +00:00
akwizgran
8d74a02ad9 Added comments to WindowsShutdownManagerImpl. 2011-11-19 16:49:04 +01:00
akwizgran
bb4c79322e Added WindowsShutdownManagerImplTest to ant buildfile. 2011-11-19 16:42:39 +01:00
akwizgran
3dc8a590c7 Use a native window to catch shutdown events. 2011-11-19 15:45:23 +01:00
akwizgran
046becd388 Shutdown manager (untested on Windows). 2011-11-18 17:13:55 +00:00
akwizgran
859ece6328 Erase connection windows before discarding them.
And I rewrote the locking in ConnectionRecogniserImpl again. I hate
that class so much.
2011-11-18 15:25:30 +00:00
akwizgran
a349a3f1ea Fixed the locking in ConnectionRecogniserImpl. Again.
Database calls are made outside the lock, with the exception of
{get,set}ConnectionWindow(), which seems to be unavoidable if we want
to ensure replay protection within and across sessions.
2011-11-18 14:16:51 +00:00
akwizgran
dacaa4566d Minor protocol refactoring. 2011-11-18 11:27:34 +00:00
akwizgran
30580f71ec Made erasable keys thread-safe. 2011-11-18 11:05:07 +00:00
akwizgran
6fada9f243 Finer-grained locking in the connection recogniser. 2011-11-17 20:06:19 +00:00
akwizgran
2b45cf0dd1 Accept connections asynchronously. 2011-11-17 18:59:34 +00:00
akwizgran
27a3f6e497 Erase known copies of keys (unit tests ensure we don't end up using
zeroed keys).
2011-11-17 09:54:24 +00:00
akwizgran
66d973bcdd Ignore expected IVs that arrive by the wrong transport.
This prevents an attacker from replaying connections to test whether a
transport endpoint has the same owner as an endpoint on another
transport (eg probing a Bluetooth device to see whether it has the
same owner as a given internet host).
2011-11-17 09:24:28 +00:00
akwizgran
13ebd369e2 The KDF was using CTR mode unsafely.
The data to be encrypted should go in the IV, with a blank
plaintext, so that the ciphertext is equal to the keystream.

Putting the data in the plaintext would have led to different keys
derived from the same source consisting of the same keystream XORed
with different guessable plaintexts. That would have been bad.
2011-11-17 09:01:59 +00:00
akwizgran
a144884ecd Erase connection windows if the JVM shuts down cleanly. 2011-11-16 18:41:40 +00:00
akwizgran
031aa53dc7 Minor SQL cleanups. 2011-11-16 18:28:34 +00:00
akwizgran
4da7a685cd Minor code cleanups. 2011-11-16 18:15:32 +00:00
akwizgran
01dd658200 Keep the connection windows in memory. 2011-11-16 17:57:56 +00:00
akwizgran
f10512d787 Erase keys after using them. (Copies created by ciphers, etc, may
still exist.)
2011-11-16 16:22:35 +00:00
akwizgran
ece03038f4 Unit test for key derivation. 2011-11-16 15:56:54 +00:00
akwizgran
a13a1769e5 Unit test for key derivation. 2011-11-16 15:54:17 +00:00
akwizgran
f6ae4734ce Forward secrecy.
Each connection's keys are derived from a secret that is erased after
deriving the keys and the secret for the next connection.
2011-11-16 15:35:16 +00:00
akwizgran
d02a68edfc Return a connection context for outgoing connections (the secret will
be included in this context in the near future).
2011-11-15 17:47:30 +00:00
akwizgran
fabdaf5957 Remove transport ID from connection context. 2011-11-15 17:32:31 +00:00
akwizgran
9220bb3426 Key derivation function based on NIST SP 800-108. 2011-11-15 17:19:11 +00:00
akwizgran
6a15c03e81 Store the incoming and outgoing secrets separately. 2011-11-15 16:07:14 +00:00
akwizgran
f41d48eb9f Made secret keys erasable from memory. 2011-11-15 14:43:06 +00:00
akwizgran
23be7fd876 Removed double-encryption of shared secrets. 2011-11-15 14:09:28 +00:00
akwizgran
6cdf68d6cb Initialise all connection windows when a contact is added. 2011-11-15 13:45:57 +00:00