Skip to main content

A thinclient for the Katzenpost client daemon

Project description

katzenpost_thinclient

A thin client for sending and receiving messages via the Katzenpost mix network.

This PyPI package provides an async Python thin client library for interacting with a Katzenpost mixnet.

A mix network is a type of anonymous communications network. A thin client library is code you may use as a dependency in your application so that it can anonymously interact with services on the mix network. The Katzenpost client daemon (kpclientd) is a multiplexing client; many applications on the same device may use their thin client libraries to connect to the daemon and interact with mixnet services concurrently. All cryptographic operations, including PQ Noise transport, Sphinx packet construction, and ARQ retransmission, are performed by the daemon, not by this library.

Pigeonhole, in brief

Beyond simple request-response services, Katzenpost provides a storage layer called Pigeonhole. Applications communicate through encrypted, append-only streams composed of fixed-size, padded Boxes, sharded across storage replicas via consistent hashing. Access is governed by cryptographic capabilities: a write capability appends messages or places tombstones, whilst a separate read capability decrypts and verifies without conferring any ability to write. Streams are single-writer, multi-reader, and unlinkable to outside observers. Storage is ephemeral: Boxes are garbage-collected after roughly two weeks, so Pigeonhole is not intended for long-term archival storage. For a developer-oriented introduction, see Understanding Pigeonhole.

Documentation

Installation

Install from PyPI:

pip install katzenpost_thinclient

Or, from a checkout of this repository:

pip install -e .

Compatibility

This package is intended to be used with the version of kpclientd listed in Build from source. That page is the canonical record of currently pinned tags for the whole stack; please consult it before pinning a version of your own.

Running the tests

The tests/ directory contains the integration suite, which doubles as a working reference for the API. The tests expect a running Katzenpost mixnet; the most convenient way to obtain one is the docker test mixnet shipped with the Katzenpost monorepo. Full instructions are in Docker test network; the short form is:

cd katzenpost/docker
make start wait run-ping

The mixnet runs kpclientd inside a container exposed on 127.0.0.1:64331, and writes a thin client configuration to voting_mixnet/client/thinclient.toml. The test suite locates a preconfigured fixture at testdata/thinclient.toml, which dials the daemon on that port:

pytest

Applications using this library

Two larger programs that use this library:

  1. stats, a terminal application that prints the current mixnet status.
  2. worldmap, which renders an image of the mixnet transposed over a world map.

Contributions

This is a work in progress, and we welcome feedback from developers who try to use it. Pull requests are welcome at https://github.com/katzenpost/thin_client.

License

AGPLv3.

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

katzenpost_thinclient-0.0.18.tar.gz (175.0 kB view details)

Uploaded Source

Built Distribution

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

katzenpost_thinclient-0.0.18-py3-none-any.whl (75.6 kB view details)

Uploaded Python 3

File details

Details for the file katzenpost_thinclient-0.0.18.tar.gz.

File metadata

  • Download URL: katzenpost_thinclient-0.0.18.tar.gz
  • Upload date:
  • Size: 175.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for katzenpost_thinclient-0.0.18.tar.gz
Algorithm Hash digest
SHA256 a9779ad569c3108b0ac9b18774055d10c93532bff33fb36460c76f5c1956253b
MD5 6864adf0ebd4d69f43bdf4640b61ef88
BLAKE2b-256 8bde3aa0b3a7608182a4127f42e87b0e47f0366776cd66c072c40c9848b7f2d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for katzenpost_thinclient-0.0.18.tar.gz:

Publisher: publish-py.yml on katzenpost/thin_client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file katzenpost_thinclient-0.0.18-py3-none-any.whl.

File metadata

File hashes

Hashes for katzenpost_thinclient-0.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 f2a57f0fcd1ead2ed705c03f7d3a56b01dca232b5d27c0df6c22fbe376dd4b91
MD5 ac77774cac7e7c3fa5e5c21b8e3d5935
BLAKE2b-256 fe758965ebcba0b2af1716620d4f52202efc3bfa7db566fcd6dd79d39e35c734

See more details on using hashes here.

Provenance

The following attestation bundles were made for katzenpost_thinclient-0.0.18-py3-none-any.whl:

Publisher: publish-py.yml on katzenpost/thin_client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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