#mixnet #sphinx #katzenpost

katzenpost_thin_client

This rust crate provides an async thin client library for Katzenpost, a post quantum decryption mixnet

4 releases

Uses new Rust 2024

new 0.0.4 Mar 27, 2025
0.0.3 Mar 27, 2025
0.0.2 Mar 27, 2025
0.0.1 Mar 26, 2025

#1 in #mixnet

AGPL-3.0-only

38KB
686 lines

thin client library for Katzenpost client daemon

A thin client library is designed to talk to the katzenpost mixnet client daemon. It's kind of like a dumb terminal, it doesn't know how to do much besides message passing. All the hard work is done by the client daemon.

Here's our thin client integration guide: https://github.com/katzenpost/website/blob/main/content/en/docs/client_integration.md

Here's the client2 daemon source code: https://github.com/katzenpost/katzenpost/tree/main/client2

That directory has a Makefile which will give you two ways to build the daemon:

  1. Makefile target "warpedclientdaemon": build binary for use with docker test mixnet.
  2. Makefile target "clientdaemon": build binary for production mixnet.

We recommend that you look over the client2.toml configuration file generated by our dockerized test mixnet. Using that configuration file you can either make the daemon listen for thin client connections on a TCP/IP socket or you can specify a UNIX domain socket.

Compatibility

This git repo contains two implementations of the thin client for katzenpost mixnet. One of them is written in Python and the other is written in Rust. Both use async io.

Works with Katzenpost v0.0.40 or later.

Rust

thin client library for Rust

This thin client has full feature parity with the golang reference thin client.

compile rust crate as usual

cargo build

Python

thin client library for Python

Currently the python implementation only supports using UNIX domain sockets.

install

pip instal -e .

License

AGPLv3

Dependencies

~4–12MB
~125K SLoC