#include #include #include #include "eos.h" #include "event.h" #include "dev/net.h" int getentropy(unsigned char *b, size_t sz) { unsigned char type; EOSMessage msg; uint16_t len; int rv; type = EOS_NET_MTYPE_RNG; len = sizeof(uint16_t); eos_net_alloc(&msg); if ((msg.size < len) || (msg.size < sz)) { eos_net_free(&msg, 1); return -1; } msg.buffer[0] = sz >> 8; msg.buffer[1] = sz; rv = eos_net_xchg(&type, &msg, &len); if (rv || (len != sz)) rv = -1; if (!rv) memcpy(b, msg.buffer, sz); eos_net_free(&msg, 1); return rv; }