ECDH-ES+A128KW based multi-recipient encryption provider for Swarmauri
Project description
Swarmauri MRE Crypto ECDH-ES+A128KW
ECDH-ES+A128KW based multi-recipient encryption provider implementing the IMreCrypto contract.
Capabilities
- Per-recipient ECDH-ES key agreement over
secp256r1 - AES-128 Key Wrap (KW) of the derived content-encryption key
- AES-128-GCM payload encryption with optional additional authenticated data (AAD)
- Supported payload algorithm:
A128GCM - Supported recipient algorithm:
ECDH-ES+A128KW - Supported MRE mode:
MreMode.ENC_ONCE_HEADERS - Re-wrapping existing envelopes is not supported
Installation
pip
pip install swarmauri_mre_crypto_ecdh_es_kw
Poetry
poetry add swarmauri_mre_crypto_ecdh_es_kw
uv
-
Install
uvif it is not already available:curl -LsSf https://astral.sh/uv/install.sh | sh
-
Add the package to your environment:
uv pip install swarmauri_mre_crypto_ecdh_es_kw
Usage
The provider operates asynchronously. The example below demonstrates encrypting and decrypting a payload for a single
recipient whose key is provided as a cryptography object reference. The same aad (if provided) must be used for
both encryption and decryption.
import asyncio
from cryptography.hazmat.primitives.asymmetric import ec
from swarmauri_mre_crypto_ecdh_es_kw import EcdhEsA128KwMreCrypto
async def main() -> None:
crypto = EcdhEsA128KwMreCrypto()
sk = ec.generate_private_key(ec.SECP256R1())
pk = sk.public_key()
recipient = {"kid": "1", "version": 1, "kind": "cryptography_obj", "obj": pk}
envelope = await crypto.encrypt_for_many([recipient], b"secret", aad=b"metadata")
plaintext = await crypto.open_for(
{"kind": "cryptography_obj", "obj": sk}, envelope, aad=b"metadata"
)
assert plaintext == b"secret"
if __name__ == "__main__":
asyncio.run(main())
Entry point
The provider is registered under the swarmauri.mre_cryptos entry point as EcdhEsA128KwMreCrypto.
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_ecdh_es_kw-0.2.0.dev33.tar.gz.
File metadata
- Download URL: swarmauri_mre_crypto_ecdh_es_kw-0.2.0.dev33.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","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 |
4d1d4557cff984f95dcae3383da261370e96c761f7c795fcc8edbe717561dfaf
|
|
| MD5 |
fd7922309f827ada528714fcc8c8eb2e
|
|
| BLAKE2b-256 |
fe5f79e6a3dfc22c8177a1115ed16c87dc1098e1de681633db6796073feb082a
|
File details
Details for the file swarmauri_mre_crypto_ecdh_es_kw-0.2.0.dev33-py3-none-any.whl.
File metadata
- Download URL: swarmauri_mre_crypto_ecdh_es_kw-0.2.0.dev33-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","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 |
73e22afe6b791e9260e528a206732321617e1ed5ff0205daf16ebab7c501342e
|
|
| MD5 |
5845baf160551193d9d090e1666326c9
|
|
| BLAKE2b-256 |
79727f43ff86b30a5cd7017297850f6df130d8a79fd4edf2ed5e2c46edbfef24
|