Initial codebase was forked from https://github.com/tgalal/python-axolotl but has since been heavily rewritten.
Dependencies
- protobuf (>=4.21.0)
- cryptography
Linux
pip install .
Usage
This library handles only the crypto part of OMEMO, not the XMPP protocol part. This means you need to take care yourself of things like publishing/downloading bundles, publishing/subscribing to PEP deviceliste updates, sending and receiving messages.
Building a session
A OMEMO client needs to implement the Store interface (omemo_dr.state.store.Store). This will manage loading and storing of identity, prekeys, signed prekeys, and session state.
Once this is implemented, building a session is fairly straightforward:
storage = MyStorage()
config = OMEMOConfig(default_prekey_amount=100,
min_prekey_amount=80,
spk_archive_seconds=86400 * 15,
spk_cycle_seconds=86400,
unacknowledged_count=2000)
manager = OMEMOSessionManager(address, storage, config)
# Get your bundle for publishing
bundle = manager.get_bundle('eu.siacs.conversations.axolotl')
my_publish_method(bundle)
# Build a session with a downloaded bundle of a remote contact
bundle = my_receive_bundle_method()
manager.build_session(remote_address, bundle)
# Encrypt a message to a remote contact
message = manager.encrypt(remote_address, plaintext)
my_send_message_method(message)
# Descrypt a message
message = my_receive_message_method()
plaintext, fingerprint, trust = manager.decrypt(message, remote_address)
Development
Generating protobuf files
Download the protobuf-compiler > 3.19 and execute
$ protoc -I=src/omemo_dr/protobuf --python_out=src/omemo_dr/protocol omemo.proto whisper.proto
$ protoc -I=src/omemo_dr/protobuf --python_out=src/omemo_dr/state storage.proto
Release files for omemo-dr 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| omemo_dr-1.2.0.tar.gz | 152.8 kB | Details |
Release files / omemo_dr-1.2.0.tar.gz
| Download URL | omemo_dr-1.2.0.tar.gz |
|---|---|
| Size | 152.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
18b6542b3bb7ed6dce34dd02f32b16401982ba24f0146ddae091dcb92c79a484
|
|
BLAKE2b-256 checksum How to use checksums |
4f6c2e024e615cca6f5e03261cf8fa9f584a5ecd59d3fb7ac7e7bf52f2d9cee1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.9
|