/* rand.h * strophe XMPP client library -- pseudo-random number generator * * Copyright (C) 2014 Dmitry Podgorny * * This software is provided AS-IS with no warranty, either express * or implied. * * This program is dual licensed under the MIT and GPLv3 licenses. */ /** @file * Pseudo-random number generator. */ #ifndef __LIBSTROPHE_RAND_H__ #define __LIBSTROPHE_RAND_H__ #include /* size_t */ #include "strophe.h" /* xmpp_ctx_t */ typedef struct _xmpp_rand_t xmpp_rand_t; /** Create new xmpp_rand_t object. * * @param ctx A Strophe context object * * @ingroup Random */ xmpp_rand_t *xmpp_rand_new(xmpp_ctx_t *ctx); /** Destroy an xmpp_rand_t object. * * @param ctx A Strophe context object * * @ingroup Random */ void xmpp_rand_free(xmpp_ctx_t *ctx, xmpp_rand_t *rand); /** Generate random integer. * Analogue of rand(3). * * @ingroup Random */ int xmpp_rand(xmpp_rand_t *rand); /** Generate random bytes. * Generates len bytes and stores them to the output buffer. * * @ingroup Random */ void xmpp_rand_bytes(xmpp_rand_t *rand, unsigned char *output, size_t len); /** Generate a nonce that is printable randomized string. * This function doesn't allocate memory and doesn't fail. * * @param output A buffer where a NULL-terminated string will be placed. * The string will contain len-1 printable symbols. * @param len Number of bytes reserved for the output string, including * end of line '\0'. * * @ingroup Random */ void xmpp_rand_nonce(xmpp_rand_t *rand, char *output, size_t len); #endif /* __LIBSTROPHE_RAND_H__ */