#ifndef _RANDOMBYTES_H_
#define _RANDOMBYTES_H_

#define RANDOMBYTES_SRC_RANDOM 0
#define RANDOMBYTES_DEV_RANDOM "/dev/random"
#define RANDOMBYTES_SRC_URANDOM 1
#define RANDOMBYTES_DEV_URANDOM "/dev/urandom"
#define RANDOMBYTES_SRC_SECRANDOMCOPYBYTES 2
#define RANDOMBYTES_SRC_CRYPTGENRANDOM 3
#define RANDOMBYTES_SRC_GETRANDOM 4

#ifdef HAVE_DEVICE_RANDOM
#define RANDOMBYTES_SRC_DEFAULT RANDOMBYTES_SRC_RANDOM
#define RANDOMBYTES_DEV_DEFAULT RANDOMBYTES_DEV_RANDOM
#else
#ifdef HAVE_DEVICE_URANDOM
#define RANDOMBYTES_SRC_DEFAULT RANDOMBYTES_SRC_URANDOM
#define RANDOMBYTES_DEV_DEFAULT RANDOMBYTES_DEV_URANDOM
#else
#ifdef HAVE_SECRANDOMCOPYBYTES
#define RANDOMBYTES_SRC_DEFAULT RANDOMBYTES_SRC_SECRANDOMCOPYBYTES
#else
#ifdef HAVE_CRYPTGENRANDOM
#define RANDOMBYTES_SRC_DEFAULT RANDOMBYTES_SRC_CRYPTGENRANDOM
#endif
#endif
#endif
#endif

extern int GetRandomSource(void);
extern int SetRandomSource(int src);
extern int randombytes(unsigned char *ptr, unsigned long long length);
#endif
