68 #include <openssl/rand.h>
85 const char *myname =
"tls_prng_file_open";
89 if ((fd = open(name, O_RDONLY, 0)) < 0) {
91 msg_info(
"%s: cannot open entropy file %s: %m", myname, name);
99 msg_info(
"%s: opened entropy file %s", myname, name);
108 const char *myname =
"tls_prng_file_read";
114 msg_info(
"%s: seed internal pool from file %s", myname, fh->
name);
116 if (lseek(fh->
fd, 0, SEEK_SET) < 0) {
122 for (to_read = len; to_read > 0; to_read -= count) {
123 if ((count =
timed_read(fh->
fd, buffer, to_read >
sizeof(buffer) ?
124 sizeof(buffer) : to_read,
125 fh->
timeout, (
void *) 0)) < 0) {
132 RAND_seed(buffer, count);
135 msg_info(
"read %ld bytes from entropy file %s: %m",
136 (
long) (len - to_read), fh->
name);
137 return (len - to_read);
144 const char *myname =
"tls_prng_file_close";
148 msg_info(
"%s: close entropy file %s", myname, fh->
name);
TLS_PRNG_SRC * tls_prng_file_open(const char *, int)
char * mystrdup(const char *str)
int tls_prng_file_close(TLS_PRNG_SRC *)
ssize_t timed_read(int, void *, size_t, int, void *)
ssize_t tls_prng_file_read(TLS_PRNG_SRC *, size_t)
void * mymalloc(ssize_t len)
void msg_info(const char *fmt,...)