| #include <assert.h> |
| #include <stdint.h> |
| #include <sys/ioctl.h> |
| #include <stdio.h> |
| #include <unistd.h> |
| #include <fcntl.h> |
| #include <linux/random.h> |
| |
| #define N 2048 |
| |
| struct entropy { |
| int ent_count; |
| int size; |
| unsigned char data[N]; |
| }; |
| |
| int main() { |
| struct entropy buf; |
| ssize_t n; |
| |
| int random_fd = open("/dev/random", O_RDWR); |
| assert(random_fd >= 0); |
| |
| while ((n = read(0, &buf.data, N)) > 0) { |
| buf.ent_count = n * 8; |
| buf.size = n; |
| if (ioctl(random_fd, RNDADDENTROPY, &buf) != 0) { |
| perror("failed to add entropy"); |
| } |
| } |
| |
| return 0; |
| } |