summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--load-random-seed.c65
1 files changed, 0 insertions, 65 deletions
diff --git a/load-random-seed.c b/load-random-seed.c
deleted file mode 100644
index 491afba..0000000
--- a/load-random-seed.c
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <fcntl.h>
-#include <limits.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
-
-// musl forbids include/linux
-#define RNDADDENTROPY _IOW( 'R', 0x03, int [2] )
-
-#define RAND_POOL_SIZE 512
-
-int main(int argc, char *argv[]) {
- if (argc != 2) {
- fputs("usage: load-random-seed FILE\n", stderr);
- exit(1);
- }
-
- int seed_fd = open(argv[1], O_RDONLY);
- if (seed_fd == -1) {
- perror("error opening seed file");
- exit(1);
- }
- struct {
- int entropy_count;
- int buf_size;
- char buf[RAND_POOL_SIZE];
- } rpi = {
- .entropy_count = RAND_POOL_SIZE * CHAR_BIT,
- .buf_size = RAND_POOL_SIZE
- };
- size_t sz = 0;
- do {
- ssize_t r = read(seed_fd, &rpi.buf[sz], RAND_POOL_SIZE - sz);
- if (r == -1) {
- perror("error reading seed file");
- exit(1);
- }
- sz += r;
- } while (sz < RAND_POOL_SIZE);
-
- if (close(seed_fd) == -1) {
- perror("error closing seed file");
- exit(1);
- }
-
- int urandom_fd = open("/dev/urandom", O_RDWR);
- if (urandom_fd == -1) {
- perror("error opening /dev/urandom");
- exit(1);
- }
- if (ioctl(urandom_fd, RNDADDENTROPY, &rpi) == -1) {
- perror("error adding entropy");
- exit(1);
- }
- if (close(urandom_fd) == -1) {
- perror("error closing /dev/urandom");
- exit(1);
- }
-
- return 0;
-}