GENERAL
- Update copyright.
- Fix comments.
- Improve module usage; dependancies in particular are useful, and use the crypto module rather than duplicating code.
- Use macros for all locks.
- Make kernel options for RANDOM_YARROW and RANDOM_DUMMY. If neither are supplied, then the default is Fortuna.
- Move stuff out of locked regions when it does not need to be there.
- Trim RANDOM_DEBUG printfs. Some are excess to requirement, some behind boot verbose.
- Fix the nasty pre- and post-read overloading by providing explictit functions to do these tasks.
- Redo read_random so as to duplicate random(4)'s read internals. This makes it a first-class citizen rather than a hack.
- Use SYSINIT to sequence the startup.
- Fix init/deinit sysctl stuff.
- Add different harvesting "styles" to allow for different requirements (direct, queue, fast).
- Add harvesting of FFS atime events. This needs to be checked for weighing down the FS code.
- Fix the random(9) manpage. In its current state there is information rot and some hard-to fathom statements.
- Make relevant sysctls also tunables.
- Add basic logic to complain if the random(4) algorithm intent is not clear.
- Repair kern.arandom. The old version went through arc4random(9) and was a bit weird.
- Adjust arc4random stirring a bit - the current code looks a little suspect.
- Use explicit_bzero() instead of bzero() or equivalent memset().
src/UPDATING
- Add precursor UPDATING doom-and-gloom announcement.
src/sys/dev/random/build.sh
- Add libz for unit tests.
src/sys/dev/random/dummy.c
- Remove; no longer needed.
src/sys/dev/random/fortuna.c src/sys/dev/random/fortuna.h
- Improve messy union to just uint128_t.
- Remove unneeded 'static struct fortuna_start_cache'.
- Tighten up up arithmetic.
- Provide a method to allow eternal junk to be introduced; harden it against blatant by compress/hashing.
- Assert that locks are held correctly.
- Fix the nasty pre- and post-read overloading by providing explictit functions to do these tasks.
- Turn into self-sufficient module (no longer requires randomdev_soft.[ch])
live_entropy_sources.c live_entropy_sources.h
- Remove; content moved.
src/sys/dev/random/random_adaptors.c src/sys/dev/random/random_adaptors.h
- Remove; no longer needed.
src/sys/dev/random/random_harvestq.c src/sys/dev/random/random_harvestq.h
- Refactor to allow harvestq to be initialised twice, so we need to properly stop the kernel thread at deinit time. This is so we can later mess with pointers that would otherwise be changed under our feet.
- Add early (re)boot-time randomness caching.
src/sys/dev/random/randomdev_soft.c src/sys/dev/random/randomdev_soft.h
- Remove; no longer needed.
src/sys/dev/random/uint128.h
- Provide a fake uint128_t; if a real one ever arrived, we can use that instead. All that is needed here is N=0, N++, N==0, and some localised trickery is used to manufacture a 128-bit 0ULLL.
src/sys/dev/random/unit_test.c src/sys/dev/random/unit_test.h
- Improve unit tests; previously the testing human needed clairvoyance; now the test will do a basic check of compressibility. Clairvoyant talent is still a good idea.
- This is still a long way off a proper unit test.
src/sys/dev/random/yarrow.c src/sys/dev/random/yarrow.h
- Improve messy union to just uint128_t.
- Remove unneeded 'start_cache'.
- Fix some magic numbers elsewhere used as FAST and SLOW.
- Provide a method to allow eternal junk to be introduced; harden it against blatant by compress/hashing.
- Assert that locks are held correctly.
- Fix the nasty pre- and post-read overloading by providing explictit functions to do these tasks.
- Turn into self-sufficient module (no longer requires randomdev_soft.[ch])