Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Swarmauri Logo

PyPI - Downloads Hits PyPI - Python Version PyPI - License PyPI - swarmauri_signing_ecdsa Discord

Swarmauri Signing ECDSA

An asynchronous ECDSA-based signer that implements the ISigning interface for detached signatures over raw bytes and canonicalized envelopes.

Features

  • JSON canonicalization built in, with optional CBOR canonicalization via cbor2
  • Supports the ECDSA-P256-SHA256, ECDSA-P384-SHA384, and ECDSA-P521-SHA512 curves provided by cryptography
  • Multi-signature aware verification with opt-in algorithm restrictions through the require mapping
  • Detached signature generation for both raw byte payloads and Swarmauri envelopes

Installation

pip

pip install swarmauri_signing_ecdsa
# Optional CBOR support
pip install "swarmauri_signing_ecdsa[cbor]"

Poetry

poetry add swarmauri_signing_ecdsa
# Optional CBOR support
poetry add "swarmauri_signing_ecdsa[cbor]"

uv

# Install uv if it is not already available on your system
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install the signer package
uv pip install swarmauri_signing_ecdsa
# Optional CBOR support
uv pip install "swarmauri_signing_ecdsa[cbor]"

Usage

The signer operates asynchronously and expects private keys to be supplied via the KeyRef mappings defined in swarmauri_core. When verifying, provide the corresponding public keys through the opts={"pubkeys": [...]} option.

import asyncio
from cryptography.hazmat.primitives.asymmetric import ec

from swarmauri_signing_ecdsa import EcdsaEnvelopeSigner


async def main() -> None:
    signer = EcdsaEnvelopeSigner()

    # Provide the private key as a KeyRef understood by swarmauri_core
    private_key = ec.generate_private_key(ec.SECP256R1())
    key_ref = {"kind": "cryptography_obj", "obj": private_key}

    envelope = {
        "headers": {"kid": "example"},
        "payload": {"message": "signed hello"},
    }

    signatures = await signer.sign_envelope(
        key_ref,
        envelope,
        canon="json",
    )

    is_valid = await signer.verify_envelope(
        envelope,
        signatures,
        canon="json",
        opts={"pubkeys": [private_key.public_key()]},
    )

    print(f"Signature valid? {is_valid}")


if __name__ == "__main__":
    asyncio.run(main())

Entry Point

The signer registers under the swarmauri.signings entry point as EcdsaEnvelopeSigner.

Want to help?

If you want to contribute to swarmauri-sdk, read up on our guidelines for contributing that will help you get started.

Metadata

Release files for swarmauri_signing_ecdsa 0.11.0.dev1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for swarmauri_signing_ecdsa 0.11.0.dev1
File Size Uploaded
swarmauri_signing_ecdsa-0.11.0.dev1.tar.gz 9.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for swarmauri_signing_ecdsa 0.11.0.dev1
File Interpreter ABI Platform
swarmauri_signing_ecdsa-0.11.0.dev1-py3-none-any.whl Python 3 none any Details

Total release size: 20.7 kB

Release files / swarmauri_signing_ecdsa-0.11.0.dev1.tar.gz

Download URL swarmauri_signing_ecdsa-0.11.0.dev1.tar.gz
Size 9.8 kB
Tags Source
SHA-256 checksum
How to use checksums
42739f4341dfb4477cb5f590d477a512be0731ae364eb5f4dae360fb2fe74b85
BLAKE2b-256 checksum
How to use checksums
be858bd458ff15e610126364eec637cc80d7cc8e62f7caaf8d5a8684e682be38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

Release files / swarmauri_signing_ecdsa-0.11.0.dev1-py3-none-any.whl

Download URL swarmauri_signing_ecdsa-0.11.0.dev1-py3-none-any.whl
Size 10.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
26e760311117bb4233305877004c26e7ff3b9d6623c9550ea15a095faaf1d02a
BLAKE2b-256 checksum
How to use checksums
24ae103c3ab43c403154686cb6762259575ebf4eecc941faf752acbbdd4ad139
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page