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