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_crypto_pgp Discord

Swarmauri Crypto PGP

PGPCrypto is an OpenPGP (GnuPG-backed) crypto provider that implements the ICrypto contract from swarmauri_core. It combines modern AEAD primitives with OpenPGP public-key operations so that the same component can handle symmetrical encryption, public-key key wrapping, and hybrid envelopes.

Features at a glance

  • Symmetric AEAD ? AES-256-GCM powers encrypt and decrypt.
  • Key wrapping ? wrap and unwrap delegate to GnuPG to protect random or supplied key material with a recipient's public/private key pair.
  • Hybrid envelopes ? encrypt_for_many supports both traditional KEM+AEAD (shared ciphertext + wrapped session key) and OpenPGP sealed mode for per-recipient ciphertexts.
  • Sealing convenience ? seal and unseal provide single-recipient OpenPGP public-key encryption without managing the envelope structure.

System requirements

  • Python 3.10 ? 3.13.
  • GnuPG available on the PATH (required by python-gnupg).

Key material expectations

  • encrypt / decrypt: KeyRef.material must be 16/24/32 bytes for AES-GCM.
  • wrap / encrypt_for_many: KeyRef.public must be ASCII-armored OpenPGP public key bytes.
  • unwrap / unseal: KeyRef.material must be ASCII-armored OpenPGP private key bytes. Supply a passphrase via KeyRef.tags["passphrase"] when needed.

Installation

Choose the tool that matches your workflow:

# pip
pip install swarmauri_crypto_pgp

# Poetry
poetry add swarmauri_crypto_pgp

# uv
uv add swarmauri_crypto_pgp

Quickstart

The snippet below mirrors the asynchronous usage exercised in the tests. It creates a symmetric KeyRef, encrypts plaintext, and decrypts the resulting AEADCiphertext back to bytes.

import asyncio

from swarmauri_crypto_pgp import PGPCrypto
from swarmauri_core.crypto.types import ExportPolicy, KeyRef, KeyType, KeyUse


async def main() -> None:
    crypto = PGPCrypto()

    # Symmetric key for AES-256-GCM
    sym = KeyRef(
        kid="sym1",
        version=1,
        type=KeyType.SYMMETRIC,
        uses=(KeyUse.ENCRYPT, KeyUse.DECRYPT),
        export_policy=ExportPolicy.SECRET_WHEN_ALLOWED,
        material=b"\x00" * 32,
    )

    ct = await crypto.encrypt(sym, b"hello OpenPGP")
    pt = await crypto.decrypt(sym, ct)

    print(pt)


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

Working with recipients

  • Call encrypt_for_many with recipient public keys to either produce an AES-GCM ciphertext with OpenPGP-wrapped session keys (default) or per-recipient sealed blobs by passing enc_alg="OpenPGP-SEAL".
  • Use seal / unseal for single-recipient OpenPGP public-key encryption.
  • wrap and unwrap offer direct access to OpenPGP-based key encapsulation.

Entry point

The provider is registered under the swarmauri.cryptos entry-point as PGPCrypto.

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_crypto_pgp 0.11.0.dev2

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_crypto_pgp 0.11.0.dev2
File Size Uploaded
swarmauri_crypto_pgp-0.11.0.dev2.tar.gz 9.8 kB Details

Built distribution (wheel)

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

Total release size: 20.7 kB

Release files / swarmauri_crypto_pgp-0.11.0.dev2.tar.gz

Download URL swarmauri_crypto_pgp-0.11.0.dev2.tar.gz
Size 9.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9d9052ca3eb8ee8f80911e38e6fd90650bbc1d2d35f29090214affbf36cd4994
BLAKE2b-256 checksum
How to use checksums
04175c1217bb07248b58274bcfb20ae0454ef02ff4a222577b647e0939f5dfc6
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_crypto_pgp-0.11.0.dev2-py3-none-any.whl

Download URL swarmauri_crypto_pgp-0.11.0.dev2-py3-none-any.whl
Size 10.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
57070e3ab4aa2865e43a76e2c19885a8e23cef7b5ea4e7ef2d1f6ad6f451afbe
BLAKE2b-256 checksum
How to use checksums
255dc5884ef3a1dcb6e768b9ba6686546f341213a0e5a5e21994736a1045b9b8
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