{"id":15147006,"url":"https://github.com/papatutuwawa/omemo_dart","last_synced_at":"2025-07-27T20:34:36.634Z","repository":{"id":52494692,"uuid":"520568823","full_name":"PapaTutuWawa/omemo_dart","owner":"PapaTutuWawa","description":"A Dart implementation of the cryptography needed for OMEMO 0.8.3 (mirror)","archived":false,"fork":false,"pushed_at":"2024-09-29T16:47:43.000Z","size":274,"stargazers_count":17,"open_issues_count":4,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-06T21:34:48.609Z","etag":null,"topics":["cryptography","dart","double-ratchet","flutter","omemo","x3dh","xmpp"],"latest_commit_sha":null,"homepage":"https://codeberg.org/PapaTutuWawa/omemo_dart","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PapaTutuWawa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"papatutuwawa"}},"created_at":"2022-08-02T16:18:58.000Z","updated_at":"2025-02-06T14:43:06.000Z","dependencies_parsed_at":"2025-01-12T17:47:57.700Z","dependency_job_id":null,"html_url":"https://github.com/PapaTutuWawa/omemo_dart","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/PapaTutuWawa/omemo_dart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PapaTutuWawa%2Fomemo_dart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PapaTutuWawa%2Fomemo_dart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PapaTutuWawa%2Fomemo_dart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PapaTutuWawa%2Fomemo_dart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PapaTutuWawa","download_url":"https://codeload.github.com/PapaTutuWawa/omemo_dart/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PapaTutuWawa%2Fomemo_dart/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267419232,"owners_count":24084127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","dart","double-ratchet","flutter","omemo","x3dh","xmpp"],"created_at":"2024-09-26T12:21:23.300Z","updated_at":"2025-07-27T20:34:36.606Z","avatar_url":"https://github.com/PapaTutuWawa.png","language":"Dart","funding_links":["https://ko-fi.com/papatutuwawa"],"categories":[],"sub_categories":[],"readme":"# omemo_dart\n\n[![status-badge](https://ci.polynom.me/api/badges/16/status.svg)](https://ci.polynom.me/repos/16)\n\n`omemo_dart` is a Dart library to help developers of Dart/Flutter XMPP clients to implement\n[OMEMO](https://xmpp.org/extensions/xep-0384.html) in its newest version - currently 0.8.3.\n\nThe library provides an implementation of the [X3DH](https://signal.org/docs/specifications/x3dh/)\nkey exchange, the [Double Ratchet](https://signal.org/docs/specifications/doubleratchet/) with\nthe OMEMO 0.8.3 specific `ENCRYPT`, `DECRYPT` and `KDF_*` functions and a very high-level\n`OmemoSessionManager` that manages all Double Ratchet sessions and provides a clean and simple\ninterface for encrypting a message for all known Ratchet sessions we have with a user.\n\nThis library also has no dependency on any XMPP library. `omemo_dart` instead defines an\nintermediary format for the required data that you, the user, will need to transform to and from\nthe stanza format of your preferred XMPP library yourself.\n\n## Important Notes\n\n- **Please note that this library has not been audited for its security! Use at your own risk!**\n- 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.\n\n## Usage\n\nInclude `omemo_dart` in your `pubspec.yaml` like this:\n\n```yaml\n# [...]\n\ndependencies:\n  omemo_dart:\n    hosted: https://git.polynom.me/api/packages/PapaTutuWawa/pub\n    version: ^0.5.0\n  # [...]\n\n# [...]\n```\n\n### Example\n\nThis repository includes a documented [\"example\"](./example/omemo_dart_example.dart) that explains the basic usage of the library while\nleaving out the XMPP specific bits. For a more functional and integrated example, see the `omemo_client.dart` example from\n[moxxmpp](https://codeberg.org/moxxy/moxxmpp).\n\n### Persistence\n\nBy default, `omemo_dart` uses in-memory implementations for everything. For a real-world application, this is unsuitable as OMEMO devices would be constantly added.\nIn order to allow persistence, your application needs to keep track of the following:\n\n- The `OmemoDevice` assigned to the `OmemoManager`\n- `JID -\u003e [int]`: The device list for each JID\n- `(JID, device) -\u003e Ratchet`: The actual ratchet\n\nIf you also use the `BlindTrustBeforeVerificationTrustManager`, you additionally need to keep track of:\n\n- `(JID, device) -\u003e (int, bool)`: The trust level and the enablement state\n\n## Contributing\n\nWhen submitting a PR, please run the linter using `dart analyze` and make sure that all\ntests still pass using `dart test`.\n\nTo ensure uniform commit message formatting, please also use `gitlint` to lint your commit\nmessages' formatting.\n\n## License\n\nLicensed under the MIT license.\n\nSee `LICENSE`.\n\n## Support\n\nIf you like what I do and you want to support me, feel free to donate to me on Ko-Fi.\n\n[\u003cimg src=\"https://codeberg.org/moxxy/moxxyv2/raw/branch/master/assets/repo/kofi.png\" height=\"36\" style=\"height: 36px; border: 0px;\"\u003e\u003c/img\u003e](https://ko-fi.com/papatutuwawa)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpapatutuwawa%2Fomemo_dart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpapatutuwawa%2Fomemo_dart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpapatutuwawa%2Fomemo_dart/lists"}