<!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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>PolarSSL v1.3.8: entropy.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">PolarSSL v1.3.8 </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_6a9bbd12bf4e19a18c45e270f8fae3fd.html">include</a></li><li class="navelem"><a class="el" href="dir_04272d44da4745cf8b8bfc767d6c6523.html">polarssl</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">entropy.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Entropy accumulator implementation. <a href="#details">More...</a></p> <div class="textblock"><code>#include <string.h></code><br/> <code>#include "<a class="el" href="config_8h_source.html">config.h</a>"</code><br/> <code>#include "<a class="el" href="sha512_8h_source.html">sha512.h</a>"</code><br/> </div><div class="textblock"><div class="dynheader"> Include dependency graph for entropy.h:</div> <div class="dyncontent"> <div class="center"><img src="entropy_8h__incl.png" border="0" usemap="#entropy_8h" alt=""/></div> <map name="entropy_8h" id="entropy_8h"> </map> </div> </div> <p><a href="entropy_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structsource__state.html">source_state</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Entropy source state. <a href="structsource__state.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structentropy__context.html">entropy_context</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Entropy context structure. <a href="structentropy__context.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a9d15b029b1caee03c5c2b77b81c1147f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a9d15b029b1caee03c5c2b77b81c1147f">POLARSSL_ENTROPY_SHA512_ACCUMULATOR</a></td></tr> <tr class="separator:a9d15b029b1caee03c5c2b77b81c1147f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab9ff2b3b04c80aa19556ed9676bf35e2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#ab9ff2b3b04c80aa19556ed9676bf35e2">POLARSSL_ERR_ENTROPY_SOURCE_FAILED</a>   -0x003C</td></tr> <tr class="memdesc:ab9ff2b3b04c80aa19556ed9676bf35e2"><td class="mdescLeft"> </td><td class="mdescRight">Critical entropy source failure. <a href="#ab9ff2b3b04c80aa19556ed9676bf35e2">More...</a><br/></td></tr> <tr class="separator:ab9ff2b3b04c80aa19556ed9676bf35e2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a91eeab75dbfc3730efdc415f57e9f4ac"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a91eeab75dbfc3730efdc415f57e9f4ac">POLARSSL_ERR_ENTROPY_MAX_SOURCES</a>   -0x003E</td></tr> <tr class="memdesc:a91eeab75dbfc3730efdc415f57e9f4ac"><td class="mdescLeft"> </td><td class="mdescRight">No more sources can be added. <a href="#a91eeab75dbfc3730efdc415f57e9f4ac">More...</a><br/></td></tr> <tr class="separator:a91eeab75dbfc3730efdc415f57e9f4ac"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0b3765116f6d9d1cbdd5d2c4faee5d33"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a0b3765116f6d9d1cbdd5d2c4faee5d33">POLARSSL_ERR_ENTROPY_NO_SOURCES_DEFINED</a>   -0x0040</td></tr> <tr class="memdesc:a0b3765116f6d9d1cbdd5d2c4faee5d33"><td class="mdescLeft"> </td><td class="mdescRight">No sources have been added to poll. <a href="#a0b3765116f6d9d1cbdd5d2c4faee5d33">More...</a><br/></td></tr> <tr class="separator:a0b3765116f6d9d1cbdd5d2c4faee5d33"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a348fa499b6e890de696df6b23d9cce39"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a348fa499b6e890de696df6b23d9cce39">POLARSSL_ERR_ENTROPY_FILE_IO_ERROR</a>   -0x0058</td></tr> <tr class="memdesc:a348fa499b6e890de696df6b23d9cce39"><td class="mdescLeft"> </td><td class="mdescRight">Read/write error in file. <a href="#a348fa499b6e890de696df6b23d9cce39">More...</a><br/></td></tr> <tr class="separator:a348fa499b6e890de696df6b23d9cce39"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4610ce6582323b8906b9e05ae6253dfb"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a4610ce6582323b8906b9e05ae6253dfb">ENTROPY_BLOCK_SIZE</a>   64</td></tr> <tr class="memdesc:a4610ce6582323b8906b9e05ae6253dfb"><td class="mdescLeft"> </td><td class="mdescRight">Block size of entropy accumulator (SHA-512) <a href="#a4610ce6582323b8906b9e05ae6253dfb">More...</a><br/></td></tr> <tr class="separator:a4610ce6582323b8906b9e05ae6253dfb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a23cd05df3838590ba3b1688290c9c1fa"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a23cd05df3838590ba3b1688290c9c1fa">ENTROPY_MAX_SEED_SIZE</a>   1024</td></tr> <tr class="memdesc:a23cd05df3838590ba3b1688290c9c1fa"><td class="mdescLeft"> </td><td class="mdescRight">Maximum size of seed we read from seed file. <a href="#a23cd05df3838590ba3b1688290c9c1fa">More...</a><br/></td></tr> <tr class="separator:a23cd05df3838590ba3b1688290c9c1fa"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8c3a8b8e81c2b4e3c03d3704029bca39"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a8c3a8b8e81c2b4e3c03d3704029bca39">ENTROPY_SOURCE_MANUAL</a>   <a class="el" href="entropy_8h.html#a5e9ba2c083acc78efc758deca62d162d">ENTROPY_MAX_SOURCES</a></td></tr> <tr class="separator:a8c3a8b8e81c2b4e3c03d3704029bca39"><td class="memSeparator" colspan="2"> </td></tr> <tr><td colspan="2"><div class="groupHeader">SECTION: Module settings</div></td></tr> <tr><td colspan="2"><div class="groupText"><p>The configuration options you can set for this module are in this section.</p> <p>Either change them in <a class="el" href="config_8h.html" title="Configuration options (set of defines) ">config.h</a> or define them on the compiler command line. </p> </div></td></tr> <tr class="memitem:a5e9ba2c083acc78efc758deca62d162d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a5e9ba2c083acc78efc758deca62d162d">ENTROPY_MAX_SOURCES</a>   20</td></tr> <tr class="memdesc:a5e9ba2c083acc78efc758deca62d162d"><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of sources supported. <a href="#a5e9ba2c083acc78efc758deca62d162d">More...</a><br/></td></tr> <tr class="separator:a5e9ba2c083acc78efc758deca62d162d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acc7f201066c056a514433c5a6224b720"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#acc7f201066c056a514433c5a6224b720">ENTROPY_MAX_GATHER</a>   128</td></tr> <tr class="memdesc:acc7f201066c056a514433c5a6224b720"><td class="mdescLeft"> </td><td class="mdescRight">Maximum amount requested from entropy sources. <a href="#acc7f201066c056a514433c5a6224b720">More...</a><br/></td></tr> <tr class="separator:acc7f201066c056a514433c5a6224b720"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:a4267ff128fbe2ca4da2584359821d09d"><td class="memItemLeft" align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a4267ff128fbe2ca4da2584359821d09d">f_source_ptr</a> )(void *data, unsigned char *output, size_t len, size_t *olen)</td></tr> <tr class="memdesc:a4267ff128fbe2ca4da2584359821d09d"><td class="mdescLeft"> </td><td class="mdescRight">Entropy poll callback pointer. <a href="#a4267ff128fbe2ca4da2584359821d09d">More...</a><br/></td></tr> <tr class="separator:a4267ff128fbe2ca4da2584359821d09d"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a07cc14e42768b04bbcc48a632ad8c442"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a07cc14e42768b04bbcc48a632ad8c442">entropy_init</a> (<a class="el" href="structentropy__context.html">entropy_context</a> *ctx)</td></tr> <tr class="memdesc:a07cc14e42768b04bbcc48a632ad8c442"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the context. <a href="#a07cc14e42768b04bbcc48a632ad8c442">More...</a><br/></td></tr> <tr class="separator:a07cc14e42768b04bbcc48a632ad8c442"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ace26c056043473a7f12be97117262fd4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#ace26c056043473a7f12be97117262fd4">entropy_free</a> (<a class="el" href="structentropy__context.html">entropy_context</a> *ctx)</td></tr> <tr class="memdesc:ace26c056043473a7f12be97117262fd4"><td class="mdescLeft"> </td><td class="mdescRight">Free the data in the context. <a href="#ace26c056043473a7f12be97117262fd4">More...</a><br/></td></tr> <tr class="separator:ace26c056043473a7f12be97117262fd4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5a9c269e560537d59a4730faaa835fd5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a5a9c269e560537d59a4730faaa835fd5">entropy_add_source</a> (<a class="el" href="structentropy__context.html">entropy_context</a> *ctx, <a class="el" href="entropy_8h.html#a4267ff128fbe2ca4da2584359821d09d">f_source_ptr</a> f_source, void *p_source, size_t threshold)</td></tr> <tr class="memdesc:a5a9c269e560537d59a4730faaa835fd5"><td class="mdescLeft"> </td><td class="mdescRight">Adds an entropy source to poll (Thread-safe if POLARSSL_THREADING_C is enabled) <a href="#a5a9c269e560537d59a4730faaa835fd5">More...</a><br/></td></tr> <tr class="separator:a5a9c269e560537d59a4730faaa835fd5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abe16e67991416febc3144c0c8888e792"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#abe16e67991416febc3144c0c8888e792">entropy_gather</a> (<a class="el" href="structentropy__context.html">entropy_context</a> *ctx)</td></tr> <tr class="memdesc:abe16e67991416febc3144c0c8888e792"><td class="mdescLeft"> </td><td class="mdescRight">Trigger an extra gather poll for the accumulator (Thread-safe if POLARSSL_THREADING_C is enabled) <a href="#abe16e67991416febc3144c0c8888e792">More...</a><br/></td></tr> <tr class="separator:abe16e67991416febc3144c0c8888e792"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2b7d7123b31b42902364989975740fe2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a2b7d7123b31b42902364989975740fe2">entropy_func</a> (void *data, unsigned char *output, size_t len)</td></tr> <tr class="memdesc:a2b7d7123b31b42902364989975740fe2"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve entropy from the accumulator (Maximum length: ENTROPY_BLOCK_SIZE) (Thread-safe if POLARSSL_THREADING_C is enabled) <a href="#a2b7d7123b31b42902364989975740fe2">More...</a><br/></td></tr> <tr class="separator:a2b7d7123b31b42902364989975740fe2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a474ff02ff7707ebffd00672d8e46ddf3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a474ff02ff7707ebffd00672d8e46ddf3">entropy_update_manual</a> (<a class="el" href="structentropy__context.html">entropy_context</a> *ctx, const unsigned char *data, size_t len)</td></tr> <tr class="memdesc:a474ff02ff7707ebffd00672d8e46ddf3"><td class="mdescLeft"> </td><td class="mdescRight">Add data to the accumulator manually (Thread-safe if POLARSSL_THREADING_C is enabled) <a href="#a474ff02ff7707ebffd00672d8e46ddf3">More...</a><br/></td></tr> <tr class="separator:a474ff02ff7707ebffd00672d8e46ddf3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aeec06418558ccfd52a9967ad54f197c4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#aeec06418558ccfd52a9967ad54f197c4">entropy_write_seed_file</a> (<a class="el" href="structentropy__context.html">entropy_context</a> *ctx, const char *path)</td></tr> <tr class="memdesc:aeec06418558ccfd52a9967ad54f197c4"><td class="mdescLeft"> </td><td class="mdescRight">Write a seed file. <a href="#aeec06418558ccfd52a9967ad54f197c4">More...</a><br/></td></tr> <tr class="separator:aeec06418558ccfd52a9967ad54f197c4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5d16f198ece9ccdfe5f80780bf5cee33"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#a5d16f198ece9ccdfe5f80780bf5cee33">entropy_update_seed_file</a> (<a class="el" href="structentropy__context.html">entropy_context</a> *ctx, const char *path)</td></tr> <tr class="memdesc:a5d16f198ece9ccdfe5f80780bf5cee33"><td class="mdescLeft"> </td><td class="mdescRight">Read and update a seed file. <a href="#a5d16f198ece9ccdfe5f80780bf5cee33">More...</a><br/></td></tr> <tr class="separator:a5d16f198ece9ccdfe5f80780bf5cee33"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aee40647ce61215ca2765e9ab3c84a47c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="entropy_8h.html#aee40647ce61215ca2765e9ab3c84a47c">entropy_self_test</a> (int verbose)</td></tr> <tr class="memdesc:aee40647ce61215ca2765e9ab3c84a47c"><td class="mdescLeft"> </td><td class="mdescRight">Checkup routine. <a href="#aee40647ce61215ca2765e9ab3c84a47c">More...</a><br/></td></tr> <tr class="separator:aee40647ce61215ca2765e9ab3c84a47c"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Entropy accumulator implementation. </p> <p>Copyright (C) 2006-2014, Brainspark B.V.</p> <p>This file is part of PolarSSL (<a href="http://www.polarssl.org">http://www.polarssl.org</a>) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org></p> <p>All rights reserved.</p> <p>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 the Free Software Foundation; either version 2 of the License, or (at your option) any later version.</p> <p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p> <p>You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. </p> <p>Definition in file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a class="anchor" id="a4610ce6582323b8906b9e05ae6253dfb"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ENTROPY_BLOCK_SIZE   64</td> </tr> </table> </div><div class="memdoc"> <p>Block size of entropy accumulator (SHA-512) </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00080">80</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="acc7f201066c056a514433c5a6224b720"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ENTROPY_MAX_GATHER   128</td> </tr> </table> </div><div class="memdoc"> <p>Maximum amount requested from entropy sources. </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00074">74</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="a23cd05df3838590ba3b1688290c9c1fa"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ENTROPY_MAX_SEED_SIZE   1024</td> </tr> </table> </div><div class="memdoc"> <p>Maximum size of seed we read from seed file. </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00085">85</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="a5e9ba2c083acc78efc758deca62d162d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ENTROPY_MAX_SOURCES   20</td> </tr> </table> </div><div class="memdoc"> <p>Maximum number of sources supported. </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00070">70</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="a8c3a8b8e81c2b4e3c03d3704029bca39"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define ENTROPY_SOURCE_MANUAL   <a class="el" href="entropy_8h.html#a5e9ba2c083acc78efc758deca62d162d">ENTROPY_MAX_SOURCES</a></td> </tr> </table> </div><div class="memdoc"> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00086">86</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="a9d15b029b1caee03c5c2b77b81c1147f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ENTROPY_SHA512_ACCUMULATOR</td> </tr> </table> </div><div class="memdoc"> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00040">40</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="a348fa499b6e890de696df6b23d9cce39"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_ENTROPY_FILE_IO_ERROR   -0x0058</td> </tr> </table> </div><div class="memdoc"> <p>Read/write error in file. </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00059">59</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="a91eeab75dbfc3730efdc415f57e9f4ac"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_ENTROPY_MAX_SOURCES   -0x003E</td> </tr> </table> </div><div class="memdoc"> <p>No more sources can be added. </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00057">57</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="a0b3765116f6d9d1cbdd5d2c4faee5d33"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_ENTROPY_NO_SOURCES_DEFINED   -0x0040</td> </tr> </table> </div><div class="memdoc"> <p>No sources have been added to poll. </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00058">58</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <a class="anchor" id="ab9ff2b3b04c80aa19556ed9676bf35e2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_ENTROPY_SOURCE_FAILED   -0x003C</td> </tr> </table> </div><div class="memdoc"> <p>Critical entropy source failure. </p> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00056">56</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <h2 class="groupheader">Typedef Documentation</h2> <a class="anchor" id="a4267ff128fbe2ca4da2584359821d09d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef int(* f_source_ptr)(void *data, unsigned char *output, size_t len, size_t *olen)</td> </tr> </table> </div><div class="memdoc"> <p>Entropy poll callback pointer. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">data</td><td>Callback-specific data pointer </td></tr> <tr><td class="paramname">output</td><td>Data to fill </td></tr> <tr><td class="paramname">len</td><td>Maximum size to provide </td></tr> <tr><td class="paramname">olen</td><td>The actual amount of bytes put into the buffer (Can be 0)</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if no critical failures occurred, POLARSSL_ERR_ENTROPY_SOURCE_FAILED otherwise </dd></dl> <p>Definition at line <a class="el" href="entropy_8h_source.html#l00103">103</a> of file <a class="el" href="entropy_8h_source.html">entropy.h</a>.</p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="a5a9c269e560537d59a4730faaa835fd5"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int entropy_add_source </td> <td>(</td> <td class="paramtype"><a class="el" href="structentropy__context.html">entropy_context</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="entropy_8h.html#a4267ff128fbe2ca4da2584359821d09d">f_source_ptr</a> </td> <td class="paramname"><em>f_source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>p_source</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>threshold</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Adds an entropy source to poll (Thread-safe if POLARSSL_THREADING_C is enabled) </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Entropy context </td></tr> <tr><td class="paramname">f_source</td><td>Entropy function </td></tr> <tr><td class="paramname">p_source</td><td>Function data </td></tr> <tr><td class="paramname">threshold</td><td>Minimum required from source before entropy is released ( with <a class="el" href="entropy_8h.html#a2b7d7123b31b42902364989975740fe2" title="Retrieve entropy from the accumulator (Maximum length: ENTROPY_BLOCK_SIZE) (Thread-safe if POLARSSL_T...">entropy_func()</a> )</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful or POLARSSL_ERR_ENTROPY_MAX_SOURCES </dd></dl> </div> </div> <a class="anchor" id="ace26c056043473a7f12be97117262fd4"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void entropy_free </td> <td>(</td> <td class="paramtype"><a class="el" href="structentropy__context.html">entropy_context</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free the data in the context. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Entropy context to free </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a2b7d7123b31b42902364989975740fe2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int entropy_func </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>output</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Retrieve entropy from the accumulator (Maximum length: ENTROPY_BLOCK_SIZE) (Thread-safe if POLARSSL_THREADING_C is enabled) </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">data</td><td>Entropy context </td></tr> <tr><td class="paramname">output</td><td>Buffer to fill </td></tr> <tr><td class="paramname">len</td><td>Number of bytes desired, must be at most ENTROPY_BLOCK_SIZE</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or POLARSSL_ERR_ENTROPY_SOURCE_FAILED </dd></dl> </div> </div> <a class="anchor" id="abe16e67991416febc3144c0c8888e792"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int entropy_gather </td> <td>(</td> <td class="paramtype"><a class="el" href="structentropy__context.html">entropy_context</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Trigger an extra gather poll for the accumulator (Thread-safe if POLARSSL_THREADING_C is enabled) </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Entropy context</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or POLARSSL_ERR_ENTROPY_SOURCE_FAILED </dd></dl> </div> </div> <a class="anchor" id="a07cc14e42768b04bbcc48a632ad8c442"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void entropy_init </td> <td>(</td> <td class="paramtype"><a class="el" href="structentropy__context.html">entropy_context</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Initialize the context. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Entropy context to initialize </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="aee40647ce61215ca2765e9ab3c84a47c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int entropy_self_test </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>verbose</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Checkup routine. </p> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or 1 if a test failed </dd></dl> </div> </div> <a class="anchor" id="a474ff02ff7707ebffd00672d8e46ddf3"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int entropy_update_manual </td> <td>(</td> <td class="paramtype"><a class="el" href="structentropy__context.html">entropy_context</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"><em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Add data to the accumulator manually (Thread-safe if POLARSSL_THREADING_C is enabled) </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Entropy context </td></tr> <tr><td class="paramname">data</td><td>Data to add </td></tr> <tr><td class="paramname">len</td><td>Length of data</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful </dd></dl> </div> </div> <a class="anchor" id="a5d16f198ece9ccdfe5f80780bf5cee33"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int entropy_update_seed_file </td> <td>(</td> <td class="paramtype"><a class="el" href="structentropy__context.html">entropy_context</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>path</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Read and update a seed file. </p> <p>Seed is added to this instance. No more than ENTROPY_MAX_SEED_SIZE bytes are read from the seed file. The rest is ignored.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Entropy context </td></tr> <tr><td class="paramname">path</td><td>Name of the file</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, POLARSSL_ERR_ENTROPY_FILE_IO_ERROR on file error, POLARSSL_ERR_ENTROPY_SOURCE_FAILED </dd></dl> </div> </div> <a class="anchor" id="aeec06418558ccfd52a9967ad54f197c4"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int entropy_write_seed_file </td> <td>(</td> <td class="paramtype"><a class="el" href="structentropy__context.html">entropy_context</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>path</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Write a seed file. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Entropy context </td></tr> <tr><td class="paramname">path</td><td>Name of the file</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, POLARSSL_ERR_ENTROPY_FILE_IO_ERROR on file error, or POLARSSL_ERR_ENTROPY_SOURCE_FAILED </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Thu Jul 31 2014 11:35:56 for PolarSSL v1.3.8 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.5 </small></address> </body> </html>