Commit Graph

185 Commits

Author SHA1 Message Date
akwizgran
dacaa4566d Minor protocol refactoring. 2011-11-18 11:27:34 +00:00
akwizgran
2b45cf0dd1 Accept connections asynchronously. 2011-11-17 18:59:34 +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
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
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
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
42ddfb444e Added a method to check which plugins support invitations. 2011-10-29 09:52:07 +01:00
akwizgran
48d638746c Invitation API and two (untested) implementations. 2011-10-27 17:52:03 +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
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
2628823db7 Added a method to get all message headers in a given group (untested). 2011-10-25 17:12:37 +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
93cd31fa2d Simplify Database methods, move logic to DatabaseComponent. 2011-10-19 15:54:56 +01:00
akwizgran
d7a417f36d Validate the decrypted IV before creating a reader/writer. 2011-10-18 15:58:10 +01:00
akwizgran
2f457162a5 Attach the affected contact IDs to subscription update events. 2011-10-17 23:24:23 +01:00
akwizgran
ec56b12384 Converted database events from an enum to classes to allow them to
carry data.
2011-10-17 22:47:38 +01:00
akwizgran
89001e4c91 Double-check the initiator flag and transport ID of incoming
connections, and invert the flag for the responder's side.
2011-10-15 14:15:25 +01:00
akwizgran
0ef1fcb686 De-uglified some code and moved two API classes. 2011-10-14 21:49:58 +01:00
akwizgran
0d11553134 StreamConnectionFactory and ConnectionDispatcherImpl (untested). 2011-10-14 21:07:49 +01:00
akwizgran
bd91e7ebf3 Renamed a DB event. 2011-10-14 19:49:47 +01:00
akwizgran
e00e12d473 Call the listeners if a new ack might need to be sent. 2011-10-14 18:29:14 +01:00
akwizgran
d48c7b6900 Converted {Incoming,Outgoing}BatchConnection into Runnables.
Also changed the dispose() method of readers/writers/connections to
swallow any exceptions that occur, since the caller can't do anything
except log them.
2011-10-14 16:14:29 +01:00
akwizgran
55182528cf Q: What does the plugin manager do? A: It manages plugins. 2011-10-14 14:49:29 +01:00
akwizgran
aabe72bfd7 Plugin factories. 2011-10-12 17:26:05 +01:00
akwizgran
64e2d7bca9 Refactoring: shorter class names. 2011-10-12 17:25:37 +01:00
akwizgran
3a07d1b882 Plugins don't need their own copies of configs and properties. 2011-10-12 16:52:39 +01:00
akwizgran
631f4e74b5 Nudge the database API in the direction of sanity. 2011-10-11 19:08:10 +01:00
akwizgran
a49a95347f Use dedicated classes for transport properties and configs. 2011-10-11 17:28:47 +01:00
akwizgran
68b82ae826 Retrieve all remote transports from the DB in a single call. 2011-10-10 22:35:46 +01:00
akwizgran
4059fbf863 Moved plugin API from transport package to plugins package and merged
transport subpackages.
2011-10-10 16:18:48 +01:00
akwizgran
125ae1b640 Always call the callback outside the plugin's lock. 2011-10-08 13:13:28 +01:00
akwizgran
5f40015ec2 Moved callback initialisation from start() to constructor so it can be
accessed outside the lock.
2011-10-08 12:46:35 +01:00
akwizgran
a3a5ebc14f Removed unused exceptions. Also disabled output for ant tests. 2011-10-08 12:27:13 +01:00
akwizgran
c08f6c4d1e Merged transports' finish() and dispose() methods. 2011-10-06 19:00:33 +01:00
akwizgran
f8ca06f79d Changed callback arguments to varargs and renamed a method. 2011-10-06 11:13:19 +01:00
akwizgran
6737e4ddfb Merged common methods of BatchTransportPlugin and
StreamTransportPlugin into a superclass.
2011-10-06 09:22:56 +01:00