In-memory key provider for Swarmauri
Project description
Swarmauri In‑Memory Key Provider
Volatile, in‑memory key provider for Swarmauri. All key material is kept strictly in process memory (no disk writes). Ideal for testing, CI, and ephemeral gateways where persistence is not desired. Not intended for long‑term or production storage of secrets.
Installation
Install the package with your preferred Python tooling:
pip install swarmauri_keyprovider_inmemory
poetry add swarmauri_keyprovider_inmemory
pip install uv
uv pip install swarmauri_keyprovider_inmemory
Usage
Create and manage symmetric (or opaque/asymmetric placeholder) keys entirely in memory. The snippet below creates a new symmetric key and returns a KeyRef with material present when allowed by the export policy.
import asyncio
from swarmauri_keyprovider_inmemory import InMemoryKeyProvider
from swarmauri_core.key_providers.types import (
KeySpec,
KeyClass,
KeyAlg, # optional, not enforced by the provider
KeyUse,
ExportPolicy,
)
async def main() -> None:
provider = InMemoryKeyProvider()
# Create a symmetric key kept only in memory
spec = KeySpec(
klass=KeyClass.symmetric,
alg=KeyAlg.AES256_GCM, # optional hint – not strictly enforced
uses=(KeyUse.ENCRYPT, KeyUse.DECRYPT),
export_policy=ExportPolicy.SECRET_WHEN_ALLOWED, # material may be present
label="session-key",
)
ref = await provider.create_key(spec)
assert ref.kid and ref.version == 1
# ref.material may be populated depending on export_policy
# Rotate to get a new version, still in memory only
ref2 = await provider.rotate_key(ref.kid)
assert ref2.version == 2
# List available versions
versions = await provider.list_versions(ref.kid)
print(versions) # e.g., (1, 2)
# Import existing key material
imported = await provider.import_key(
spec,
material=b"\x00" * 32,
)
assert imported.version == 1
# Fetch current version
current = await provider.get_key(ref.kid)
assert current.version == max(versions)
# Destroy a specific version or the whole key
await provider.destroy_key(ref.kid, version=1) # delete only v1
await provider.destroy_key(imported.kid) # delete all versions
# Utilities
rand = await provider.random_bytes(16)
okm = await provider.hkdf(b"ikm", salt=b"salt", info=b"ctx", length=32)
print(len(rand), len(okm))
asyncio.run(main())
Capabilities
- Class support:
symmetric,asymmetric (opaque) - Features:
create,import,rotate,destroy,list_versions,get_key,random_bytes,hkdf - No persistence: data is lost when the process exits
- Not supported: JWK/JWKS export (will raise
NotImplementedError)
Security Considerations
- Keys exist only for the lifetime of the Python process; restarting drops all material.
- No hardware isolation or disk persistence is provided.
- Use only for development, CI, or other ephemeral scenarios.
Notes
- Exported
KeyRef.materialpresence depends on theExportPolicy. UseExportPolicy.NONEto prevent material from being surfaced to callers. - For gateways, set this provider as the default to keep keys off disk in development and CI.
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_inmemory-0.2.1.dev21.tar.gz.
File metadata
- Download URL: swarmauri_keyprovider_inmemory-0.2.1.dev21.tar.gz
- Upload date:
- Size: 9.0 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 |
a13b2aa11feaaf2736a46e87e847744f278f61ee7f1729569b62c5a81538a7eb
|
|
| MD5 |
94b93952613b6d55a19f1120b499d393
|
|
| BLAKE2b-256 |
5b78c9928ac66322fea6afca58b1418ea3af6ed936086c6b6c176d6985d39e34
|
File details
Details for the file swarmauri_keyprovider_inmemory-0.2.1.dev21-py3-none-any.whl.
File metadata
- Download URL: swarmauri_keyprovider_inmemory-0.2.1.dev21-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 |
a4e0b2fb93904d824de92d6947a4df242feea0ee08765521e9fa2a4085fe56d6
|
|
| MD5 |
1f4fddace1fcae7d9f92de88807aabec
|
|
| BLAKE2b-256 |
d7d7f6b61e4cd4150b9b76698ea6cbec7380df3b73a37fb51b4215b89a53056c
|