In-memory key provider for development and testing
Project description
Swarmauri Local Key Provider
Provides a pure in-memory implementation of the KeyProviderBase suitable for
local development, unit testing, and rapid prototyping without any external
infrastructure.
Capabilities
- Generate symmetric AES-256-GCM keys and several asymmetric algorithms (Ed25519, X25519, RSA-OAEP/PSS-SHA256, and ECDSA P-256-SHA256).
- Import existing key material and rotate to new versions on demand.
- Retrieve stored keys (optionally including the secret material) and list available versions.
- Export public material as individual JWKs or aggregate JWKS documents.
- Produce cryptographically secure random bytes or derive material using HKDF.
- Destroy keys when they are no longer needed to keep local environments tidy.
Installation
Choose the tool that best matches your workflow:
# pip
pip install swarmauri_keyprovider_local
# Poetry
poetry add swarmauri_keyprovider_local
# uv
uv add swarmauri_keyprovider_local
Quickstart
The example below mirrors swarmauri_keyprovider_local.examples.basic_usage
and demonstrates how to create, store, and retrieve a symmetric key.
import asyncio
from swarmauri_keyprovider_local import LocalKeyProvider
from swarmauri_core.key_providers.types import (
ExportPolicy,
KeyAlg,
KeyClass,
KeySpec,
)
from swarmauri_core.crypto.types import KeyUse
async def run_example() -> str:
"""Create and retrieve a symmetric key using LocalKeyProvider."""
provider = LocalKeyProvider()
spec = KeySpec(
klass=KeyClass.symmetric,
alg=KeyAlg.AES256_GCM,
uses=(KeyUse.ENCRYPT,),
export_policy=ExportPolicy.SECRET_WHEN_ALLOWED,
)
created = await provider.create_key(spec)
fetched = await provider.get_key(created.kid, include_secret=True)
assert fetched.material is not None
return fetched.kid
if __name__ == "__main__":
print(asyncio.run(run_example()))
Rotate, export, and derive
Once you have a provider instance, additional asynchronous helpers are available to manage keys and metadata:
# Rotate the current key in-place (keeps the same KID with a new version)
rotated = await provider.rotate_key(created.kid)
# List available versions for auditing or debugging
versions = await provider.list_versions(created.kid)
# Export public material
jwk = await provider.get_public_jwk(created.kid)
jwks = await provider.jwks()
# Destroy keys when finished
await provider.destroy_key(created.kid)
# Generate bytes or derive new material locally
random_bytes = await provider.random_bytes(32)
derived = await provider.hkdf(b"ikm", salt=b"salt", info=b"context", length=32)
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_keyprovider_local-0.2.1.dev23.tar.gz.
File metadata
- Download URL: swarmauri_keyprovider_local-0.2.1.dev23.tar.gz
- Upload date:
- Size: 9.7 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 |
d77018c50aad060d976fa5cd105e81d48cb08d2c4af33727ffb67ed0c187eb48
|
|
| MD5 |
46ef2593199d7e0342bfd4c2b8ba1c81
|
|
| BLAKE2b-256 |
14cf69269c49c08a23f9a8161b2dec56cd0ca3e8706797efe8c47984223eb6a8
|
File details
Details for the file swarmauri_keyprovider_local-0.2.1.dev23-py3-none-any.whl.
File metadata
- Download URL: swarmauri_keyprovider_local-0.2.1.dev23-py3-none-any.whl
- Upload date:
- Size: 12.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 |
34387df4a1e81e318cf73462e1a08ab9a456e58f92f0dda3878ec96696738d56
|
|
| MD5 |
dbb72e3d6eadd4c635b32ea58fe8cbf3
|
|
| BLAKE2b-256 |
2ff6815af0e956c2db80e50bdc9d400aad88e723670c37f99cf61ce6cb131bfa
|