Commit Graph

361 Commits

Author SHA1 Message Date
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
akwizgran 59485fe392 Added comments for columns that may be null. 2011-10-26 18:05:49 +01:00
akwizgran 7d73f9604d Added a method for getting unread message counts for all groups. 2011-10-26 17:56:35 +01:00
akwizgran 6d91603bf7 Moved MessageHeader into DB component and added read/starred flags. 2011-10-26 17:07:09 +01:00
akwizgran 0f6b0e88c1 Added message flags: read/unread and starred/unstarred. 2011-10-26 16:32:30 +01:00
akwizgran b70b579fd6 Renamed locks in javadoc comments. 2011-10-26 15:49:35 +01:00
akwizgran 94722a9f2a Broadcast an event when an author's rating changes. 2011-10-26 15:40:38 +01:00
akwizgran 097d11f471 Exposed getMessageHeaders() through DatabaseComponent interface. 2011-10-26 15:18:02 +01:00
akwizgran d2bac9a4f8 Test and bugfix for getMessageHeaders(). 2011-10-26 14:52:18 +01:00
akwizgran 2628823db7 Added a method to get all message headers in a given group (untested). 2011-10-25 17:12:37 +01:00
akwizgran 995518c48b Upgraded H2 jar and removed workaround for Blob.getBytes() bug.
The H2 developers are amazing. :-)
2011-10-25 09:42:27 +01:00
akwizgran 9ec8feec78 Added a method for retrieving the message body from the DB. 2011-10-21 20:42:43 +01:00
akwizgran ef61eaa804 Separated MessageHeader interface from Message interface. 2011-10-21 18:42:27 +01:00
akwizgran f2d80825bc Separated the subject line from the message body. 2011-10-21 18:25:25 +01:00
akwizgran c828db2e95 Don't send subscription or transport updates unless an update is due.
An update is due if the information has changed since the last update,
or if no update has been sent for 12 hours (to ensure that lost
updates are eventually replaced).
2011-10-19 16:34:58 +01:00
akwizgran 93cd31fa2d Simplify Database methods, move logic to DatabaseComponent. 2011-10-19 15:54:56 +01:00
akwizgran f18ddfe55f Variables protected by a monitor don't need to be volatile. 2011-10-19 12:52:02 +01:00