cargo: Add geoip db tool to top level workspace
[tor.git] / src / ext / ext.md
blob1eaaab605b9310b3b4cb6720fefacd6610fa7710
1 @dir /ext
2 @brief Externally maintained code
4 The "ext" directory holds code that was written elsewhere, and is not
5 reliably packaged as a library where we want to build, so we ship
6 it along with Tor.
8 In general, you should not edit this code: we are not the maintainers.
9 Instead, you should submit patches upstream.
11 OpenBSD_malloc_Linux.c:
13 > The OpenBSD malloc implementation, ported to Linux.  Used only when
14 > --enable-openbsd-malloc is passed to the configure script.
16 strlcat.c
17 strlcpy.c
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.
23 ht.h
25 > An implementation of a hash table in the style of Niels Provos's
26 > tree.h.  Shared with Libevent.
28 tinytest.c tinytest.h
29 tinytest_demos.c
30 tinytest_macros.h
32 > A unit testing framework. https://github.com/nmathewson/tinytest
34 tor_queue.h
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.
43 curve25519_donna/*.c
45 > A copy of Adam Langley's curve25519-donna mostly-portable
46 > implementations of curve25519.
48 csiphash.c
49 siphash.h
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.
55 trunnel/*.[ch]
57 > Headers and runtime code for Trunnel, a system for generating
58 > code to encode and decode binary formats.
60 ed25519/ref10/*
62 > Daniel Bernsten's portable ref10 implementation of ed25519.
63 > Public domain.
65 ed25519/donna/*
67 > Andrew Moon's semi-portable ed25519-donna implementation of
68 > ed25519. Public domain.
70 keccak-tiny/
72 > David Leon Gil's portable Keccak implementation. CC0.
74 readpassphrase.[ch]
76 > Portable readpassphrase implementation from OpenSSH portable, version
77 > 6.8p1.
79 timeouts/
81 > William Ahern's hierarchical timer-wheel implementation. MIT license.
83 mulodi/
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.