RSA-based signer for Swarmauri
Project description
Swarmauri Signing RSA
An asynchronous RSA signer implementing the ISigning interface for detached
signatures over raw bytes and canonicalized envelopes.
Capabilities
- Detached signatures for byte payloads as well as canonicalized envelopes
- JSON canonicalization is built in; CBOR canonicalization is available when
cbor2is installed - RSA-PSS-SHA256 (default) and RS256 signature algorithms powered by
cryptography - Verification requires the expected RSA public keys to be provided through
opts["pubkeys"], enabling multi-signer verification scenarios - Private and public keys can be supplied as PEM strings, filesystem paths,
RFC 7517 JWKs, or raw
cryptographykey objects via SwarmauriKeyRefdictionaries
Installation
Pick the tool that matches your workflow:
# pip
pip install swarmauri_signing_rsa
# Poetry
poetry add swarmauri_signing_rsa
# uv
uv add swarmauri_signing_rsa
Quickstart
The example below generates an RSA key, signs a JSON envelope, and then verifies
the detached signature using the corresponding public key. The same pattern
applies to raw byte payloads via sign_bytes/verify_bytes.
import asyncio
from cryptography.hazmat.primitives.asymmetric import rsa
from swarmauri_signing_rsa import RSAEnvelopeSigner
def key_ref_from_private(private_key):
return {"kind": "cryptography_obj", "obj": private_key}
def key_ref_from_public(public_key):
return {"kind": "cryptography_obj", "obj": public_key}
async def main() -> None:
signer = RSAEnvelopeSigner()
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
envelope = {"payload": {"msg": "hello"}, "headers": {"alg": "RSA-PSS-SHA256"}}
signatures = await signer.sign_envelope(
key_ref_from_private(private_key),
envelope,
canon="json",
alg="RSA-PSS-SHA256",
)
is_valid = await signer.verify_envelope(
envelope,
signatures,
opts={"pubkeys": [key_ref_from_public(private_key.public_key())]},
)
assert is_valid
asyncio.run(main())
Entry Point
The signer registers under the swarmauri.signings entry point as
RSAEnvelopeSigner and exposes the same name for the Peagen plugin registry.
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_signing_rsa-0.3.0.dev30.tar.gz.
File metadata
- Download URL: swarmauri_signing_rsa-0.3.0.dev30.tar.gz
- Upload date:
- Size: 10.1 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 |
25777957e1355fc3e06c9a77453310859c1bbd045f09727d2c29f5be128fbf30
|
|
| MD5 |
8a220e2bced59475bc1df2586120478b
|
|
| BLAKE2b-256 |
2fbe04b06ca5fd4c75cbc942ecff2aa807e9d53cd15a072b13ffab0085ea1a85
|
File details
Details for the file swarmauri_signing_rsa-0.3.0.dev30-py3-none-any.whl.
File metadata
- Download URL: swarmauri_signing_rsa-0.3.0.dev30-py3-none-any.whl
- Upload date:
- Size: 11.1 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 |
8e2e9696518258bfc34acacf19dcf766de81614bad8475760ed8bca90b2a3134
|
|
| MD5 |
1b858edaaa350a22e3f12d3620eeb13b
|
|
| BLAKE2b-256 |
265470ea2f4a96dd6e24de4ecf489b4fae5d27a88e67f4e19fdcfdb3100b9e05
|