prngd simuliert "/ dev/random" und "/ dev/urandom" über eine Netzwerkverbindung. Es unterstützt entweder einen Unix-Stream-basierten Domain-Socket ("/ var/run/egd-pool") oder (wenn konfiguriert) oder IP mit den TCP-Ports 708 oder 4840 (Standardwerte --- können geändert werden).
Also, um das Unix-Domain-Socket in Verwendung, würde es in etwa so aussehen:
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
int devrandom(void)
{
union
{
struct sockaddr sa;
struct sockaddr_un path;
} location;
int sock;
memset(&location,0,sizeof(location));
location.path.sun_family = AF_UNIX;
strcpy(location.path.sun_path,"/var/run/egd-pool");
sock = socket(AF_UNIX,SOCK_STREAM,0);
if (sock < 0)
return -1;
if (connect(sock,&location.sa,sizeof(struct sockaddr_un)) < 0)
return -1;
return sock;
}
Dies wird einen Dateideskriptor zurückkehren Sie lesen passieren können(), um die Zufallsdaten (Note zu erhalten: Dieses Code ist nicht getestet). Eine TCP/IP-basierte Verbindung ist etwas komplizierter, da der Socket an eine lokale Adresse gebunden und eine Verbindung zur Remote-Adresse hergestellt werden muss. Im Internet gibt es jedoch zahlreiche Beispiele für diese Art von Code.