From 9022ce6954f78b8a33122b27400706e82e388459 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Wed, 6 May 2020 12:20:49 -0400 Subject: re-add command krng-add-entropy --- src/krng-add-entropy.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/krng-add-entropy.c (limited to 'src/krng-add-entropy.c') diff --git a/src/krng-add-entropy.c b/src/krng-add-entropy.c new file mode 100644 index 0000000..fc81d29 --- /dev/null +++ b/src/krng-add-entropy.c @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +char *program_name; +void usage() +{ + error(1, 0, "usage: %s [--bytes] ", program_name); +} + +int main(int argc, char **argv) +{ + argc--, program_name = *argv++; + int multiplier = 1; + int bits; + while (argc > 1) { + if (!strcmp(*argv, "--bytes")) { + multiplier = 8; + } else { + usage(); + } + argc--, argv++; + } + if ((argc != 1) || (bits = multiplier * atoi(*argv)) <= 0) + usage(); + + struct rand_pool_info *output; + int fd = open("/dev/random", O_WRONLY); + if (fd < 0) + error(1, errno, "opening /dev/random"); + + output = (struct rand_pool_info *) malloc(sizeof(struct rand_pool_info)); + output -> entropy_count = bits; + output -> buf_size = 0; + + int r = ioctl(fd, RNDADDENTROPY, output); + if (r < 0) + error(1, errno, "ioctl(RNDADDENTROPY)"); + + return 0; +} -- cgit v1.2.3