Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

randombytes.c 701 B

vor 9 Jahren
vor 9 Jahren
vor 9 Jahren
vor 9 Jahren
1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. This code was taken from the SPHINCS reference implementation and is public domain.
  3. */
  4. #include <fcntl.h>
  5. #include <unistd.h>
  6. static int fd = -1;
  7. void randombytes(unsigned char *x, unsigned long long xlen)
  8. {
  9. int i;
  10. if (fd == -1) {
  11. for (;;) {
  12. fd = open("/dev/urandom", O_RDONLY);
  13. if (fd != -1) {
  14. break;
  15. }
  16. sleep(1);
  17. }
  18. }
  19. while (xlen > 0) {
  20. if (xlen < 1048576) {
  21. i = xlen;
  22. }
  23. else {
  24. i = 1048576;
  25. }
  26. i = read(fd, x, i);
  27. if (i < 1) {
  28. sleep(1);
  29. continue;
  30. }
  31. x += i;
  32. xlen -= i;
  33. }
  34. }