Commit Graph

130 Commits

Author SHA1 Message Date
dad938b0e1 feat: Allow initializing the BTBV trust manager in the constructor 2022-09-11 13:43:07 +02:00
ff52c82039 feat: Help with serializing and deserializing the BTVT manager 2022-09-11 13:33:45 +02:00
12e09947f6 feat: Implement enabling and disabling devices 2022-09-11 12:34:31 +02:00
0e370a8e19 refactor: Use synchronized's return 2022-09-09 17:39:28 +02:00
2e10842c54 feat: Make accepted ratchets unacknowledged by default 2022-08-19 16:59:24 +02:00
0e2af1f2a3 feat: Add a function to check if a ratchet is acknowledged 2022-08-19 16:58:23 +02:00
80e1b20f27 fix: Fix crash when calling getUnacknowledgedRatchets for a new Jid 2022-08-18 16:21:53 +02:00
d5d4aa9014 feat: Add getDeviceId and getDeviceBundle 2022-08-18 15:30:31 +02:00
ee7b09bdb0 feat: Ratchets should overwrite each other 2022-08-18 15:20:32 +02:00
73613e266f feat: Allow regerating a device's id 2022-08-18 15:08:05 +02:00
0a03483aaf feat: Allow regenerating one's device identity 2022-08-18 15:02:17 +02:00
fda06cef55 feat: Implement acknowledging ratchet sessions 2022-08-16 14:02:04 +02:00
5a097e4d2a feat: Allow removing a ratchet session 2022-08-16 13:27:21 +02:00
710b3c9497 feat: Allow serialising and deserialising without the ratchets 2022-08-16 12:57:16 +02:00
f540a80ec2 docs: Remove trust manager serialization from OmemoSessionManager 2022-08-16 12:54:15 +02:00
a4589b6e09 feat: Allow access to the device map 2022-08-11 12:02:21 +02:00
d0986a4608 fix: Fix ratchet only working for one message 2022-08-11 11:57:33 +02:00
234c2088b9 docs: Add notes on protobuf 2022-08-09 16:00:12 +02:00
6e7b8e3905 docs: Add an example 2022-08-09 15:48:26 +02:00
cb43bbb112 fix: Allow empty OMEMO messages to bypass trust 2022-08-09 14:45:04 +02:00
fa16f97113 refactor: Move events to lib/src/omemo 2022-08-08 19:11:27 +02:00
5158c32c3d feat: Make BlindTrustBeforeVerificationTrustManager abstract 2022-08-08 18:58:53 +02:00
c1fb79a20f feat: Implement a BTBV TrustManager 2022-08-08 18:47:43 +02:00
dafd0af1e5 feat: Add a base trust manager class 2022-08-08 18:03:05 +02:00
e9f190036c refactor: Move data classes into their own files 2022-08-08 17:43:15 +02:00
5b739aaf1a fix: Do not keep the old SPK signature 2022-08-08 15:50:00 +02:00
1bcbf27c83 feat: Make any SPK survive exactly one rotation 2022-08-08 15:48:12 +02:00
b8b6bbf800 feat: Track the old Signed Prekey after rotation 2022-08-08 15:32:08 +02:00
9c23721904 docs: Add documentation string to Device.toBundle() 2022-08-08 15:11:15 +02:00
9626763b44 feat: Make the replacement functions internal 2022-08-08 15:10:36 +02:00
43080d2ba0 feat: Expose rotating our own bundle's SPK 2022-08-08 15:09:44 +02:00
9f986c3369 feat: Handle empty OMEMO messages 2022-08-08 14:59:46 +02:00
8c1a78e360 feat: Allow encrypting to multiple Jids 2022-08-08 14:44:05 +02:00
5a187bae97 docs: Add documentation string for EncryptedKey 2022-08-08 14:28:52 +02:00
9a9c9f064b feat: Make RatchetMapKey internal 2022-08-08 14:28:02 +02:00
dd96e840d4 feat: Allow calculating fingerprints 2022-08-08 14:26:25 +02:00
be239fdb43 feat: Add events for commiting the device map and ratchet 2022-08-06 13:51:07 +02:00
859f25d867 feat: Allow serialising and deserialising OmemoSessionManager 2022-08-06 12:24:26 +02:00
189d823c87 fix: Track ratchet sessions using the (jid, device) tuple 2022-08-06 11:25:41 +02:00
fdc3985a8d feat: Serialise the Double Ratchet 2022-08-05 18:14:10 +02:00
cd77996db4 feat: Allow serialising Device to Json 2022-08-05 17:32:59 +02:00
3a7489a9c3 feat: Make most methods of the SessionManager private 2022-08-05 16:53:31 +02:00
62fdf568aa feat: Notify the user of a modified device 2022-08-05 16:52:02 +02:00
30e3bd78cd feat: Allow initiating multiple sessions for a message 2022-08-05 16:05:05 +02:00
b5d39339d1 feat: Allow building a session when receiving 2022-08-05 13:34:42 +02:00
ff7cc8e95a fix: Migrate more from protobuf 2022-08-05 13:02:44 +02:00
9ed94c8f3a fix: Migrate to custom protobuf 2022-08-05 12:59:10 +02:00
5c3cc424de feat: Implement all protobuf messages 2022-08-05 12:28:46 +02:00
b8d70f1b88 feat: Add helper functions for field Ids 2022-08-04 23:08:02 +02:00
a82b5d0990 feat: Reimplement the OMEMOMessage protobuf schema 2022-08-04 22:55:47 +02:00
08ec093675 fix: Track device Ids as integers 2022-08-04 16:57:12 +02:00
31ee61a5cd feat: Add convenience functions 2022-08-04 16:42:12 +02:00
b745973188 fix: Make decryption work 2022-08-04 16:30:09 +02:00
31d3897995 fix: Migrate Double Ratchet to the helper functions 2022-08-04 14:10:08 +02:00
4d6dbef549 feat: Add a untest decrypt function 2022-08-04 14:01:50 +02:00
e34e0cc7fb feat: Add managing our own keys 2022-08-04 13:19:27 +02:00
27b1931629 feat: Add a basic OMEMO session manager 2022-08-04 12:50:19 +02:00
713ea8e1b1 refactor: Rename key.dart to keys.dart 2022-08-03 17:18:14 +02:00
749e2e1a0a refactor: Move OmemoBundle into omemo/ 2022-08-03 17:16:40 +02:00
55979fcbbe refactor: Move the implementations into their own directory 2022-08-03 17:15:08 +02:00
1349df9274 refactor: Move the DH function into its own file 2022-08-03 16:55:56 +02:00
e11baabfa0 feat: Remove the identityKey == 3 case 2022-08-03 16:52:42 +02:00
f897431692 docs: Improve documentation 2022-08-03 16:50:27 +02:00
45d0c57305 fix: Throw a custom exception 2022-08-03 16:44:18 +02:00
8d222a160f feat: Check the HMAC during decryption 2022-08-03 16:41:33 +02:00
6d8238475c refactor: Remove pkcs7padding function 2022-08-03 16:38:04 +02:00
2fc2623092 docs: I meant 0.8.3, not 0.8.0 2022-08-03 16:32:22 +02:00
1a0f470ada feat: IMPLEMENT THE DOUBLE RATCHET WITH X3DH 2022-08-03 15:29:13 +02:00
4e3e20f08c ???: Move code around 2022-08-03 15:13:03 +02:00
d3c8d813a9 wip: Add the basics for the Double Ratchet 2022-08-02 18:13:14 +02:00
56ae882aa0 style: Fix linter warning 2022-08-02 15:44:31 +02:00
26019ac704 style: Move the X3DH info string into a constant 2022-08-02 15:43:39 +02:00
4211775c90 feat: Add signature validation 2022-08-02 15:40:26 +02:00
fc43655956 feat: Calculate the Appended Data 2022-08-02 15:26:00 +02:00
15df3b7f6b fix: Remove TODO
The X3DH spec says that salt (presumably the nonce) is supposed
to be [0, 0, ..., 0] with the length of the hash. I seem to have
skipped over that.

From Section 2.2:
"HKDF salt = A zero-filled byte sequence with length equal to the
hash output length."
2022-08-02 15:17:07 +02:00
566cb1b0ec style: Lint using very_good_analysis 2022-08-02 15:10:31 +02:00
d86e7f5963 refactor: Clean up the X3DH implementation 2022-08-02 15:03:58 +02:00
34df73c929 ENABLE X3DH WITH ED25519 KEYS 2022-08-01 23:20:31 +02:00
0565cdef81 IMPLEMENT X3DH (without OMEMO) 2022-08-01 22:08:38 +02:00
18c6fdb54e Initial commit 2022-06-30 14:00:18 +02:00