NetBSD/sys/dev/marvell
tls 3afd44cf08 First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>.  This change includes
the following:

	An initial cleanup and minor reorganization of the entropy pool
	code in sys/dev/rnd.c and sys/dev/rndpool.c.  Several bugs are
	fixed.  Some effort is made to accumulate entropy more quickly at
	boot time.

	A generic interface, "rndsink", is added, for stream generators to
	request that they be re-keyed with good quality entropy from the pool
	as soon as it is available.

	The arc4random()/arc4randbytes() implementation in libkern is
	adjusted to use the rndsink interface for rekeying, which helps
	address the problem of low-quality keys at boot time.

	An implementation of the FIPS 140-2 statistical tests for random
	number generator quality is provided (libkern/rngtest.c).  This
	is based on Greg Rose's implementation from Qualcomm.

	A new random stream generator, nist_ctr_drbg, is provided.  It is
	based on an implementation of the NIST SP800-90 CTR_DRBG by
	Henric Jungheim.  This generator users AES in a modified counter
	mode to generate a backtracking-resistant random stream.

	An abstraction layer, "cprng", is provided for in-kernel consumers
	of randomness.  The arc4random/arc4randbytes API is deprecated for
	in-kernel use.  It is replaced by "cprng_strong".  The current
	cprng_fast implementation wraps the existing arc4random
	implementation.  The current cprng_strong implementation wraps the
	new CTR_DRBG implementation.  Both interfaces are rekeyed from
	the entropy pool automatically at intervals justifiable from best
	current cryptographic practice.

	In some quick tests, cprng_fast() is about the same speed as
	the old arc4randbytes(), and cprng_strong() is about 20% faster
	than rnd_extract_data().  Performance is expected to improve.

	The AES code in src/crypto/rijndael is no longer an optional
	kernel component, as it is required by cprng_strong, which is
	not an optional kernel component.

	The entropy pool output is subjected to the rngtest tests at
	startup time; if it fails, the system will reboot.  There is
	approximately a 3/10000 chance of a false positive from these
	tests.  Entropy pool _input_ from hardware random numbers is
	subjected to the rngtest tests at attach time, as well as the
	FIPS continuous-output test, to detect bad or stuck hardware
	RNGs; if any are detected, they are detached, but the system
	continues to run.

	A problem with rndctl(8) is fixed -- datastructures with
	pointers in arrays are no longer passed to userspace (this
	was not a security problem, but rather a major issue for
	compat32).  A new kernel will require a new rndctl.

	The sysctl kern.arandom() and kern.urandom() nodes are hooked
	up to the new generators, but the /dev/*random pseudodevices
	are not, yet.

	Manual pages for the new kernel interfaces are forthcoming.
2011-11-19 22:51:18 +00:00
..
com_mv.c Set mva_size in the console case. 2011-01-28 16:12:22 +00:00
ehci_mv.c Support vendor dependent functions. 2010-10-16 05:29:29 +00:00
files.discovery Add Marvell EHCI Controller wrapper. 2010-10-02 05:53:37 +00:00
gt.c Add notes for remembrance' sake. This is information obtained looking for 2010-07-20 11:42:22 +00:00
gtbrgreg.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtbrgvar.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtdevbusvar.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtethreg.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtidmac.c Cleanup foo_match(). 2010-08-01 06:57:06 +00:00
gtidmacreg.h Support big endian machines. 2010-06-08 05:15:52 +00:00
gtidmacvar.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtintrreg.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtintrvar.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtmpsc.c Rename ttymalloc() to tty_alloc(), and ttyfree() to tty_free() for 2011-04-24 16:26:51 +00:00
gtmpscreg.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtmpscvar.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtpci.c PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional 2011-05-17 17:34:47 +00:00
gtpcireg.h Erase the old definition macro that forgot to be erased. 2010-06-02 06:02:20 +00:00
gtpcivar.h Move memory protection parameters to MI part. 2010-06-02 06:44:32 +00:00
gtreg.h Fix debug messages. 2010-06-09 02:19:51 +00:00
gtsdmareg.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtsdmavar.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gttwsi.c Add timeout for wait. 2010-10-10 04:49:48 +00:00
gttwsireg.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
gtvar.h Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00
if_gfe.c Don't pull in the whole uvm(9) API to access only PAGE_SIZE and 2010-11-13 13:51:57 +00:00
if_gfevar.h First step of random number subsystem rework described in 2011-11-19 22:51:18 +00:00
if_mvgbe.c First step of random number subsystem rework described in 2011-11-19 22:51:18 +00:00
marvellreg.h Remove some attribute macros. Its specifically for Orion. 2010-07-20 12:01:33 +00:00
marvellvar.h Add MARVELL_TAG_MAX to enum marvell_tags. 2010-07-20 11:37:39 +00:00
mvgbereg.h Various improvements to mvgbe(4). Notable is improved multicast filtering. 2011-02-01 23:40:12 +00:00
mvpex.c PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional 2011-05-17 17:34:47 +00:00
mvpexreg.h Add UART and PCIe controller for Marvell SoC. 2010-07-13 11:16:02 +00:00
mvpexvar.h Neither pci_dma64_available(), pci_probe_device(), pci_mapreg_map(9), 2011-04-04 20:37:49 +00:00
mvsata_mv.c Enable product MV78100/MV78200. 2010-10-30 05:46:12 +00:00
mvsdio.c - Don't switch MMC high-speed timing, if host controller isn't supported. 2011-02-13 06:43:51 +00:00
mvsdioreg.h Add Marvell Secure Digital Input/Output (SDIO) Interface Driver. 2010-09-23 12:36:01 +00:00
obio.c Add macro MVA_{UNIT,OFFSET,IRQ}_DEFAULT. 2010-07-11 08:43:36 +00:00
pchb.c Clean up gt and peripherals. 2010-04-28 13:51:55 +00:00