#include <sys/file.h>
#include <sys/wait.h>
+#include <hcrypto/rand.h>
/* darwin dirent.h doesn't give us the prototypes we want if KERNEL is
* defined */
/* initialize the rx random number generator from user space */
{
+ /* rand-fortuna wants at least 128 bytes of seed; be generous. */
+ unsigned char seedbuf[256];
+ if (RAND_bytes(seedbuf, sizeof(seedbuf)) != 1) {
+ printf("SEED_ENTROPY: Error retrieving seed entropy\n");
+ }
+ afsd_syscall(AFSOP_SEED_ENTROPY, seedbuf, sizeof(seedbuf));
+ memset(seedbuf, 0, sizeof(seedbuf));
/* parse multihomed address files */
afs_uint32 addrbuf[MAXIPADDRS], maskbuf[MAXIPADDRS],
mtubuf[MAXIPADDRS];
params[0] = CAST_SYSCALL_PARAM((va_arg(ap, afs_uint32)));
#endif
break;
+ case AFSOP_SEED_ENTROPY:
+ params[0] = CAST_SYSCALL_PARAM((va_arg(ap, void *)));
+ params[1] = CAST_SYSCALL_PARAM((va_arg(ap, afs_uint32)));
+ break;
default:
printf("Unknown syscall enountered: %d\n", syscall);
opr_Assert(0);