-unsigned char silc_rng_get_byte(SilcRng rng);
-uint16 silc_rng_get_rn16(SilcRng rng);
-uint32 silc_rng_get_rn32(SilcRng rng);
-unsigned char *silc_rng_get_rn_string(SilcRng rng, uint32 len);
-unsigned char *silc_rng_get_rn_data(SilcRng rng, uint32 len);
-void silc_rng_add_noise(SilcRng rng, unsigned char *buffer, uint32 len);
-
-int silc_rng_global_init(SilcRng rng);
-int silc_rng_global_uninit();
-unsigned char silc_rng_global_get_byte();
-uint16 silc_rng_global_get_rn16();
-uint32 silc_rng_global_get_rn32();
-unsigned char *silc_rng_global_get_rn_string(uint32 len);
-unsigned char *silc_rng_global_get_rn_data(uint32 len);
-void silc_rng_global_add_noise(unsigned char *buffer, uint32 len);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_get_byte
+ *
+ * SYNOPSIS
+ *
+ * SilcUInt8 silc_rng_get_byte(SilcRng rng);
+ *
+ * DESCRIPTION
+ *
+ * Returns one 8-bit random byte from the random number generator.
+ *
+ ***/
+SilcUInt8 silc_rng_get_byte(SilcRng rng);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_get_rn16
+ *
+ * SYNOPSIS
+ *
+ * SilcUInt16 silc_rng_get_rn16(SilcRng rng);
+ *
+ * DESCRIPTION
+ *
+ * Returns one 16-bit random number from the random number generator.
+ *
+ ***/
+SilcUInt16 silc_rng_get_rn16(SilcRng rng);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_get_rn32
+ *
+ * SYNOPSIS
+ *
+ * SilcUInt32 silc_rng_get_rn32(SilcRng rng);
+ *
+ * DESCRIPTION
+ *
+ * Returns one 32-bit random number from the random number generator.
+ *
+ ***/
+SilcUInt32 silc_rng_get_rn32(SilcRng rng);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_get_rn_string
+ *
+ * SYNOPSIS
+ *
+ * unsigned char *silc_rng_get_rn_string(SilcRng rng, SilcUInt32 len);
+ *
+ * DESCRIPTION
+ *
+ * Returns random string in HEX form of the length of `len' bytes.
+ * The caller must free returned data buffer.
+ *
+ ***/
+unsigned char *silc_rng_get_rn_string(SilcRng rng, SilcUInt32 len);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_get_rn_data
+ *
+ * SYNOPSIS
+ *
+ * unsigned char *silc_rng_get_rn_data(SilcRng rng, SilcUInt32 len);
+ *
+ * DESCRIPTION
+ *
+ * Returns random binary data of the length of `len' bytes. The
+ * caller must free returned data buffer.
+ *
+ ***/
+unsigned char *silc_rng_get_rn_data(SilcRng rng, SilcUInt32 len);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_add_noise
+ *
+ * SYNOPSIS
+ *
+ * void silc_rng_add_noise(SilcRng rng, unsigned char *buffer, SilcUInt32 len);
+ *
+ * DESCRIPTION
+ *
+ * Add the data buffer indicated by `buffer' of length of `len' bytes
+ * as noise to the random number generator. The random number generator
+ * is restirred (reseeded) when this function is called.
+ *
+ ***/
+void silc_rng_add_noise(SilcRng rng, unsigned char *buffer, SilcUInt32 len);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_init
+ *
+ * SYNOPSIS
+ *
+ * bool silc_rng_global_init(SilcRng rng);
+ *
+ * DESCRIPTION
+ *
+ * This function sets the `rng' if non-NULL as global RNG context.
+ * When any of the silc_rng_global_* functions is called the `rng' is
+ * used as RNG. If `rng' is NULL this will allocate new RNG as global
+ * RNG. The application in this case must free it later by calling
+ * silc_rng_global_uninit. Returns TRUE after Global RNG is initialized.
+ *
+ * NOTES
+ *
+ * If `rng' was non-NULL, the silc_rng_init must have been called for
+ * the `rng' already.
+ *
+ * This function can be used to define the `rng' as global RNG and then
+ * use silc_rng_global_* functions easily without need to provide
+ * the RNG as argument.
+ *
+ ***/
+bool silc_rng_global_init(SilcRng rng);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_uninit
+ *
+ * SYNOPSIS
+ *
+ * bool silc_rng_global_uninit(void);
+ *
+ * DESCRIPTION
+ *
+ * Uninitialized the Global RNG object and frees it. This should not
+ * be called if silc_rng_global_init was called with non-NULL RNG.
+ *
+ ***/
+bool silc_rng_global_uninit(void);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_get_byte
+ *
+ * SYNOPSIS
+ *
+ * SilcUInt8 silc_rng_global_get_byte(void);
+ *
+ * DESCRIPTION
+ *
+ * Returns one 8-bit random byte from the random number generator.
+ *
+ ***/
+SilcUInt8 silc_rng_global_get_byte(void);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_get_byte_fast
+ *
+ * SYNOPSIS
+ *
+ * SilcUInt8 silc_rng_global_get_byte_fast(void);
+ *
+ * DESCRIPTION
+ *
+ * Returns one 8-bit random byte from the random number generator as
+ * fast as possible.
+ *
+ * NOTES
+ *
+ * This will read the data from /dev/urandom if it is available in the
+ * operating system, since this may be faster than retrieving a byte
+ * from the SILC RNG. If /dev/urandom is not available this will take
+ * the byte from SILC RNG and is effectively same as silc_rng_get_byte.
+ *
+ ***/
+SilcUInt8 silc_rng_global_get_byte_fast(void);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_get_rn16
+ *
+ * SYNOPSIS
+ *
+ * SilcUInt16 silc_rng_global_get_rn16(void);
+ *
+ * DESCRIPTION
+ *
+ * Returns one 16-bit random number from the random number generator.
+ *
+ ***/
+SilcUInt16 silc_rng_global_get_rn16(void);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_get_rn32
+ *
+ * SYNOPSIS
+ *
+ * SilcUInt32 silc_rng_global_get_rn32(void);
+ *
+ * DESCRIPTION
+ *
+ * Returns one 32-bit random number from the random number generator.
+ *
+ ***/
+SilcUInt32 silc_rng_global_get_rn32(void);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_get_rn_string
+ *
+ * SYNOPSIS
+ *
+ * unsigned char *silc_rng_global_get_rn_string(SilcUInt32 len);
+ *
+ * DESCRIPTION
+ *
+ * Returns random string in HEX form of the length of `len' bytes.
+ * The caller must free returned data buffer.
+ *
+ ***/
+unsigned char *silc_rng_global_get_rn_string(SilcUInt32 len);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_get_rn_data
+ *
+ * SYNOPSIS
+ *
+ * unsigned char *silc_rng_global_get_rn_data(SilcUInt32 len);
+ *
+ * DESCRIPTION
+ *
+ * Returns random binary data of the length of `len' bytes. The
+ * caller must free returned data buffer.
+ *
+ ***/
+unsigned char *silc_rng_global_get_rn_data(SilcUInt32 len);
+
+/****f* silccrypt/SilcRNGAPI/silc_rng_global_add_noise
+ *
+ * SYNOPSIS
+ *
+ * void silc_rng_global_add_noise(unsigned char *buffer, SilcUInt32 len);
+ *
+ * DESCRIPTION
+ *
+ * Add the data buffer indicated by `buffer' of length of `len' bytes
+ * as noise to the random number generator. The random number generator
+ * is restirred (reseeded) when this function is called.
+ *
+ ***/
+
+void silc_rng_global_add_noise(unsigned char *buffer, SilcUInt32 len);