Skip to main content

High-trust OpenPGP keyserver APIs built on the Tigrbl application engine.

Project description

Tigrbl Logo

PyPI - Downloads Hits PyPI - Python Version PyPI - License PyPI - tigrbl_api_hpks


Tigrbl API HPKS 🔐

High-trust OpenPGP keyserver APIs that embrace the HPKS v2 specification while preserving legacy HKP compatibility, powered by the Tigrbl application engine.

✨ Features

  • 🔄 Dual-protocol support – serves both legacy /pks/lookup flows and HPKS v2 JSON/binary routes with consistent persistence.
  • 🧩 Merge-aware storage – idempotent upserts normalize fingerprints, union metadata, and track revocation state without losing history.
  • 📦 Single source of truth – admin CRUD and public HPKS endpoints share the same openpgp_keys table and Tigrbl handlers.
  • 🛡️ Spec-aligned responses – machine-readable index output, binary bundle delivery, and required CORS headers baked in.
  • ⚙️ Composable operations@op_ctx powered helpers expose reusable alias handlers for /pks workflows.

📦 Installation

Using uv

uv add tigrbl_api_hpks

Using pip

pip install tigrbl_api_hpks

🚀 Quick Start

import asyncio
from httpx import ASGITransport, AsyncClient

from tigrbl_api_hpks import app


async def bootstrap():
    await app.initialize()  # create in-memory tables

    # Submit an ASCII-armored key bundle via the legacy endpoint
    armored_blob = """-----BEGIN PGP PUBLIC KEY BLOCK-----\n...\n-----END PGP PUBLIC KEY BLOCK-----"""
    async with AsyncClient(transport=ASGITransport(app=app), base_url="http://testserver") as client:
        resp = await client.post(
            "/pks/add",
            data={"keytext": armored_blob},
            headers={"Content-Type": "application/x-www-form-urlencoded"},
        )
        resp.raise_for_status()

        # Lookup via HPKS v2 JSON index
        lookup = await client.get("/pks/v2/index/example.com")
        print(lookup.json())


asyncio.run(bootstrap())

🧪 Testing

Run the package test suite in isolation:

uv run --package tigrbl_api_hpks --directory pkgs/community/tigrbl_api_hpks pytest

📄 License

This project is licensed under the terms of the Apache 2.0 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tigrbl_api_hpks-0.1.2.dev14.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tigrbl_api_hpks-0.1.2.dev14-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file tigrbl_api_hpks-0.1.2.dev14.tar.gz.

File metadata

  • Download URL: tigrbl_api_hpks-0.1.2.dev14.tar.gz
  • Upload date:
  • Size: 20.9 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

Hashes for tigrbl_api_hpks-0.1.2.dev14.tar.gz
Algorithm Hash digest
SHA256 e88193fd258f3333be18735e75d979f67abbd93861a0079232a8ff62f5e3b978
MD5 84469b794bb41754c026c62ea2f2d9af
BLAKE2b-256 7a26ff570ecf167cb1a7beca8963074a7fd714ce06fddc3edc5a63d2ac595795

See more details on using hashes here.

File details

Details for the file tigrbl_api_hpks-0.1.2.dev14-py3-none-any.whl.

File metadata

  • Download URL: tigrbl_api_hpks-0.1.2.dev14-py3-none-any.whl
  • Upload date:
  • Size: 21.4 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

Hashes for tigrbl_api_hpks-0.1.2.dev14-py3-none-any.whl
Algorithm Hash digest
SHA256 4af457277b8006e488987e5ee107c88f7b2e792dd705c252e0fb90ea2bd48dd1
MD5 9f63c4a912080f57adb3760cb589404f
BLAKE2b-256 767d796716381a8ccd984c535dcf48e8d8fa30cc7c70d3030525760b157d886e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page