Skip to main content

KeyBraid — cross-platform master-secret encryption (XChaCha20-Poly1305)

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_secret separately from the encrypted package.
  • Each encrypt() without a master secret generates a new random master secret.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keybraid-3.0.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

keybraid-3.0.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file keybraid-3.0.0.tar.gz.

File metadata

  • Download URL: keybraid-3.0.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for keybraid-3.0.0.tar.gz
Algorithm Hash digest
SHA256 3b712294b012c7608986846f0e3a306a8ee6bb5dee5349aa01473306024940c0
MD5 4e872576d8d6188188118e1de1150862
BLAKE2b-256 50befd9c24768303cdc9a88c08b027432a780aee54b7cf30f2a3f0c04d860cda

See more details on using hashes here.

File details

Details for the file keybraid-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: keybraid-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for keybraid-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9496a303742ccee8811fe98101cb6ad986c37b1c58987ba148fe927d59c025c4
MD5 6cc2a5020c53de7323264afdc4150ede
BLAKE2b-256 1ebe6e2982766b69ebdab9901e2fb5574164c4025ae98e63c066a1c8bb846d4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page