Skip to content
Snippets Groups Projects
Commit 13147068 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

/dev/urandom re-read(2) loop

parent 43a4500b
Branches
Tags
No related merge requests found
......@@ -36,21 +36,27 @@ int lutil_entropy( unsigned char *buf, ber_len_t nbytes )
if( nbytes == 0 ) return 0;
#ifdef URANDOM_DEVICE
#define URANDOM_NREADS 4
/* Linux and *BSD offer a urandom device */
{
int rc, fd;
int rc, fd, n=0;
fd = open( URANDOM_DEVICE, O_RDONLY );
if( fd < 0 ) return -1;
rc = read( fd, buf, nbytes );
close(fd);
do {
rc = read( fd, buf, nbytes );
if( rc <= 0 ) break;
/* should return nbytes */
if( rc != nbytes ) return -1;
buf+=rc;
nbytes-=rc;
return 0;
if( ++n >= URANDOM_NREADS ) break;
} while( nbytes > 0 );
close(fd);
return nbytes > 0 ? -1 : 0;
}
#elif PROV_RSA_FULL
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment