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