KeyBraid — cross-platform hybrid post-quantum master-secret encryption
Project description
KeyBraid for Python
Cross-platform master-secret encryption. Encrypt on Python, decrypt on Node.js, Flutter, or Java — and vice versa.
- Cipher: XChaCha20-Poly1305 (AES-256-GCM fallback)
- Key derivation: HKDF-SHA3-512 → SHA3-512 final key
- Spec: ../spec/SPEC-v3.md
Requirements
- Python 3.10+
- uv (recommended) or pip
Installation
cd python
uv sync --extra dev
Quick start
from keybraid import decrypt, encrypt, derive_key1, derive_key2, key_fingerprint
package, master_secret = encrypt("secret message")
plain = decrypt(package, master_secret)
key1 = derive_key1(master_secret)
key2 = derive_key2(master_secret)
fp = key_fingerprint(master_secret)
Optional password protection
from keybraid import protect_master_secret
protected, salt = protect_master_secret(master_secret, "user-password")
package, _ = encrypt("data", protected)
API reference
| Function | Description |
|---|---|
generate_master_secret() |
Random 256-char Base62 master secret |
derive_key1(master_secret) |
Deterministic Key1 |
derive_key2(master_secret) |
Deterministic Key2 |
encrypt(plain_text, master_secret=None) |
Returns (EncryptedPackage, master_secret) |
decrypt(package, master_secret) |
Returns plaintext |
key_fingerprint(master_secret) |
SHA3-256 fingerprint (Base64) |
protect_master_secret(master_secret, password) |
Argon2id-protected master secret |
Encrypted package
{
"version": "v3",
"algorithm": "XChaCha20-Poly1305",
"nonce": "...",
"ciphertext": "...",
"tag": "..."
}
Tests
uv run pytest -q
uv run python scripts/vectors_v3.py
Cross-platform vectors: ../spec/test-vectors-v3.json
Security
- Store
master_secretseparately from the encrypted package. - Each
encrypt()without a master secret generates a new random master secret.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
keybraid-4.0.0.tar.gz
(9.2 kB
view details)
Built Distribution
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
keybraid-4.0.0-py3-none-any.whl
(16.0 kB
view details)
File details
Details for the file keybraid-4.0.0.tar.gz.
File metadata
- Download URL: keybraid-4.0.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e0e11fe838193c1dde57cb5276674d15f3ad1d1e4dbd0b624150285656e2874
|
|
| MD5 |
976ffef6828db1eb43ab3edb80342996
|
|
| BLAKE2b-256 |
8ad3ff3c520fe03b93bfc6c9459d5ffe4ae4ed2e79c2e4f858cbf9a2ebe967f8
|
File details
Details for the file keybraid-4.0.0-py3-none-any.whl.
File metadata
- Download URL: keybraid-4.0.0-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40bc5701bc9742e545d9fbba422341ae78caa5fe06f5a00dd77ba61fe8343e06
|
|
| MD5 |
b84fdb24d3c055bf58521854aaf80ea6
|
|
| BLAKE2b-256 |
1d66ad1ef6cc66254648c5b65fbee1b21de61533b62a9b9dadde0d2b30e9c305
|