X Chat SDK - encryption for X Direct Messages (Python bindings)
Project description
chat-xdk Python bindings
Python bindings for the X Chat SDK — encryption for X Direct Messages.
Install
pip install chatxdk
The PyPI distribution is chatxdk; import it as chat_xdk.
Architecture
Python (chat_xdk) → PyO3 → chat-xdk-core (Rust)
Prerequisites
- Python 3.10+
- Rust (stable) and maturin
Setup
From source (editable install):
cd crates/pyo3
pip install maturin
maturin develop
Release wheel:
maturin build --release
pip install target/wheels/*.whl
Quick Start
from chat_xdk import Chat
chat = Chat(config_json)
chat.unlock("2580")
# Or load a local key blob + its registered version instead of Juicebox:
# chat.import_keys(private_key_bytes, version=registered_key_version)
# Set the session once: your user id + registered signing-key version,
# the opt-in conversation-key cache, and the participants' signing keys.
# Each signing-key entry must include the identity public key and its binding
# signature so the SDK can verify the signing key is authentic.
chat.set_identity("111", "v1")
chat.set_cache_keys(True)
chat.set_signing_keys([
{
"user_id": "111",
"public_key_version": "v1",
"public_key": "BASE64...",
"identity_public_key": "BASE64...",
"identity_public_key_signature": "BASE64...",
},
{
"user_id": "222",
"public_key_version": "v1",
"public_key": "BASE64...",
"identity_public_key": "BASE64...",
"identity_public_key_signature": "BASE64...",
},
])
# Initial load — batch decrypt with automatic key extraction. Signing keys
# come from the store; the verified conversation keys populate the cache.
result = chat.decrypt_events(raw_events)
for dm in result["messages"]:
if dm["event"]["type"] == "Message":
print(dm["event"]["sender_id"], dm["event"]["content"]["text"])
# Individual events after the initial load: conversation keys resolve from
# the cache and signing keys from the store (pass either explicitly to
# override).
event = chat.decrypt_event(new_event_b64)
# Sending resolves the identity and conversation key from the session too.
payload = chat.encrypt_message(event["conversation_id"], "hi!")
# Reply / react by handing back the raw event being answered.
reply = chat.encrypt_reply(event["conversation_id"], "pong", new_event_b64)
reaction = chat.encrypt_add_reaction(new_event_b64, "👍")
API
See the Python column of the unified tables in docs/API.md for the full method list, parameters, and return types.
Security limitations
The underlying protocol provides no forward secrecy and no post-compromise security: compromise of an identity private key exposes all conversation keys ever encrypted to that public key — and therefore all past and future messages in those conversations. Key rotation does not retroactively protect messages encrypted under a previous key. See docs/CRYPTO.md — Known Limitations.
License
MIT — see the repo LICENSE. Third-party notices:
THIRD_PARTY_NOTICES.md.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chatxdk-0.4.2-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: chatxdk-0.4.2-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b31fd93befbb5255afb286f21ba887c913f1e56d1a960167f511f7bb692998b
|
|
| MD5 |
62e88767b18b9ad697b8d1981caf8bb2
|
|
| BLAKE2b-256 |
14e095b8b6679dd9a68228ba657276946c69ace8fd897e99b49cc97fb5321858
|
Provenance
The following attestation bundles were made for chatxdk-0.4.2-cp310-abi3-win_amd64.whl:
Publisher:
release.yml on xdevplatform/chat-xdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chatxdk-0.4.2-cp310-abi3-win_amd64.whl -
Subject digest:
7b31fd93befbb5255afb286f21ba887c913f1e56d1a960167f511f7bb692998b - Sigstore transparency entry: 2228117427
- Sigstore integration time:
-
Permalink:
xdevplatform/chat-xdk@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/xdevplatform
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file chatxdk-0.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: chatxdk-0.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 3.5 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6beeabb2ab15dba4faa7abcfc1a305c1fc83c4e6a8b93494ffa817cffe0de7ad
|
|
| MD5 |
3f1e7876068232f2bb1f3e329cb52270
|
|
| BLAKE2b-256 |
7980157ef81a406b531bd7c2d0abb8fde195d7a082896e98a441251b8af642e1
|
Provenance
The following attestation bundles were made for chatxdk-0.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on xdevplatform/chat-xdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chatxdk-0.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
6beeabb2ab15dba4faa7abcfc1a305c1fc83c4e6a8b93494ffa817cffe0de7ad - Sigstore transparency entry: 2228118852
- Sigstore integration time:
-
Permalink:
xdevplatform/chat-xdk@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/xdevplatform
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file chatxdk-0.4.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: chatxdk-0.4.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 3.4 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
703dc59c8033f7a34d7e1a7ce030e15e71fa06a85bce88fcc5bd0577d2e56263
|
|
| MD5 |
2efe04f17b44d91821a7162d29c0519f
|
|
| BLAKE2b-256 |
865e4f0304e79fef00831820f8c7750217448e53fb4d2b367a76db4019771598
|
Provenance
The following attestation bundles were made for chatxdk-0.4.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on xdevplatform/chat-xdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chatxdk-0.4.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
703dc59c8033f7a34d7e1a7ce030e15e71fa06a85bce88fcc5bd0577d2e56263 - Sigstore transparency entry: 2228118260
- Sigstore integration time:
-
Permalink:
xdevplatform/chat-xdk@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/xdevplatform
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file chatxdk-0.4.2-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: chatxdk-0.4.2-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.1 MB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7a4615bf73514402af47742267190e297b82adfe3188431a81f504c1f397a9d
|
|
| MD5 |
bef948eba043137d9359ab0838ec0315
|
|
| BLAKE2b-256 |
8ca23397fb374189f3c531677df74f82fdb22cfb01697147f3a59dc6ba360cfa
|
Provenance
The following attestation bundles were made for chatxdk-0.4.2-cp310-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on xdevplatform/chat-xdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chatxdk-0.4.2-cp310-abi3-macosx_11_0_arm64.whl -
Subject digest:
d7a4615bf73514402af47742267190e297b82adfe3188431a81f504c1f397a9d - Sigstore transparency entry: 2228116173
- Sigstore integration time:
-
Permalink:
xdevplatform/chat-xdk@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/xdevplatform
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file chatxdk-0.4.2-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: chatxdk-0.4.2-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.3 MB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a724022e0db8583fe90fdffbb9fa4c29e7899e47a48aa02cf99ae3f8316723bb
|
|
| MD5 |
a9e00563dab91e6ae82acedf2d753aa2
|
|
| BLAKE2b-256 |
318c16664c93fcf38a770236ac84084e2d98521d99196356866c829cfdb02fa4
|
Provenance
The following attestation bundles were made for chatxdk-0.4.2-cp310-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on xdevplatform/chat-xdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chatxdk-0.4.2-cp310-abi3-macosx_10_12_x86_64.whl -
Subject digest:
a724022e0db8583fe90fdffbb9fa4c29e7899e47a48aa02cf99ae3f8316723bb - Sigstore transparency entry: 2228116881
- Sigstore integration time:
-
Permalink:
xdevplatform/chat-xdk@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/xdevplatform
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7e891ba58c66bfbd45229ff37ff99668b399c9c3 -
Trigger Event:
workflow_dispatch
-
Statement type: