Skip to content
A C Tor Pluggable Transports Utility Library
Find file
Latest commit 5272de7 Yawning Angel Build liballium with -Wextra, and remove a redundant -O2.
No functional changes, just have the compiler be somewhat more pedantic.


liballium: A C Tor Pluggable Transports Utility Library
Yawning Angel <yawning at schwanenlied dot me>

liballium attempts to reduce the amount of boilerplate code required to
implement pluggable transports for Tor in C or C++.

 * Handles the runtime configuration of PT clients and servers
 * (TODO) Routines for talking to the transport control port
 * (TODO) Routines for talking to the extended OR port (including a traffic shaper)

liballium embeds the following third party codebases:
 * Better String Library (safer string manipulation routines)
 * sput (unit test framework, included in tests only)

Specs implemented:
 * (TODO)

 * Basic familiarity with the relevant Tor specs is assumed.
 * The code should work on Windows, however it is untested on that platform
   and most likely requires changes.  Patches accepted.
 * The Tor Pluggable Transport spec does not currently specify the format for
   IPv6 addresses.  liballium assumes that the standard [addr]:port form is to
   be used.

Known gotchas:
 * allium_ptcfg_state_dir()/allium_ptcfg_auth_cookie_file() will probably
   misbehave if the paths are non-ASCII.  This behavior is not considered a bug
   as environment variable values are NULL terminated by definition (See IEEE
   Std. 1003.1 8.1).
 * liballium is slightly more strict than pt-spec.txt for the contents of
   PTCFG_SERVER_TRANSPORT_OPTIONS.  In particular, the "k" string is not
   unescaped when doing processing, so things like "foo:arg\=bleah=123" will
   cause a ENV-ERROR to be returned to Tor (As of the date of writing this
   library, that functionality is still rather experimental in Tor anyway).
 * tests/ptcfg_test.c depends on inet_pton so it won't run on ancient systems.
   A notable one would be WinXP.  This probably won't be fixed.

See the COPYING file for licence related information.

Something went wrong with that request. Please try again.