X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/fcdff1398b72c97915b11975046865fbdf2f8713..cca956b199841d754e8a78391d2e2c7efce4a3ee:/lib/random.c diff --git a/lib/random.c b/lib/random.c index 70e19f8..ce87abd 100644 --- a/lib/random.c +++ b/lib/random.c @@ -23,17 +23,17 @@ * */ -#include -#include "types.h" +#include "common.h" #include #include #include -#include #include "random.h" #include "log.h" #include "arcfour.h" +#include "basen.h" +#include "mem.h" static int random_count; static int random_fd = -1; @@ -63,7 +63,7 @@ static void random__rekey(void) { * @param ptr Where to put random bytes * @param bytes How many random bytes to generate */ -void random_get(uint8_t *ptr, size_t bytes) { +void random_get(void *ptr, size_t bytes) { if(random_count == 0) random__rekey(); /* Encrypting 0s == just returning the keystream */ @@ -75,6 +75,16 @@ void random_get(uint8_t *ptr, size_t bytes) { random_count -= bytes; } +/** @brief Return a random ID string */ +char *random_id(void) { + unsigned long words[2]; + char id[128]; + + random_get(words, sizeof words); + basen(words, sizeof words / sizeof *words, id, sizeof id, 62); + return xstrdup(id); +} + /* Local Variables: c-basic-offset:2