1@dir /ext
2@brief Externally maintained code
3
4The "ext" directory holds code that was written elsewhere, and is not
5reliably packaged as a library where we want to build, so we ship
6it along with Tor.
7
8In general, you should not edit this code: we are not the maintainers.
9Instead, you should submit patches upstream.
10
11OpenBSD_malloc_Linux.c:
12
13> The OpenBSD malloc implementation, ported to Linux.  Used only when
14> --enable-openbsd-malloc is passed to the configure script.
15
16strlcat.c
17strlcpy.c
18
19> Implementations of strlcat and strlcpy, the more sane replacements
20> for strcat and strcpy.  These are nonstandard, and some libc
21> implementations refuse to add them for religious reasons.
22
23ht.h
24
25> An implementation of a hash table in the style of Niels Provos's
26> tree.h.  Shared with Libevent.
27
28tinytest.c tinytest.h
29tinytest_demos.c
30tinytest_macros.h
31
32> A unit testing framework. https://github.com/nmathewson/tinytest
33
34tor_queue.h
35
36> A copy of sys/queue.h from OpenBSD.  We keep our own copy rather
37> than using sys/queue.h, since some platforms don't have a
38> sys/queue.h, and the ones that do have diverged in incompatible
39> ways.  (CIRCLEQ or no CIRCLEQ? SIMPLQ or STAILQ?)  We also rename
40> the identifiers with a TOR_ prefix to avoid conflicts with
41> the system headers.
42
43curve25519_donna/*.c
44
45> A copy of Adam Langley's curve25519-donna mostly-portable
46> implementations of curve25519.
47
48csiphash.c
49siphash.h
50
51> Marek Majkowski's implementation of siphash 2-4, a secure keyed
52> hash algorithm to avoid collision-based DoS attacks against hash
53> tables.
54
55trunnel/*.[ch]
56
57> Headers and runtime code for Trunnel, a system for generating
58> code to encode and decode binary formats.
59
60ed25519/ref10/*
61
62> Daniel Bernsten's portable ref10 implementation of ed25519.
63> Public domain.
64
65ed25519/donna/*
66
67> Andrew Moon's semi-portable ed25519-donna implementation of
68> ed25519. Public domain.
69
70keccak-tiny/
71
72> David Leon Gil's portable Keccak implementation. CC0.
73
74readpassphrase.[ch]
75
76> Portable readpassphrase implementation from OpenSSH portable, version
77> 6.8p1.
78
79timeouts/
80
81> William Ahern's hierarchical timer-wheel implementation. MIT license.
82
83mulodi/
84
85> Contains an overflow-checking 64-bit signed integer multiply
86> from LLVM's compiler_rt.  For some reason, this is missing from
87> 32-bit libclang in many places. Dual licensed MIT-license and
88> BSD-like license; see mulodi/LICENSE.TXT.
89