aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ctime/lib_ctime.md
blob: 913199f6a50a05e80ce5b52606ff67a2f1de5543 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@dir /lib/ctime
@brief lib/ctime: Constant-time code to avoid side-channels.

This module contains constant-time implementations of various
data comparison and table lookup functions.  We use these in preference to
memcmp() and so forth, since memcmp() can leak information about its inputs
based on how fast it returns.  In general, your code should call tor_memeq()
and tor_memneq(), not memcmp().

We also define some _non_-constant-time wrappers for memcmp() here: Since we
consider calls to memcmp() to be in error, we require that code that actually
doesn't need to be constant-time to use the fast_memeq() / fast_memneq() /
fast_memcmp() aliases instead.