aboutsummaryrefslogtreecommitdiff
path: root/examples/06-all/rand-bytes.h
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2023-10-16 17:20:36 -0400
committerPaul Duncan <pabs@pablotron.org>2023-10-16 17:20:36 -0400
commit8bce03ef55d76e84c3a15c68cceaa71800196792 (patch)
tree3645c7777c61ddedd1f118d9a84631eac183b2f2 /examples/06-all/rand-bytes.h
parent4c94118ec89c3cae982bf4a6cc8866bc68741b33 (diff)
downloadsha3-8bce03ef55d76e84c3a15c68cceaa71800196792.tar.bz2
sha3-8bce03ef55d76e84c3a15c68cceaa71800196792.zip
add examples/06-all/
Diffstat (limited to 'examples/06-all/rand-bytes.h')
-rw-r--r--examples/06-all/rand-bytes.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/examples/06-all/rand-bytes.h b/examples/06-all/rand-bytes.h
new file mode 100644
index 0000000..b9d38d4
--- /dev/null
+++ b/examples/06-all/rand-bytes.h
@@ -0,0 +1,20 @@
+#ifndef RAND_BYTES_H
+#define RAND_BYTES_H
+
+#include <stddef.h> // size_t
+#include <sys/random.h> // getrandom()
+#include <err.h> // errx()
+
+// Fill `buf` with `len` random bytes using `getrandom()`.
+//
+// Prints an error and exits with an error code if `len` random bytes
+// could not be read.
+static void rand_bytes(void * const buf, const size_t len) {
+ const ssize_t got = getrandom(buf, len, 0);
+ if (got < (ssize_t) len) {
+ // print error message, exit with error
+ errx(-1, "getrandom() failed");
+ }
+}
+
+#endif /* RAND_BYTES_H */