A Dart implementation of the cryptography needed for OMEMO 0.8.3.
Go to file
2022-08-06 11:19:26 +02:00
example refactor: Clean up the X3DH implementation 2022-08-02 15:03:58 +02:00
lib feat: Serialise the Double Ratchet 2022-08-05 18:14:10 +02:00
protobuf wip: Add the basics for the Double Ratchet 2022-08-02 18:13:14 +02:00
test feat: Serialise the Double Ratchet 2022-08-05 18:14:10 +02:00
.gitignore Initial commit 2022-06-30 14:00:18 +02:00
.gitlint chore: Implement gitlint 2022-08-06 11:19:26 +02:00
analysis_options.yaml wip: Add the basics for the Double Ratchet 2022-08-02 18:13:14 +02:00
CHANGELOG.md Initial commit 2022-06-30 14:00:18 +02:00
flake.lock refactor: Clean up the X3DH implementation 2022-08-02 15:03:58 +02:00
flake.nix wip: Add the basics for the Double Ratchet 2022-08-02 18:13:14 +02:00
LICENSE.md ENABLE X3DH WITH ED25519 KEYS 2022-08-01 23:20:31 +02:00
pubspec.yaml feat: Add a untest decrypt function 2022-08-04 14:01:50 +02:00
README.md docs: Fix sentence in README 2022-08-05 18:36:37 +02:00

omemo_dart

omemo_dart is a Dart library to help developers of Dart/Flutter XMPP clients to implement OMEMO in its newest version - currently 0.8.3.

The library provides an implementation of the X3DH key exchange, the Double Ratchet with the OMEMO 0.8.3 specific ENCRYPT, DECRYPT and KDF_* functions and a very high-level OmemoSessionManager that manages all Double Ratchet sessions and provides a clean and simple interface for encrypting a message for all known Ratchet sessions we have with a user.

This library also has no dependency on any XMPP library. omemo_dart instead defines an intermediary format for the required data that you, the user, will need to transform to and from the stanza format of your preferred XMPP library yourself.

Important Notes

  • Please note that this library has not been audited for its security! Use at your own risk!
  • This library is not tested with other implementations of OMEMO 0.8.3 as I do not know of any client implementing spec compliant OMEMO 0.8.3. It does, however, work with itself.

Contributing

When submitting a PR, please run the linter using dart analyze and make sure that all tests still pass using dart test.

License

Licensed under the MIT license.

See LICENSE.