PEP 458 compatible detached signing provider for Swarmauri
Project description
swarmauri_signing_pep458
swarmauri_signing_pep458 packages a detached signature provider that implements
PEP 458 style signing for The Update Framework
(TUF) metadata. It brings canonical JSON, multi-algorithm support, and quorum-aware
verification to the Swarmauri runtime so supply-chain aware components can produce
and validate repository metadata with a uniform API.
Key Features
- PEP 458 compatible format – Signatures emit the
tuf/pep458envelope withmethod,keyid, and base64-encoded payloads so the metadata aligns with the specification's detached signature requirements. - Deterministic canonicalization – Canonicalizes envelopes using TUF's lexicographically-sorted JSON encoding to guarantee byte-for-byte reproducibility.
- Multiple signature algorithms – Supports Ed25519 for online roles and RSA-PSS-SHA256 for offline root-style metadata, allowing you to mix schemes per role.
- Quorum aware verification – Enforces
min_signers, explicit key-id allow lists, and algorithm restrictions during verification to help model offline threshold signing policies. - Flexible key inputs – Accepts cryptography key objects, PEM encoded key
material, or Swarmauri
KeyRefdictionaries for both signing and verification.
Installation
Using uv
uv add swarmauri_signing_pep458
Using pip
pip install swarmauri_signing_pep458
Quick Start
import asyncio
from cryptography.hazmat.primitives.asymmetric import ed25519
from swarmauri_signing_pep458 import Pep458Signer
async def main() -> None:
signer = Pep458Signer()
private = ed25519.Ed25519PrivateKey.generate()
keyref = {"kind": "cryptography_obj", "obj": private, "alg": "Ed25519"}
payload = b"release metadata"
signatures = await signer.sign_bytes(keyref, payload)
is_valid = await signer.verify_bytes(
payload,
signatures,
opts={"pubkeys": [private.public_key()]},
)
print(f"Signature valid? {is_valid}")
asyncio.run(main())
Signature Format
Each signature returned by the signer follows this shape:
{
"format": "tuf/pep458",
"method": "ed25519",
"alg": "Ed25519",
"keyid": "base64(SHA256(method || SPKI))",
"sig": "base64(signature-bytes)"
}
Use the method label when matching public keys and verifying thresholds for a
particular TUF role.
Verification Policy Hints
The verify_bytes and verify_envelope APIs accept a require mapping with the
following helpful keys:
min_signers: Require at least n distinct key ids to validate.algs: Restrict verification to a subset of algorithms, e.g.("Ed25519",). The values are normalized case-insensitively.kids: Whitelist key identifiers allowed to satisfy the policy.pubkeys: Explicit public key materials to use when verifying (PEM strings, cryptography objects, or{"kind": "pem", "pub": ...}dictionaries).
Relationship to the Cipher Suite
Pair this package with swarmauri_cipher_suite_pep458 to describe repository role
policies, canonicalization settings, and default algorithm choices across the
Swarmauri ecosystem.
Development
- Format the code with
ruff format .and lint withruff check . --fix. - Run the asynchronous unit tests with
pytestonce cryptography dependencies are available. - Contributions should include updates to documentation fragments and policy tables when new capabilities are added.
License
This project is licensed under the Apache License 2.0.
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_pep458-0.1.0.dev40.tar.gz.
File metadata
- Download URL: swarmauri_signing_pep458-0.1.0.dev40.tar.gz
- Upload date:
- Size: 10.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 |
69c5a9df02184ed82becb97d60d40d98ca40b4f65a1018f9d4c95dc15114f6d7
|
|
| MD5 |
d0e425c9718211e1715da82ab02291c9
|
|
| BLAKE2b-256 |
12bc48e7faeb5858a882e20bc8a2bf5ab32710e9edc9faf706355d283f5ec916
|
File details
Details for the file swarmauri_signing_pep458-0.1.0.dev40-py3-none-any.whl.
File metadata
- Download URL: swarmauri_signing_pep458-0.1.0.dev40-py3-none-any.whl
- Upload date:
- Size: 10.9 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 |
156cb8a537fb916bec86241bdd00dfbbf7c49cd22700c7fdc478b375d2990517
|
|
| MD5 |
ab5ccbf82b26e3b87b707594ea8fde2d
|
|
| BLAKE2b-256 |
34024f3fa7337cd44c70ba1cecd3aa65f8d19e456b4fe6afaa267bc23ded949c
|