NAME¶
random_harvest
—
gather entropy from the kernel for the entropy
device
SYNOPSIS¶
#include
<sys/types.h>
#include
<sys/random.h>
void
random_harvest
(
void
*entropy,
u_int size,
u_int bits,
u_int
frac,
enum esource source);
DESCRIPTION¶
The
random_harvest
() function is used by
device drivers and other kernel processes to pass data that is considered (at
least partially) stochastic to the entropy device.
The caller should pass a pointer (to no more than 16 bytes) of the
“random” data in
entropy. The
argument
size contains the number of bytes
pointed to. The caller should
very conservatively
estimate the number of random bits in the sample, and pass this in
bits or
frac. If the estimated number of bits per
sample is an integer, then
bits is used, and
frac is 0. Otherwise, for low-entropy
samples, “fractional” entropy can be supplied in
frac. (This is considered to be
frac / 1024 bits of entropy.) The
source is chosen from
RANDOM_WRITE
,
RANDOM_KEYBOARD
,
RANDOM_MOUSE
,
RANDOM_NET
and
RANDOM_INTERRUPT
, and is used to indicate
the source of the entropy.
Interrupt harvesting has been simplified for the kernel programmer. If a device
driver registers an interrupt handler with
BUS_SETUP_INTR(9) or
bus_setup_intr(9), then it is only necessary to
include the
INTR_ENTROPY
bit in the
flags argument to have that interrupt source
be used for entropy harvesting.
SEE ALSO¶
random(4),
BUS_SETUP_INTR(9)
AUTHORS¶
The
FreeBSD random(4)
entropy device and supporting documentation was written by
Mark R V Murray.