chiark / gitweb /
Add 'uml/rndaddtoentcnt/' from commit '3cef9b224336ac4147aade20738420193e525fc5'
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 7 Aug 2021 11:14:07 +0000 (12:14 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 7 Aug 2021 11:14:07 +0000 (12:14 +0100)
git-subtree-dir: uml/rndaddtoentcnt
git-subtree-mainline: 488191f4770edfd9990ab847b061e4227f79a091
git-subtree-split: 3cef9b224336ac4147aade20738420193e525fc5

1  2 
uml/rndaddtoentcnt/.gitignore
uml/rndaddtoentcnt/LICENSE
uml/rndaddtoentcnt/Makefile
uml/rndaddtoentcnt/README.md
uml/rndaddtoentcnt/rndaddtoentcnt.c

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a997b674191d4d9f766168792520ee48a6328e18
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++rndaddtoentcnt
index 0000000000000000000000000000000000000000,4479b293f77e345c16e678f778d757f5382e5af3..4479b293f77e345c16e678f778d757f5382e5af3
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,21 +1,21 @@@
+ MIT License
+ Copyright (c) 2018 Jumpnow Technologies, LLC
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7b3c88129c94604e430e3e44c33db2d2451e0c0d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,6 @@@
++rndaddtoentcnt: rndaddtoentcnt.c
++      $(CC) rndaddtoentcnt.c -o rndaddtoentcnt
++
++.PHONY: clean
++clean:
++      rm -f *.o rndaddtoentcnt
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9f85b297483d70e2c731fabb87443ac295b0539c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++### rndaddtoentcnt
++
++Seeding the random number generator by writing to /dev/urandom does not update the entropy count.
++
++This utility makes the RNDADDTOENTCNT ioctl call needed to do this.
++
++Used in startup scripts after initializing /dev/urandom with a presaved seed.
++
++Example:
++
++    dd if=/path/to/some/random-seed-file of=/dev/urandom bs=512 count=1
++
++    /path/to/rdnaddtoentcnt <entropy-bit-count>
++
++where entropy-bit-count is a number between 1 and (8 * 512) depending on how much you trust the seed file.
index 0000000000000000000000000000000000000000,929bf4d5f36d33c4862d7fe50e91d62d8718c1b6..929bf4d5f36d33c4862d7fe50e91d62d8718c1b6
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,46 +1,46 @@@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <errno.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+ #include <fcntl.h>
+ #include <linux/random.h>
+ int main(int argc, char **argv)
+ {
+     int count, fd;
+     if (argc != 2) {
+         printf("Usage: rndaddtoentcnt <entropy-bit-count>\n");
+         exit(1);
+     }
+     count = strtoul(argv[1], NULL, 0);
+     if (count < 1 || count > 4096) {
+         printf("Count range is 1 to 4096\n");
+         exit(1);
+     }
+     fd = open("/dev/urandom", O_WRONLY);
+     if (fd < 0) {
+         perror("open(/dev/urandom)");
+         exit(1);
+     }
+     if (ioctl(fd, RNDADDTOENTCNT, &count) < 0) {
+         perror("ioctl(RNDADDTOENTCNT)");
+         close(fd);
+         exit(1);
+     }
+     close(fd);
+     return 0;
+ }