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:
15
unix/uxgen.c
15
unix/uxgen.c
@ -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;
|
||||
|
Reference in New Issue
Block a user