akwizgran
8d74a02ad9
Added comments to WindowsShutdownManagerImpl.
2011-11-19 16:49:04 +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
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
akwizgran
df054b1743
Store each connection window slot as a database row.
...
This is less memory-efficient but necessary for the coming forward
secrecy changes.
2011-11-15 13:08:20 +00:00
akwizgran
cf49a28c95
Replaced SHA-256 with SHAd-256 to prevent length extension attacks.
2011-11-15 11:11:31 +00:00
akwizgran
effa5c9d8e
Throw checked exception if concurrent attempts are made to remove a
...
contact.
2011-11-15 09:51:51 +00:00
akwizgran
6fd8493d3d
Singleton lists and singleton sets aren't equal, so use lists
...
consistently.
2011-11-15 09:42:21 +00:00
akwizgran
0da94879ef
Use aliases for shorter, clearer SQL.
2011-11-15 09:35:07 +00:00
akwizgran
2ad15518a5
Return transports that have no properties.
2011-11-15 09:00:51 +00:00
akwizgran
72be34768b
Minor refactoring.
2011-11-14 22:14:52 +00:00
akwizgran
73aa7d14d7
Split transport identifiers into two: TransportId (globally unique)
...
and TransportIndex (locally unique).
This is the first step towards forward secrecy. Also removed the
Writable interface and unnecessary user-defined types, moved various
constants to ProtocolConstants and renamed some classes.
2011-11-14 21:40:05 +00:00
akwizgran
7d09102c4d
Advertise the Bluetooth address if the device is discoverable.
2011-11-08 21:12:08 +00:00
akwizgran
531889bd1f
Log the local Bluetooth address.
2011-11-08 14:49:15 +00:00
akwizgran
2c4c8824d0
Removed references to raw types.
2011-11-08 13:17:28 +00:00
akwizgran
ef6f61426f
Removed calls to supportsMulticast() for Java 1.5 compatibility.
2011-11-08 13:14:23 +00:00
akwizgran
1b0bd6961a
You can't step in the same Enumeration twice.
2011-10-30 22:35:46 +00:00
akwizgran
7065f54a57
Prefer LAN interfaces for invitations, WAN for connections.
2011-10-30 22:26:23 +00:00
akwizgran
681e82547e
Try to close sockets when an exception is caught.
2011-10-30 21:32:04 +00:00
akwizgran
2c72b1e2e2
If no local address is configured, bind to any address.
2011-10-30 21:31:24 +00:00
akwizgran
517aea3b1f
Socket plugin that supports exchanging invitations by LAN multicast
...
(untested).
2011-10-30 20:50:55 +00:00
akwizgran
42ddfb444e
Added a method to check which plugins support invitations.
2011-10-29 09:52:07 +01:00
akwizgran
d3060a3bd6
Class IDs may be in nested lists. Don't ask me why.
2011-10-28 16:46:51 +01:00
akwizgran
559cdfaeba
Merged shared code in listener classes and made casts safe.
2011-10-28 15:48:30 +01:00
akwizgran
d2e1500ac1
Store the UUID in the local properties so it gets sent to contacts.
2011-10-28 13:17:17 +01:00
akwizgran
70c5d7ce75
Don't store the local address unless the device is discoverable.
2011-10-28 13:16:00 +01:00
akwizgran
0728f76933
Ignore case when comparing Bluetooth UUIDs.
2011-10-28 12:54:20 +01:00
akwizgran
df125bdcd2
Ignore case when comparing Bluetooth UUIDs.
2011-10-28 12:37:16 +01:00
akwizgran
48d638746c
Invitation API and two (untested) implementations.
2011-10-27 17:52:03 +01:00