An operating function (Prototype)
Go to file
2018-12-27 18:43:23 -08:00
include/ent Don't install headers 2018-12-27 16:50:27 -08:00
.gitignore blargh fighting with meson 2018-12-27 10:27:28 -08:00
ent.c Succeed on 0-length calls 2018-12-27 18:38:54 -08:00
LICENSE Cleanup, MIT license 2018-12-27 11:43:48 -08:00
meson.build Remove pkg_mod stuff 2018-12-27 12:31:36 -08:00
README.md Expand README 2018-12-27 12:20:51 -08:00
sample.c Exit on failure in sample 2018-12-27 18:43:23 -08:00

libent is a cross-platform wrapper around getentropy(2). It exports one symbol, ent_getentropy, which expands to getentropy if the latter is available. Otherwise, it tries to use the next best source of entropy — /dev/urandom on *nix.

Why?

getentropy is the wave of the future. It's the correct API for generating small amounts of entropy to create cryptographic keys or seed PRNGs. It's good and reasonable and true, it's on Linux, *BSD, and OS X, and it only took us fifty years of UNIX to get here.

Sadly, it only just arrived, so nobody has it yet. It didn't land in Linux until glibc 2.25, which seems to only have made it into Debian 10.

Once getentropy is everywhere you care about, you can just do a s/ent_//g on all the call sites and discard this shim.

Admittedly, 90% of the motivation behind this was to fix the randomness shim in Urbit.

References: