1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-06-30 19:12:48 -05:00

cmdgen: option to specify the random number device to use.

E.g. you might pass '--random-device=/dev/urandom'.

Mostly because I got sick of waiting for /dev/random to finish
blocking while I was trying to generate throwaway keys for testing bug
fixes in cmdgen itself. But it might also be useful on systems that
call their random device by a different name that we haven't
encountered.

(Since cmdgen also reads the saved PuTTY random seed file, setting
this option to /dev/zero will not render key generation deterministic.
It's tempting to provide _some_ way to do that, for testing purposes
and clearly marked as dangerous of course, but I think it would take
more faff than this.)
This commit is contained in:
Simon Tatham
2016-03-30 08:17:03 +01:00
parent ad87950539
commit 435b29da88
3 changed files with 27 additions and 7 deletions

View File

@ -3,21 +3,27 @@
*/
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#include "putty.h"
char *get_random_data(int len)
char *get_random_data(int len, const char *device)
{
char *buf = snewn(len, char);
int fd;
int ngot, ret;
fd = open("/dev/random", O_RDONLY);
if (!device)
device = "/dev/random";
fd = open(device, O_RDONLY);
if (fd < 0) {
sfree(buf);
perror("puttygen: unable to open /dev/random");
fprintf(stderr, "puttygen: %s: open: %s\n",
device, strerror(errno));
return NULL;
}
@ -27,7 +33,8 @@ char *get_random_data(int len)
if (ret < 0) {
close(fd);
sfree(buf);
perror("puttygen: unable to read /dev/random");
fprintf(stderr, "puttygen: %s: read: %s\n",
device, strerror(errno));
return NULL;
}
ngot += ret;