Merged silc_1_0_branch to trunk.
[silc.git] / lib / silccrypt / silcrng.h
index a5da3c348ad2f514be44cd6f1f18ef8ed9c05273..4ae6b7d8891fd089160a9d4e91c0e2dba308ef9f 100644 (file)
@@ -1,10 +1,10 @@
 /*
 
-  silcrng.h 
+  silcrng.h
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 1997 - 2002 Pekka Riikonen
+  Copyright (C) 1997 - 2003 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
 
 */
 
-/****h* silccrypt/SilcRNGAPI
+/****h* silccrypt/SILC RNG Interface
  *
  * DESCRIPTION
  *
@@ -39,7 +39,7 @@
 /****s* silccrypt/SilcRNGAPI/SilcRng
  *
  * NAME
- * 
+ *
  *    typedef struct SilcRngStruct *SilcRng;
  *
  * DESCRIPTION
@@ -118,6 +118,27 @@ void silc_rng_init(SilcRng rng);
  ***/
 SilcUInt8 silc_rng_get_byte(SilcRng rng);
 
+/****f* silccrypt/SilcRNGAPI/silc_rng_get_byte_fast
+ *
+ * SYNOPSIS
+ *
+ *    SilcUInt8 silc_rng_get_byte_fast(SilcRng rng);
+ *
+ * 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_get_byte_fast(SilcRng rng);
+
 /****f* silccrypt/SilcRNGAPI/silc_rng_get_rn16
  *
  * SYNOPSIS
@@ -153,7 +174,8 @@ SilcUInt32 silc_rng_get_rn32(SilcRng rng);
  * DESCRIPTION
  *
  *    Returns random string in HEX form of the length of `len' bytes.
- *    The caller must free returned data buffer.
+ *    The caller must free returned data buffer.  It is guaranteed the
+ *    data string goes not include any zero (0x00) bytes.
  *
  ***/
 unsigned char *silc_rng_get_rn_string(SilcRng rng, SilcUInt32 len);
@@ -166,8 +188,9 @@ unsigned char *silc_rng_get_rn_string(SilcRng rng, SilcUInt32 len);
  *
  * DESCRIPTION
  *
- *    Returns random binary data of the length of `len' bytes.  The 
- *    caller must free returned data buffer.
+ *    Returns random binary data of the length of `len' bytes.  The
+ *    caller must free returned data buffer.  It is guaranteed the data
+ *    buffer does not include any zero (0x00) bytes.
  *
  ***/
 unsigned char *silc_rng_get_rn_data(SilcRng rng, SilcUInt32 len);
@@ -180,7 +203,7 @@ unsigned char *silc_rng_get_rn_data(SilcRng rng, SilcUInt32 len);
  *
  * DESCRIPTION
  *
- *    Add the data buffer indicated by `buffer' of length of `len' bytes 
+ *    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.
  *
@@ -296,7 +319,8 @@ SilcUInt32 silc_rng_global_get_rn32(void);
  * DESCRIPTION
  *
  *    Returns random string in HEX form of the length of `len' bytes.
- *    The caller must free returned data buffer.
+ *    The caller must free returned data buffer.  It is guaranteed the
+ *    data string goes not include any zero (0x00) bytes.
  *
  ***/
 unsigned char *silc_rng_global_get_rn_string(SilcUInt32 len);
@@ -309,8 +333,9 @@ unsigned char *silc_rng_global_get_rn_string(SilcUInt32 len);
  *
  * DESCRIPTION
  *
- *    Returns random binary data of the length of `len' bytes.  The 
- *    caller must free returned data buffer.
+ *    Returns random binary data of the length of `len' bytes.  The
+ *    caller must free returned data buffer.  It is guaranteed the data
+ *    buffer does not include any zero (0x00) bytes.
  *
  ***/
 unsigned char *silc_rng_global_get_rn_data(SilcUInt32 len);
@@ -323,7 +348,7 @@ unsigned char *silc_rng_global_get_rn_data(SilcUInt32 len);
  *
  * DESCRIPTION
  *
- *    Add the data buffer indicated by `buffer' of length of `len' bytes 
+ *    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.
  *