<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>ucommon: ucommon::Random Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.3 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="classes.html"><span>Data Structure Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Data Fields</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="a00208.html">ucommon</a>::<a class="el" href="a00113.html">Random</a> </div> </div> <div class="contents"> <h1>ucommon::Random Class Reference</h1><!-- doxytag: class="ucommon::Random" --> <p>Cryptographically relevant random numbers. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="a00196_source.html">secure.h</a>></code></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a1e4c87467a2f158506f570aa79a2cc5a">fill</a> (unsigned char *memory, size_t size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Fill memory with pseudo-random values. <a href="#a1e4c87467a2f158506f570aa79a2cc5a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a4d5f8b2d96f5be4b71c4503c35126b01">get</a> (int min, int max)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get a pseudo-random integer in a preset range. <a href="#a4d5f8b2d96f5be4b71c4503c35126b01"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a7c4f81c35038c4c6ad8879f0bc2b8e02">get</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get a pseudo-random integer, range 0 - 32767. <a href="#a7c4f81c35038c4c6ad8879f0bc2b8e02"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a73fc61f99abe1960b283a898f8b0593c">key</a> (unsigned char *memory, size_t size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get high-entropy random data. <a href="#a73fc61f99abe1960b283a898f8b0593c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a3360c66625ad03f677f099e1124c4ef8">real</a> (double min, double max)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get a pseudo-random floating point value in a preset range. <a href="#a3360c66625ad03f677f099e1124c4ef8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a29689f7eec6f2bf13412125eebfc4235">real</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get a pseudo-random floating point value. <a href="#a29689f7eec6f2bf13412125eebfc4235"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bcf4a231043574ad73af2048473eded"></a><!-- doxytag: member="ucommon::Random::seed" ref="a1bcf4a231043574ad73af2048473eded" args="(void)" --> static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a1bcf4a231043574ad73af2048473eded">seed</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Re-seed pseudo-random generation and entropy pools. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a704a0ad3e3b70503667c379f92e2a760">seed</a> (const unsigned char *buffer, size_t size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Push entropic seed. <a href="#a704a0ad3e3b70503667c379f92e2a760"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#aa46724e8c36d6798551cccbe0e21393c">status</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Determine if we have sufficient entropy to return random values. <a href="#aa46724e8c36d6798551cccbe0e21393c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70cc3cd92786816119363ba7fdbc73f1"></a><!-- doxytag: member="ucommon::Random::uuid" ref="a70cc3cd92786816119363ba7fdbc73f1" args="(void)" --> static <a class="el" href="a00148.html">String</a> </td><td class="memItemRight" valign="bottom"><b>uuid</b> (void)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a7a79a514e26b588da1b8a3c26aef434e">uuid</a> (char *<a class="el" href="a00148.html">string</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create 36 character random uuid string. <a href="#a7a79a514e26b588da1b8a3c26aef434e"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Cryptographically relevant random numbers. </p> <p>This is used both to gather entropy pools and pseudo-random values. </p> <dl class="author"><dt><b>Author:</b></dt><dd>David Sugar <<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>> </dd></dl> <p>Definition at line <a class="el" href="a00196_source.html#l00522">522</a> of file <a class="el" href="a00196_source.html">secure.h</a>.</p> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a1e4c87467a2f158506f570aa79a2cc5a"></a><!-- doxytag: member="ucommon::Random::fill" ref="a1e4c87467a2f158506f570aa79a2cc5a" args="(unsigned char *memory, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static size_t ucommon::Random::fill </td> <td>(</td> <td class="paramtype">unsigned char * </td> <td class="paramname"> <em>memory</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Fill memory with pseudo-random values. </p> <p>This is used as the basis for all get and real operations and does not depend on seed entropy. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>memory</em> </td><td>buffer to fill. </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>of buffer to fill. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes set. </dd></dl> </div> </div> <a class="anchor" id="a4d5f8b2d96f5be4b71c4503c35126b01"></a><!-- doxytag: member="ucommon::Random::get" ref="a4d5f8b2d96f5be4b71c4503c35126b01" args="(int min, int max)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int ucommon::Random::get </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>min</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>max</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get a pseudo-random integer in a preset range. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>min</em> </td><td>value of random integer. </td></tr> <tr><td valign="top"></td><td valign="top"><em>max</em> </td><td>value of random integer. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>random value from min to max. </dd></dl> </div> </div> <a class="anchor" id="a7c4f81c35038c4c6ad8879f0bc2b8e02"></a><!-- doxytag: member="ucommon::Random::get" ref="a7c4f81c35038c4c6ad8879f0bc2b8e02" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int ucommon::Random::get </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get a pseudo-random integer, range 0 - 32767. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>random integer. </dd></dl> </div> </div> <a class="anchor" id="a73fc61f99abe1960b283a898f8b0593c"></a><!-- doxytag: member="ucommon::Random::key" ref="a73fc61f99abe1960b283a898f8b0593c" args="(unsigned char *memory, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static size_t ucommon::Random::key </td> <td>(</td> <td class="paramtype">unsigned char * </td> <td class="paramname"> <em>memory</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get high-entropy random data. </p> <p>This is often used to initialize keys. This operation may block if there is insufficient entropy immediately available. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>memory</em> </td><td>buffer to fill. </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>of buffer. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes filled. </dd></dl> </div> </div> <a class="anchor" id="a3360c66625ad03f677f099e1124c4ef8"></a><!-- doxytag: member="ucommon::Random::real" ref="a3360c66625ad03f677f099e1124c4ef8" args="(double min, double max)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static double ucommon::Random::real </td> <td>(</td> <td class="paramtype">double </td> <td class="paramname"> <em>min</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double </td> <td class="paramname"> <em>max</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get a pseudo-random floating point value in a preset range. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>min</em> </td><td>value of random floating point number. </td></tr> <tr><td valign="top"></td><td valign="top"><em>max</em> </td><td>value of random floating point number. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>random value from min to max. </dd></dl> </div> </div> <a class="anchor" id="a29689f7eec6f2bf13412125eebfc4235"></a><!-- doxytag: member="ucommon::Random::real" ref="a29689f7eec6f2bf13412125eebfc4235" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static double ucommon::Random::real </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get a pseudo-random floating point value. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>psudo-random value 0 to 1. </dd></dl> </div> </div> <a class="anchor" id="a704a0ad3e3b70503667c379f92e2a760"></a><!-- doxytag: member="ucommon::Random::seed" ref="a704a0ad3e3b70503667c379f92e2a760" args="(const unsigned char *buffer, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static bool ucommon::Random::seed </td> <td>(</td> <td class="paramtype">const unsigned char * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Push entropic seed. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>buffer</em> </td><td>of random data to push. </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>of buffer. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>true if successful. </dd></dl> </div> </div> <a class="anchor" id="aa46724e8c36d6798551cccbe0e21393c"></a><!-- doxytag: member="ucommon::Random::status" ref="aa46724e8c36d6798551cccbe0e21393c" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static bool ucommon::Random::status </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Determine if we have sufficient entropy to return random values. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if sufficient entropy. </dd></dl> </div> </div> <a class="anchor" id="a7a79a514e26b588da1b8a3c26aef434e"></a><!-- doxytag: member="ucommon::Random::uuid" ref="a7a79a514e26b588da1b8a3c26aef434e" args="(char *string)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void ucommon::Random::uuid </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>string</em></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create 36 character random uuid string. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td>to write uuid into, must be 37 bytes or more. </td></tr> </table> </dd> </dl> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>ucommon/<a class="el" href="a00196_source.html">secure.h</a></li> </ul> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:39:54 2011 for ucommon by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>