/* * 'dev_urandom.c' created: Sun Oct 13 00:24:52 2002 * * Copyright 2002 by Lubomir Host <8host AT pauli.fmph.uniba.sk> * * License: GNU GPL (GNU Public License) * */ /* $Platon$ */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include #include #include #include #include "main.h" #include "dev_urandom.h" RNG_device_t rng_dev_urandom = { "/dev/urandom", -1, 0, 1E9, 255, 0, open_dev_urandom, read_dev_urandom, close_dev_urandom }; int open_dev_urandom(void) { int retval = RNG_OK; rng_dev_urandom.fd = open("/dev/urandom", O_RDONLY); if (rng_dev_urandom.fd == -1) retval = RNG_FAIL; return retval; } Real_t read_dev_urandom(void) { Real_t retval; ssize_t size; unsigned char ret; /* fprintf(stderr, "Read from device /dev/urandom.\n"); */ size = read(rng_dev_urandom.fd, &ret, 1); retval = (Real_t) ret; if (size == -1) fprintf(stderr, "Read from device /dev/urandom failed!\n"); return retval; } int close_dev_urandom(void) { int retval = RNG_OK; fprintf(stderr, "Device /dev/urandom sucessfully closed.\n"); retval = close(rng_dev_urandom.fd); return retval; } /* Modeline for ViM {{{ * vim: set ts=4: * vim600: fdm=marker fdl=0 fdc=3: * }}} */