Age-style X25519 sealed-per-recipient MRE provider for Swarmauri
Project description
Swarmauri MRE Crypto Age
Age-based multi-recipient encryption provider implementing the IMreCrypto contract.
- Sealed-per-recipient X25519 stanzas (
mode="sealed_per_recipient"andrecipient_alg="X25519-SEAL") - ChaCha20-Poly1305 payload encryption for each recipient header
- Deterministic recipient identifiers via SHA-256 public key fingerprints
- Rewrapping support for adding or removing recipients when provided the original plaintext or an opening identity
Installation
Choose the installer that matches your project workflow:
# pip
pip install swarmauri_mre_crypto_age
# Poetry
poetry add swarmauri_mre_crypto_age
# uv
uv add swarmauri_mre_crypto_age
Usage
The provider exposes asynchronous helpers for encrypting data to many recipients and decrypting it for a specific private key. The example below walks through a complete round trip.
- Create the crypto provider.
- Generate key pairs for two recipients.
- Encrypt a payload for both recipients.
- Decrypt the payload for one recipient.
from swarmauri_mre_crypto_age import AgeMreCrypto
from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey
crypto = AgeMreCrypto()
# generate key pairs for each participant
sk1 = X25519PrivateKey.generate()
pk1 = sk1.public_key()
sk2 = X25519PrivateKey.generate()
pk2 = sk2.public_key()
recipients = [
{"kind": "cryptography_obj", "obj": pk1},
{"kind": "cryptography_obj", "obj": pk2},
]
env = await crypto.encrypt_for_many(recipients, b"secret")
pt = await crypto.open_for({"kind": "cryptography_obj", "obj": sk1}, env)
assert pt == b"secret"
The helper accepts multiple KeyRef formats, including dictionaries with
kind="cryptography_obj" (for X25519PublicKey / X25519PrivateKey objects)
and raw byte references such as kind="raw_x25519_pk" or kind="age_x25519_pk".
When rewrapping an existing envelope to add recipients, pass the plaintext via
opts["pt"] or provide an identity through opts["open_with"] so the payload
can be resealed for the new recipients.
Entry point
The provider is registered under the swarmauri.mre_cryptos entry-point as AgeMreCrypto.
Want to help?
If you want to contribute to swarmauri-sdk, read up on our guidelines for contributing that will help you get started.
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
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
File details
Details for the file swarmauri_mre_crypto_age-0.3.0.dev46.tar.gz.
File metadata
- Download URL: swarmauri_mre_crypto_age-0.3.0.dev46.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8538d4b3c38e7e7e019bb06fca6b1553168d23ce413b63127bdfb125ed6a2d9
|
|
| MD5 |
dbc94c4c71d244dd95064bcfb17e3338
|
|
| BLAKE2b-256 |
627ebd8d38ca1757cc055826d1f24d4100f3d9c36a6bef99ad998d3284c47ed3
|
File details
Details for the file swarmauri_mre_crypto_age-0.3.0.dev46-py3-none-any.whl.
File metadata
- Download URL: swarmauri_mre_crypto_age-0.3.0.dev46-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3938c397d888fba86c05ef1f246486370e4ed9510a6f10c79cdeacf8c088125d
|
|
| MD5 |
6f4a8ebdc3daeba79a5dd852effece10
|
|
| BLAKE2b-256 |
831e8b2544c0f4eca0d40a1650f7ede3c53dda20df9498b28f749402172606e9
|