random numbers.
log.o log2.o md5.o md5hex.o mmap.o pagecache.o patimatch.o patmatch.o pool.o \
prime.o random.o realloc.o regex.o timer.o url.o wildmatch.o \
wordsplit.o str_ctype.o str_upper.o bucket.o conf.o object.o sorter.o \
- finger.o proctitle.o ipaccess.o profile.o bitsig.o
+ finger.o proctitle.o ipaccess.o profile.o bitsig.o randomkey.o
obj/lib/libsh.a: $(addprefix obj/lib/,$(SHLIB_OBJS))
void setproctitle_init(int argc, char **argv);
void setproctitle(char *msg, ...) __attribute__((format(printf,1,2)));
+/* randomkey.c */
+
+void randomkey(byte *buf, uns size);
+
#endif
--- /dev/null
+/*
+ * Sherlock Library -- Cryptographically Safe Random Key Generator
+ *
+ * (c) 2002 Martin Mares <mj@ucw.cz>
+ */
+
+#include "lib/lib.h"
+
+#include <fcntl.h>
+#include <unistd.h>
+
+void
+randomkey(byte *buf, uns size)
+{
+ int fd;
+
+ if ((fd = open("/dev/urandom", O_RDONLY, 0)) < 0)
+ die("Unable to open /dev/urandom: %m");
+ if (read(fd, buf, size) != (int) size)
+ die("Error reading /dev/urandom: %m");
+ close(fd);
+}