summaryrefslogtreecommitdiff
path: root/src/libsodium/randombytes/randombytes.c
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2014-08-11 13:49:21 -0400
committerMicah Anderson <micah@riseup.net>2014-08-11 13:49:21 -0400
commit2e59f9740a29439df7c7a56cf0ae83dec3081d31 (patch)
treed5e7c4e74c9a0f1ea999327d2e68b1dd27be00e0 /src/libsodium/randombytes/randombytes.c
initial import of debian version from mentors0.6.1
Diffstat (limited to 'src/libsodium/randombytes/randombytes.c')
-rw-r--r--src/libsodium/randombytes/randombytes.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/libsodium/randombytes/randombytes.c b/src/libsodium/randombytes/randombytes.c
new file mode 100644
index 0000000..07e2341
--- /dev/null
+++ b/src/libsodium/randombytes/randombytes.c
@@ -0,0 +1,65 @@
+
+#include <sys/types.h>
+
+#include <assert.h>
+#include <limits.h>
+#include <stdint.h>
+
+#include "randombytes.h"
+#include "randombytes_sysrandom.h"
+
+static const randombytes_implementation *implementation =
+ &randombytes_sysrandom_implementation;
+
+int
+randombytes_set_implementation(randombytes_implementation *impl)
+{
+ implementation = impl;
+
+ return 0;
+}
+
+const char *
+randombytes_implementation_name(void)
+{
+ return implementation->implementation_name();
+}
+
+uint32_t
+randombytes_random(void)
+{
+ return implementation->random();
+}
+
+void
+randombytes_stir(void)
+{
+ implementation->stir();
+}
+
+uint32_t
+randombytes_uniform(const uint32_t upper_bound)
+{
+ return implementation->uniform(upper_bound);
+}
+
+void
+randombytes_buf(void * const buf, const size_t size)
+{
+ if (size > (size_t) 0U) {
+ implementation->buf(buf, size);
+ }
+}
+
+int
+randombytes_close(void)
+{
+ return implementation->close();
+}
+
+void
+randombytes(unsigned char * const buf, const unsigned long long buf_len)
+{
+ assert(buf_len <= SIZE_MAX);
+ randombytes_buf(buf, (size_t) buf_len);
+}