Commit Graph

379 Commits

Author SHA1 Message Date
akwizgran 0d0885bf4b Don't throw a DbException if a contact sends duplicate batches. 2011-08-01 17:56:18 +01:00
akwizgran 9586e0de9c Unit tests for CTR-mode encryption. 2011-08-01 14:01:17 +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 b161e5ed1d Request reader and unit test. 2011-07-27 11:06:54 +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 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 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 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
akwizgran b4bf662b3e Unit tests for HeaderReader. 2011-07-21 10:58:42 +01:00
akwizgran 5843f38803 Unit tests for BatchReader. 2011-07-21 10:14:23 +01:00
akwizgran 06ae0e0783 Use mocks for test objects with no side-effects. 2011-07-20 18:38:05 +01:00
akwizgran f727420838 Removed signatures from headers and bundles, since the transport's
authentication will make them redundant.
2011-07-20 18:33:06 +01:00
akwizgran 45b4bef348 Catch ClassCastException when the encountered type doesn't match the
expected type, and re-throw as FormatException.
2011-07-20 15:07:17 +01:00
akwizgran 6b61cfa1bc Factored out header reading and batch reading into separate classes
for easier testing.
2011-07-19 19:13:27 +01:00
akwizgran fb528a85ad Nested user-defined objects (and collections of them) can now be read
by registering ObjectReaders with the Reader.
2011-07-19 17:17:45 +01:00
akwizgran a9e7cbd05c Every encoded object should include its identifying tag. 2011-07-19 14:21:07 +01:00
akwizgran ff984c69fb Messages are no longer encoded as raw byte arrays. 2011-07-19 14:01:33 +01:00
akwizgran 30fc6c1a92 Defined some user-defined tags for protocol elements. Currently they're just adding redundancy, but in future they'll be used for parsing nested elements. 2011-07-18 17:44:18 +01:00
akwizgran 427142ae51 Read and write user-defined tags. 2011-07-18 16:46:03 +01:00
akwizgran 7a4171f3ba A more efficient encoding for short strings, raws, lists and maps. Now we can encode a list of three small integers in 4 bytes like MessagePack does, should that ever turn out to be useful. 2011-07-18 16:06:09 +01:00
akwizgran 0bc8a31749 Cleaned up serial and protocol packages in preparation for user-defined types. 2011-07-18 14:33:41 +01:00
akwizgran e25b7353ba Only check the beginnings of font names, since the exact names vary by
platform.
2011-07-14 21:39:04 +01:00
akwizgran 62d69b6fb5 Don't use FileUtils.getBriarDirectory() in tests. 2011-07-14 20:42:41 +01:00
akwizgran 065b6e496f Don't use the real Briar directory for unit tests. 2011-07-14 20:02:47 +01:00
akwizgran b41465c2da Use commons-io to measure free space. 2011-07-14 19:21:16 +01:00
akwizgran fcedc34d10 Don't store subscription or transport updates that are older than those already received. Also some small changes to DatabaseComponent impls for readability. 2011-07-14 13:53:13 +01:00
akwizgran 836d30f6df Retrieve messages from the database in raw form to avoid creating unnecessary short-lived objects. Added timestamps to headers. 2011-07-14 12:01:35 +01:00
akwizgran d4382fd232 Replaced clearSubscriptions() and addSubscription() with setSubscriptions(). 2011-07-14 09:52:05 +01:00
akwizgran a121dcdda8 New retransmission mechanism, which does away with the need for bundle IDs and should cope better with high bandwidth-delay product links. 2011-07-14 09:39:15 +01:00
akwizgran e13b0437c3 Rewrote the bundle reading and writing code to eliminate copying. Signatures and digests are now calculated on the fly as the data is read or written. This is a little bit tricky in the case of reading because ReaderImpl uses a lookahead byte, so the signature and message digest need to lag one byte behind. 2011-07-13 16:39:31 +01:00