A Dart implementation of the cryptography needed for OMEMO 0.8.3.
Go to file
2022-08-05 18:26:20 +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
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: Update README 2022-08-05 18:26:20 +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 between the stanza format of your preferred XMPP library and omemo_dart's intermediary format 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.