Decouple yarrow from random(4) device.
authorobrien <obrien@FreeBSD.org>
Mon, 29 Jul 2013 20:26:27 +0000 (20:26 +0000)
committerobrien <obrien@FreeBSD.org>
Mon, 29 Jul 2013 20:26:27 +0000 (20:26 +0000)
commit721ce839c7c49ecca90b66a4523be0e6e29c057e
tree7321ee5c53e41f64a4e3a37d1e501321672bb5af
parentf6b004c36a12554e599bc79d3f4efc2047574d1b
Decouple yarrow from random(4) device.

* Make Yarrow an optional kernel component -- enabled by "YARROW_RNG" option.
  The files sha2.c, hash.c, randomdev_soft.c and yarrow.c comprise yarrow.

* random(4) device doesn't really depend on rijndael-*.  Yarrow, however, does.

* Add random_adaptors.[ch] which is basically a store of random_adaptor's.
  random_adaptor is basically an adapter that plugs in to random(4).
  random_adaptor can only be plugged in to random(4) very early in bootup.
  Unplugging random_adaptor from random(4) is not supported, and is probably a
  bad idea anyway, due to potential loss of entropy pools.
  We currently have 3 random_adaptors:
  + yarrow
  + rdrand (ivy.c)
  + nehemeiah

* Remove platform dependent logic from probe.c, and move it into
  corresponding registration routines of each random_adaptor provider.
  probe.c doesn't do anything other than picking a specific random_adaptor
  from a list of registered ones.

* If the kernel doesn't have any random_adaptor adapters present then the
  creation of /dev/random is postponed until next random_adaptor is kldload'ed.

* Fix randomdev_soft.c to refer to its own random_adaptor, instead of a
  system wide one.

Submitted by: arthurmesh@gmail.com, obrien
Obtained from: Juniper Networks
Reviewed by: obrien
81 files changed:
UPDATING
share/man/man4/random.4
sys/amd64/conf/GENERIC
sys/arm/conf/AC100
sys/arm/conf/ARMADAXP
sys/arm/conf/ARNDALE
sys/arm/conf/ATMEL
sys/arm/conf/AVILA
sys/arm/conf/BEAGLEBONE
sys/arm/conf/BWCT
sys/arm/conf/CAMBRIA
sys/arm/conf/CNS11XXNAS
sys/arm/conf/CRB
sys/arm/conf/CUBIEBOARD
sys/arm/conf/DB-78XXX
sys/arm/conf/DB-88F5XXX
sys/arm/conf/DB-88F6XXX
sys/arm/conf/DOCKSTAR
sys/arm/conf/DREAMPLUG-1001
sys/arm/conf/EA3250
sys/arm/conf/EB9200
sys/arm/conf/EFIKA_MX
sys/arm/conf/EP80219
sys/arm/conf/ETHERNUT5
sys/arm/conf/GUMSTIX
sys/arm/conf/HL200
sys/arm/conf/HL201
sys/arm/conf/IQ31244
sys/arm/conf/KB920X
sys/arm/conf/LN2410SBC
sys/arm/conf/NSLU
sys/arm/conf/PANDABOARD
sys/arm/conf/QILA9G20
sys/arm/conf/RPI-B
sys/arm/conf/SAM9260EK
sys/arm/conf/SAM9G20EK
sys/arm/conf/SAM9X25EK
sys/arm/conf/SHEEVAPLUG
sys/arm/conf/SN9G45
sys/arm/conf/TS7800
sys/arm/conf/VERSATILEPB
sys/arm/conf/ZEDBOARD
sys/conf/NOTES
sys/conf/files
sys/conf/options
sys/dev/random/ivy.c
sys/dev/random/nehemiah.c
sys/dev/random/probe.c
sys/dev/random/randomdev.c
sys/dev/random/randomdev.h
sys/dev/random/randomdev_soft.c
sys/dev/random/randomdev_soft.h
sys/dev/random/yarrow.c
sys/i386/conf/GENERIC
sys/i386/conf/XBOX
sys/i386/conf/XEN
sys/ia64/conf/GENERIC
sys/mips/conf/AR71XX_BASE
sys/mips/conf/AR724X_BASE
sys/mips/conf/AR91XX_BASE
sys/mips/conf/AR933X_BASE
sys/mips/conf/BERI_TEMPLATE
sys/mips/conf/DIR-825
sys/mips/conf/GXEMUL
sys/mips/conf/OCTEON1
sys/mips/conf/PB92
sys/mips/conf/RT305X
sys/mips/conf/XLR64
sys/mips/conf/XLRN32
sys/mips/conf/std.SWARM
sys/mips/conf/std.XLP
sys/modules/Makefile
sys/modules/random/Makefile
sys/pc98/conf/GENERIC
sys/powerpc/conf/GENERIC
sys/powerpc/conf/GENERIC64
sys/powerpc/conf/MPC85XX
sys/powerpc/conf/WII
sys/sparc64/conf/GENERIC
tools/tools/sysdoc/sysdoc.sh
tools/tools/sysdoc/tunables.mdoc