Commit Graph

7472 Commits

Author SHA1 Message Date
akwizgran 6c5ce05c5d Promote integer types to the expected type to allow, for example, a
list of mixed integer types to be read as a list of longs.
2011-08-05 13:26:37 +01:00
akwizgran 5cb4075cfd Added the ability to store transport configuration details in the
database - unlike transport properties, these are not shared with
contacts. For example, when using email as a transport, the address
for sending and receiving emails would be a transport property, while
the username and password for the email server would be transport
configuration details. Transport plugins can update their
configuration details atomically.

Also clarified the terminology for transport and subscription updates.
2011-08-04 13:41:41 +01:00
akwizgran ec29c4d1d3 Changed the format of transport properties from (key, value) pairs to
(transport name, key, value) triples. This makes it possible for each
transport plugin to update its locally stored properties atomically.
2011-08-04 11:07:28 +01:00
akwizgran 5be9d953ee Use fail() instead of assertTrue(false). 2011-08-03 21:19:04 +01:00
akwizgran 93ee4d004e Reduced maximum public key lengths to reasonable lengths for ECDSA. 2011-08-03 21:08:09 +01:00
akwizgran c6ded0227d Unit test for database exception handling. 2011-08-03 21:01:37 +01:00
akwizgran c90a18278b Allow a maximum length to be specified when reading strings or byte
arrays, check it before allocating the buffer, and always specify the
maximum length when reading untrusted data - otherwise
CountingConsumer will reject the packet, but not before we've tried to
allocate a buffer of the specified size (up to 2 GB).
2011-08-03 19:29:30 +01:00
akwizgran 5fd87647f8 Replaced assertions with exceptions in database code, and changed
exception handling so that database connections aren't closed with
transactions in progress - this should make it possible to close the
database cleanly if an exception occurs.
2011-08-03 18:23:47 +01:00
akwizgran 7752690b29 Modified ReaderImpl so it doesn't read lookahead bytes until they're
needed - this will make it possible to read to the end of a packet and
then pass on to the next packet without needing a PushbackInputStream.
2011-08-03 17:12:37 +01:00
akwizgran 7baefb3e7b Updated the transport plugin API. 2011-08-03 16:13:13 +01:00
akwizgran 6e7d5a06b2 API for batch-mode and stream-mode transport plugins. 2011-08-02 15:09:24 +01:00
akwizgran 2740b2b002 s/transport details/transport properties/g 2011-08-02 13:08:44 +01:00
akwizgran 0e48f4ba55 Listeners for local transport updates. 2011-08-02 09:44:15 +01:00
akwizgran ff0909a0e9 Listeners for subscription changes. 2011-08-02 09:22:54 +01:00
akwizgran 0d0885bf4b Don't throw a DbException if a contact sends duplicate batches. 2011-08-01 17:56:18 +01:00
akwizgran 8e8c83b83c Use the combination of batch ID and contact ID as the primary key for
received and sent batches, since batches sent to or received from
different contacts may contain identical lists of messages and
therefore have identical IDs.
2011-08-01 17:37:48 +01:00
akwizgran 02c4d9197c Added CounterModeTest to ant buildfile. 2011-08-01 14:36:19 +01:00
akwizgran 9586e0de9c Unit tests for CTR-mode encryption. 2011-08-01 14:01:17 +01:00
akwizgran cee4956b37 If no messages are added to a batch, don't call BatchWriter.finish() -
this allows the caller to avoid creating an empty packet by delaying
creation of the packet's header and trailer until something's written
to the packet's body. Changed the return semantics of
DatabaseComponent.generateBatch(ContactId, BatchWriter,
Collection<MessageId>) so that the IDs of messages considered for
inclusion in the batch but no longer sendable are also returned - this
allows the caller to remove them from the set of requested IDs.
2011-07-28 11:17:33 +01:00
akwizgran adee3e121c Added support for registering listeners with the database that are
called when new messages are available, and a new method
hasSendableMessages(ContactId) that listeners can call to see whether
it's worth trying to create a batch.
2011-07-27 20:27:43 +01:00
akwizgran e93fbe0b20 Implemented subscription visibility. If a subscription is not visible
to a contact, do not accept, offer, or send messages belonging to that
group to or from that contact, and do not list that group in
subscription updates sent to that contact.
2011-07-27 16:43:19 +01:00
akwizgran 4311b1a224 Added RequestReaderTest to ant buildfile. 2011-07-27 11:08:17 +01:00
akwizgran b161e5ed1d Request reader and unit test. 2011-07-27 11:06:54 +01:00
akwizgran 0933092295 Added RequestWriterImplTest to ant buildfile. 2011-07-26 22:02:51 +01:00
akwizgran 0cf8477504 Read and write offers. Mostly boilerplate. 2011-07-26 22:00:39 +01:00
akwizgran 9e78837055 Implemented OfferWriter and RequestWriter, made all the writers
reusable (though not thread-safe), and guiced the readers.
2011-07-26 21:36:55 +01:00
akwizgran 426e415676 OK, I think that's enough unit tests for one day. 2011-07-26 18:37:58 +01:00
akwizgran 1e60be4b75 Unit tests for DatabaseComponent. 2011-07-26 18:25:14 +01:00
akwizgran 8ba5b46d59 More unit tests for DatabaseComponent. 2011-07-26 18:11:57 +01:00
akwizgran bcf8bcbd04 More unit tests. 2011-07-26 17:48:47 +01:00
akwizgran bc1622b1fa Unit tests and a bugfix. THE SYSTEM WORKS! 2011-07-26 17:24:26 +01:00
akwizgran dc2476cb25 Unit tests. 2011-07-26 17:12:19 +01:00
akwizgran 1ea385e7af Unit tests and a bugfix for the new database methods. 2011-07-26 16:46:50 +01:00
akwizgran 10edc05dff Database portion of the offer/request/transfer protocol (untested). 2011-07-26 15:40:34 +01:00
akwizgran a86ef2142f Sign the message with the group's private key if the group is
restricted, and check the signature if it should be present.
2011-07-25 21:54:49 +01:00
akwizgran 3f61d0c3df Changed the message format to store the author and group inline - this
doesn't take a huge amount of space and allows every message to be
self-certifying.
2011-07-25 21:14:16 +01:00
akwizgran 586d1739ae Removed salt from unrestricted groups: two unrestricted groups with
the same name will now be treated as the same group (this seems more
intuitive than the alternative).
2011-07-25 20:11:32 +01:00
akwizgran b1f27757df Switched to 256-bit ECDSA. Modified some tests because two signatures
over the same data are not necessarily identical. Key generation is
fast again - should I be worried? ;-)
2011-07-25 10:49:41 +01:00
akwizgran fb95565880 Use the BouncyCastle provider so we can be sure we won't get
NoSuchAlgorithmExceptions. Key generation is *slow* - I guess that's a
good sign. ;-)
2011-07-25 10:38:46 +01:00
akwizgran c98c968b87 Removed unnecessary Raw interface. 2011-07-24 17:47:17 +01:00
akwizgran 941460e3bc Readers, writers and factories for subscription and transport updates. 2011-07-23 21:46:47 +01:00
akwizgran 30271c14ce Reduced the visibility of some classes. 2011-07-23 18:54:06 +01:00
akwizgran 65be63dc0c Moved writers into their own package, replaced public static fields in
CryptoModule with provider methods.
2011-07-23 18:50:40 +01:00
akwizgran 13f18d9e40 Found the bug, it was just a SQL syntax error. 2011-07-23 11:29:23 +01:00
akwizgran 0edcb31d64 Store group details in the database. Some tests are still failing... 2011-07-23 01:29:18 +01:00
akwizgran de648daca5 Bundles are gone - the batch-mode and stream-mode protocols now
consist of independently encrypted and authenticated packets (Ack,
Batch, Subscriptions and Transports so far).
2011-07-22 22:19:24 +01:00
akwizgran 5d000b62f8 Removed Writer.close(). 2011-07-22 18:08:05 +01:00
akwizgran fe58fb4c30 Fixed more unit tests. 2011-07-22 17:57:25 +01:00
akwizgran e7f106a77f Fixed unit tests. 2011-07-22 17:52:02 +01:00
akwizgran a573e87c04 ReaderImpl now maintains either one or two bytes of lookahead,
depending on the value of the first byte, so that an object's initial
tag is included in the data seen by the ObjectReader. Digests and
signatures can therefore be calculated over objects by their readers
without any risk of ambiguity.
2011-07-22 17:39:59 +01:00