Added a command-line key generation tool. Currently builds and runs
[u/mdw/putty] / unix / uxgen.c
diff --git a/unix/uxgen.c b/unix/uxgen.c
new file mode 100644 (file)
index 0000000..6c57917
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * uxgen.c: Unix implementation of get_heavy_noise() from cmdgen.c.
+ */
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "putty.h"
+
+char *get_random_data(int len)
+{
+    char *buf = snewn(len, char);
+    int fd;
+    int ngot, ret;
+
+    fd = open("/dev/random", O_RDONLY);
+    if (fd < 0) {
+       sfree(buf);
+       perror("puttygen: unable to open /dev/random");
+       return NULL;
+    }
+
+    ngot = 0;
+    while (ngot < len) {
+       ret = read(fd, buf+ngot, len-ngot);
+       if (ret < 0) {
+           close(fd);
+           perror("puttygen: unable to read /dev/random");
+           return NULL;
+       }
+       ngot += ret;
+    }
+
+    return buf;
+}