* Removed dependency from internal headers in rand.h. xmpp_rand interface can be public in the future; * xmpp_rand functions accept xmpp_rand_t object instead of xmpp_ctx_t.
59 lines
1.3 KiB
C
59 lines
1.3 KiB
C
/* rand.h
|
|
* strophe XMPP client library -- pseudo-random number generator
|
|
*
|
|
* Copyright (C) 2014 Dmitry Podgorny <pasis.ua@gmail.com>
|
|
*
|
|
* 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 <stddef.h> /* size_t */
|
|
#include "strophe.h" /* xmpp_ctx_t */
|
|
|
|
typedef struct _xmpp_rand_t xmpp_rand_t;
|
|
|
|
/** Create new xmpp_rand_t object.
|
|
*
|
|
* @ingroup Random
|
|
*/
|
|
xmpp_rand_t *xmpp_rand_new(xmpp_ctx_t *ctx);
|
|
/** Destroy an xmpp_rand_t 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.
|
|
*
|
|
* @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__ */
|