1 #if defined(ED25519_TEST) 8 typedef struct isaacp_state_t {
10 unsigned char buffer[1024];
15 #define isaacp_step(offset, mix) \ 17 a = (a ^ (mix)) + (mm[(i + offset + 128) & 0xff]); \ 18 y = (a ^ b) + mm[(x >> 2) & 0xff]; \ 20 b = (x + a) ^ mm[(y >> 10) & 0xff]; \ 21 U32TO8_LE(out + (i + offset) * 4, b); 24 isaacp_mix(isaacp_state *st) {
28 unsigned char *
out = st->buffer;
33 for (i = 0; i < 256; i += 4) {
47 isaacp_random(isaacp_state *st,
void *p,
size_t len) {
49 unsigned char *c = (
unsigned char *)p;
51 use = (len > st->left) ? st->left : len;
52 memcpy(c, st->buffer + (
sizeof(st->buffer) - st->left), use);
65 static int initialized = 0;
66 static isaacp_state rng;
69 memset(&rng, 0,
sizeof(rng));
75 isaacp_random(&rng, p, len);
77 #elif defined(ED25519_CUSTOMRANDOM) 83 #include <openssl/rand.h> 88 RAND_bytes(p, (
int) len);
void ED25519_FN() ed25519_randombytes_unsafe(void *p, size_t len)
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
void * memcpy(void *a, const void *b, size_t c)