Features/Real rng device/VirtRng-RandBytes.cpp: Difference between revisions
No edit summary |
|
(No difference)
|
Latest revision as of 08:50, 12 October 2016
$ cat RandBytes.cpp #include <stdlib.h> #include <stdio.h> #include <string.h> #include <qwqng.hpp> #include <sys/socket.h> #include <unistd.h> #include <errno.h> #include <arpa/inet.h> QWQNG* QNG; int main(void) { int qngStatus = 0; printf("Start Device...\n\n"); QNG = new QWQNG(); // create class /* Print Status String */ char* statusString; statusString = QNG->StatusString(); printf("Status: %s\n\n", statusString); /* Print open device serial number */ char* SerialNumber; SerialNumber = QNG->DeviceID(); printf("DeviceID: %s\n\n", SerialNumber); char* randbyte; int bytecount; bytecount = 10; randbyte = new char [bytecount]; int sock_fd, accept_sock; struct sockaddr_in server_addr; server_addr.sin_family=AF_INET; server_addr.sin_port=htons(1024); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); if ((sock_fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { exit(1); } if (bind(sock_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) < 0) { exit(1); } if (listen(sock_fd,4) < 0) { exit(1); } if ((accept_sock = accept(sock_fd, NULL, NULL)) < 0) { exit(1); } /* Get 10 random bytes */ printf("Get 10 Random Bytes ..\n"); int count = 0; while(1) { if ((qngStatus = QNG->RandBytes(randbyte, bytecount)) != S_OK) { printf("Error: %s\n\n", QNG->StatusString()); return EXIT_FAILURE; } count %= 100000; if (count++ == 0) { printf("working....\n"); } send(accept_sock, randbyte, sizeof(randbyte), 0); } delete [] randbyte; delete QNG; printf("EXIT..."); return EXIT_SUCCESS; }