<!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: md.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="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">md.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Generic message digest wrapper. <a href="#details">More...</a></p> <div class="textblock"><code>#include <string.h></code><br/> </div><div class="textblock"><div class="dynheader"> Include dependency graph for md.h:</div> <div class="dyncontent"> <div class="center"><img src="md_8h__incl.png" border="0" usemap="#md_8h" alt=""/></div> <map name="md_8h" id="md_8h"> </map> </div> </div><div class="textblock"><div class="dynheader"> This graph shows which files directly or indirectly include this file:</div> <div class="dyncontent"> <div class="center"><img src="md_8h__dep__incl.png" border="0" usemap="#md_8hdep" alt=""/></div> <map name="md_8hdep" id="md_8hdep"> </map> </div> </div> <p><a href="md_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="structmd__info__t.html">md_info_t</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Message digest information. <a href="structmd__info__t.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="structmd__context__t.html">md_context_t</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Generic message digest context. <a href="structmd__context__t.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:ab39743e52520134a277e9141a6098e3e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ab39743e52520134a277e9141a6098e3e">POLARSSL_ERR_MD_FEATURE_UNAVAILABLE</a>   -0x5080</td></tr> <tr class="memdesc:ab39743e52520134a277e9141a6098e3e"><td class="mdescLeft"> </td><td class="mdescRight">The selected feature is not available. <a href="#ab39743e52520134a277e9141a6098e3e">More...</a><br/></td></tr> <tr class="separator:ab39743e52520134a277e9141a6098e3e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab5508cadb87f35ff11cd08a1a06f227f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ab5508cadb87f35ff11cd08a1a06f227f">POLARSSL_ERR_MD_BAD_INPUT_DATA</a>   -0x5100</td></tr> <tr class="memdesc:ab5508cadb87f35ff11cd08a1a06f227f"><td class="mdescLeft"> </td><td class="mdescRight">Bad input parameters to function. <a href="#ab5508cadb87f35ff11cd08a1a06f227f">More...</a><br/></td></tr> <tr class="separator:ab5508cadb87f35ff11cd08a1a06f227f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad767a78d57c228eee2917bc5ffd8096c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ad767a78d57c228eee2917bc5ffd8096c">POLARSSL_ERR_MD_ALLOC_FAILED</a>   -0x5180</td></tr> <tr class="memdesc:ad767a78d57c228eee2917bc5ffd8096c"><td class="mdescLeft"> </td><td class="mdescRight">Failed to allocate memory. <a href="#ad767a78d57c228eee2917bc5ffd8096c">More...</a><br/></td></tr> <tr class="separator:ad767a78d57c228eee2917bc5ffd8096c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6a5aabd94dcc264d8a2e4e335eb995c9"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a6a5aabd94dcc264d8a2e4e335eb995c9">POLARSSL_ERR_MD_FILE_IO_ERROR</a>   -0x5200</td></tr> <tr class="memdesc:a6a5aabd94dcc264d8a2e4e335eb995c9"><td class="mdescLeft"> </td><td class="mdescRight">Opening or reading of file failed. <a href="#a6a5aabd94dcc264d8a2e4e335eb995c9">More...</a><br/></td></tr> <tr class="separator:a6a5aabd94dcc264d8a2e4e335eb995c9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a38c76a15d6a3874f898f3dc60750dde1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a38c76a15d6a3874f898f3dc60750dde1">POLARSSL_MD_MAX_SIZE</a>   32 /* longest known is SHA256 or less */</td></tr> <tr class="separator:a38c76a15d6a3874f898f3dc60750dde1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a45b0c403a33ff1f73947597785cf5ca7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a45b0c403a33ff1f73947597785cf5ca7">MD_CONTEXT_T_INIT</a></td></tr> <tr class="separator:a45b0c403a33ff1f73947597785cf5ca7"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:af1fbbb67afa0daee4090cde8864e0b68"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68">md_type_t</a> { <br/>   <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68a1058b903a7b49716f1b75cca6e80c4e8">POLARSSL_MD_NONE</a> =0, <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68a8cee399348deda81a3a9387f5f62c4ed">POLARSSL_MD_MD2</a>, <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68a950750fc672ded2a047cdcbc7a882056">POLARSSL_MD_MD4</a>, <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68a0d510303f8b4b1c116d221885e2e2362">POLARSSL_MD_MD5</a>, <br/>   <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68a3d59000e02cfa0867e14002d95046335">POLARSSL_MD_SHA1</a>, <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68a189a54c5ec3192fa118f99b7700f63e9">POLARSSL_MD_SHA224</a>, <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68aff5f5aee7490eb80eb5605eaf309bde2">POLARSSL_MD_SHA256</a>, <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68a45ba66979c5c1af786e9fb4fa5820960">POLARSSL_MD_SHA384</a>, <br/>   <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68aff33aab12be4e789a70ff84825c09e3b">POLARSSL_MD_SHA512</a>, <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68ad5febc58217d33ff1a980b5c0dd49c5a">POLARSSL_MD_RIPEMD160</a> <br/> }</td></tr> <tr class="separator:af1fbbb67afa0daee4090cde8864e0b68"><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:a5d1f7e44d913c6621403773374b89b3e"><td class="memItemLeft" align="right" valign="top">const int * </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a5d1f7e44d913c6621403773374b89b3e">md_list</a> (void)</td></tr> <tr class="memdesc:a5d1f7e44d913c6621403773374b89b3e"><td class="mdescLeft"> </td><td class="mdescRight">Returns the list of digests supported by the generic digest module. <a href="#a5d1f7e44d913c6621403773374b89b3e">More...</a><br/></td></tr> <tr class="separator:a5d1f7e44d913c6621403773374b89b3e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7fa2d1cb9d20d49cf0a1d26bb2080b81"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a7fa2d1cb9d20d49cf0a1d26bb2080b81">md_info_from_string</a> (const char *md_name)</td></tr> <tr class="memdesc:a7fa2d1cb9d20d49cf0a1d26bb2080b81"><td class="mdescLeft"> </td><td class="mdescRight">Returns the message digest information associated with the given digest name. <a href="#a7fa2d1cb9d20d49cf0a1d26bb2080b81">More...</a><br/></td></tr> <tr class="separator:a7fa2d1cb9d20d49cf0a1d26bb2080b81"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a622c94870533dc68f54b8df520d2c6d9"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a622c94870533dc68f54b8df520d2c6d9">md_info_from_type</a> (<a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68">md_type_t</a> md_type)</td></tr> <tr class="memdesc:a622c94870533dc68f54b8df520d2c6d9"><td class="mdescLeft"> </td><td class="mdescRight">Returns the message digest information associated with the given digest type. <a href="#a622c94870533dc68f54b8df520d2c6d9">More...</a><br/></td></tr> <tr class="separator:a622c94870533dc68f54b8df520d2c6d9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae75802b88b5126acc245530be7d9607b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ae75802b88b5126acc245530be7d9607b">md_init</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx)</td></tr> <tr class="memdesc:ae75802b88b5126acc245530be7d9607b"><td class="mdescLeft"> </td><td class="mdescRight">Initialize a md_context (as NONE) <a href="#ae75802b88b5126acc245530be7d9607b">More...</a><br/></td></tr> <tr class="separator:ae75802b88b5126acc245530be7d9607b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac4b9dc3bf86a40ac6829eba973b8579e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ac4b9dc3bf86a40ac6829eba973b8579e">md_free</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx)</td></tr> <tr class="memdesc:ac4b9dc3bf86a40ac6829eba973b8579e"><td class="mdescLeft"> </td><td class="mdescRight">Free and clear the message-specific context of ctx. <a href="#ac4b9dc3bf86a40ac6829eba973b8579e">More...</a><br/></td></tr> <tr class="separator:ac4b9dc3bf86a40ac6829eba973b8579e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7c956b5c92531111312324c91b6d83f9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a7c956b5c92531111312324c91b6d83f9">md_init_ctx</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx, const <a class="el" href="structmd__info__t.html">md_info_t</a> *md_info)</td></tr> <tr class="memdesc:a7c956b5c92531111312324c91b6d83f9"><td class="mdescLeft"> </td><td class="mdescRight">Initialises and fills the message digest context structure with the appropriate values. <a href="#a7c956b5c92531111312324c91b6d83f9">More...</a><br/></td></tr> <tr class="separator:a7c956b5c92531111312324c91b6d83f9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3312061daf9ecc722c025cdbee9c38cc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a3312061daf9ecc722c025cdbee9c38cc">md_free_ctx</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx)</td></tr> <tr class="memdesc:a3312061daf9ecc722c025cdbee9c38cc"><td class="mdescLeft"> </td><td class="mdescRight">Free the message-specific context of ctx. <a href="#a3312061daf9ecc722c025cdbee9c38cc">More...</a><br/></td></tr> <tr class="separator:a3312061daf9ecc722c025cdbee9c38cc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3e688fee63e53a616d031d6319c07372"><td class="memItemLeft" align="right" valign="top">static unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a3e688fee63e53a616d031d6319c07372">md_get_size</a> (const <a class="el" href="structmd__info__t.html">md_info_t</a> *md_info)</td></tr> <tr class="memdesc:a3e688fee63e53a616d031d6319c07372"><td class="mdescLeft"> </td><td class="mdescRight">Returns the size of the message digest output. <a href="#a3e688fee63e53a616d031d6319c07372">More...</a><br/></td></tr> <tr class="separator:a3e688fee63e53a616d031d6319c07372"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9ee533b0b5982099a1c21563cceb13a2"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68">md_type_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a9ee533b0b5982099a1c21563cceb13a2">md_get_type</a> (const <a class="el" href="structmd__info__t.html">md_info_t</a> *md_info)</td></tr> <tr class="memdesc:a9ee533b0b5982099a1c21563cceb13a2"><td class="mdescLeft"> </td><td class="mdescRight">Returns the type of the message digest output. <a href="#a9ee533b0b5982099a1c21563cceb13a2">More...</a><br/></td></tr> <tr class="separator:a9ee533b0b5982099a1c21563cceb13a2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a43934282608bdb54740410336fdffc60"><td class="memItemLeft" align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a43934282608bdb54740410336fdffc60">md_get_name</a> (const <a class="el" href="structmd__info__t.html">md_info_t</a> *md_info)</td></tr> <tr class="memdesc:a43934282608bdb54740410336fdffc60"><td class="mdescLeft"> </td><td class="mdescRight">Returns the name of the message digest output. <a href="#a43934282608bdb54740410336fdffc60">More...</a><br/></td></tr> <tr class="separator:a43934282608bdb54740410336fdffc60"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4362ff554b0e3b934a1e3c3b6496fa42"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a4362ff554b0e3b934a1e3c3b6496fa42">md_starts</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx)</td></tr> <tr class="memdesc:a4362ff554b0e3b934a1e3c3b6496fa42"><td class="mdescLeft"> </td><td class="mdescRight">Set-up the given context for a new message digest. <a href="#a4362ff554b0e3b934a1e3c3b6496fa42">More...</a><br/></td></tr> <tr class="separator:a4362ff554b0e3b934a1e3c3b6496fa42"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aeee048646a981f3aa4810609e3bf8787"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#aeee048646a981f3aa4810609e3bf8787">md_update</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx, const unsigned char *input, size_t ilen)</td></tr> <tr class="memdesc:aeee048646a981f3aa4810609e3bf8787"><td class="mdescLeft"> </td><td class="mdescRight">Generic message digest process buffer. <a href="#aeee048646a981f3aa4810609e3bf8787">More...</a><br/></td></tr> <tr class="separator:aeee048646a981f3aa4810609e3bf8787"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac8d5acb64d8b392ab9e957e1368644ed"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ac8d5acb64d8b392ab9e957e1368644ed">md_finish</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx, unsigned char *output)</td></tr> <tr class="memdesc:ac8d5acb64d8b392ab9e957e1368644ed"><td class="mdescLeft"> </td><td class="mdescRight">Generic message digest final digest. <a href="#ac8d5acb64d8b392ab9e957e1368644ed">More...</a><br/></td></tr> <tr class="separator:ac8d5acb64d8b392ab9e957e1368644ed"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aae13853f5988bdef5c27ee475ba1295f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#aae13853f5988bdef5c27ee475ba1295f">md</a> (const <a class="el" href="structmd__info__t.html">md_info_t</a> *md_info, const unsigned char *input, size_t ilen, unsigned char *output)</td></tr> <tr class="memdesc:aae13853f5988bdef5c27ee475ba1295f"><td class="mdescLeft"> </td><td class="mdescRight">Output = message_digest( input buffer ) <a href="#aae13853f5988bdef5c27ee475ba1295f">More...</a><br/></td></tr> <tr class="separator:aae13853f5988bdef5c27ee475ba1295f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa00ef1f33bec9fda7083115fb507e193"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#aa00ef1f33bec9fda7083115fb507e193">md_file</a> (const <a class="el" href="structmd__info__t.html">md_info_t</a> *md_info, const char *path, unsigned char *output)</td></tr> <tr class="memdesc:aa00ef1f33bec9fda7083115fb507e193"><td class="mdescLeft"> </td><td class="mdescRight">Output = message_digest( file contents ) <a href="#aa00ef1f33bec9fda7083115fb507e193">More...</a><br/></td></tr> <tr class="separator:aa00ef1f33bec9fda7083115fb507e193"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8debd6277357faa47333bb4919b82058"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a8debd6277357faa47333bb4919b82058">md_hmac_starts</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx, const unsigned char *key, size_t keylen)</td></tr> <tr class="memdesc:a8debd6277357faa47333bb4919b82058"><td class="mdescLeft"> </td><td class="mdescRight">Generic HMAC context setup. <a href="#a8debd6277357faa47333bb4919b82058">More...</a><br/></td></tr> <tr class="separator:a8debd6277357faa47333bb4919b82058"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4a371673a6250979460217e4e74a0d33"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a4a371673a6250979460217e4e74a0d33">md_hmac_update</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx, const unsigned char *input, size_t ilen)</td></tr> <tr class="memdesc:a4a371673a6250979460217e4e74a0d33"><td class="mdescLeft"> </td><td class="mdescRight">Generic HMAC process buffer. <a href="#a4a371673a6250979460217e4e74a0d33">More...</a><br/></td></tr> <tr class="separator:a4a371673a6250979460217e4e74a0d33"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae4d71986a47097a6c320965c9656c81e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ae4d71986a47097a6c320965c9656c81e">md_hmac_finish</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx, unsigned char *output)</td></tr> <tr class="memdesc:ae4d71986a47097a6c320965c9656c81e"><td class="mdescLeft"> </td><td class="mdescRight">Generic HMAC final digest. <a href="#ae4d71986a47097a6c320965c9656c81e">More...</a><br/></td></tr> <tr class="separator:ae4d71986a47097a6c320965c9656c81e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2731cd88efb4f40f948789766cde73da"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#a2731cd88efb4f40f948789766cde73da">md_hmac_reset</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx)</td></tr> <tr class="memdesc:a2731cd88efb4f40f948789766cde73da"><td class="mdescLeft"> </td><td class="mdescRight">Generic HMAC context reset. <a href="#a2731cd88efb4f40f948789766cde73da">More...</a><br/></td></tr> <tr class="separator:a2731cd88efb4f40f948789766cde73da"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad05947898bd5b20b3fd5f88f538932c8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ad05947898bd5b20b3fd5f88f538932c8">md_hmac</a> (const <a class="el" href="structmd__info__t.html">md_info_t</a> *md_info, const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char *output)</td></tr> <tr class="memdesc:ad05947898bd5b20b3fd5f88f538932c8"><td class="mdescLeft"> </td><td class="mdescRight">Output = Generic_HMAC( hmac key, input buffer ) <a href="#ad05947898bd5b20b3fd5f88f538932c8">More...</a><br/></td></tr> <tr class="separator:ad05947898bd5b20b3fd5f88f538932c8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac6420107a39b25a6b5f0e7594338ef10"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="md_8h.html#ac6420107a39b25a6b5f0e7594338ef10">md_process</a> (<a class="el" href="structmd__context__t.html">md_context_t</a> *ctx, const unsigned char *data)</td></tr> <tr class="separator:ac6420107a39b25a6b5f0e7594338ef10"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Generic message digest wrapper. </p> <dl class="section author"><dt>Author</dt><dd>Adriaan de Jong <a href="#" onclick="location.href='mai'+'lto:'+'dej'+'on'+'g@f'+'ox'+'-it'+'.c'+'om'; return false;">dejon<span style="display: none;">.nosp@m.</span>g@fo<span style="display: none;">.nosp@m.</span>x-it.<span style="display: none;">.nosp@m.</span>com</a></dd></dl> <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="md_8h_source.html">md.h</a>.</p> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a class="anchor" id="a45b0c403a33ff1f73947597785cf5ca7"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MD_CONTEXT_T_INIT</td> </tr> </table> </div><div class="memdoc"> <b>Value:</b><div class="fragment"><div class="line">{ \</div> <div class="line"> NULL, <span class="comment">/* md_info */</span> \</div> <div class="line"> NULL, <span class="comment">/* md_ctx */</span> \</div> <div class="line">}</div> </div><!-- fragment --> <p>Definition at line <a class="el" href="md_8h_source.html#l00140">140</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> </div> </div> <a class="anchor" id="ad767a78d57c228eee2917bc5ffd8096c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_MD_ALLOC_FAILED   -0x5180</td> </tr> </table> </div><div class="memdoc"> <p>Failed to allocate memory. </p> <p>Definition at line <a class="el" href="md_8h_source.html#l00044">44</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> </div> </div> <a class="anchor" id="ab5508cadb87f35ff11cd08a1a06f227f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_MD_BAD_INPUT_DATA   -0x5100</td> </tr> </table> </div><div class="memdoc"> <p>Bad input parameters to function. </p> <p>Definition at line <a class="el" href="md_8h_source.html#l00043">43</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> </div> </div> <a class="anchor" id="ab39743e52520134a277e9141a6098e3e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_MD_FEATURE_UNAVAILABLE   -0x5080</td> </tr> </table> </div><div class="memdoc"> <p>The selected feature is not available. </p> <p>Definition at line <a class="el" href="md_8h_source.html#l00042">42</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> </div> </div> <a class="anchor" id="a6a5aabd94dcc264d8a2e4e335eb995c9"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_ERR_MD_FILE_IO_ERROR   -0x5200</td> </tr> </table> </div><div class="memdoc"> <p>Opening or reading of file failed. </p> <p>Definition at line <a class="el" href="md_8h_source.html#l00045">45</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> </div> </div> <a class="anchor" id="a38c76a15d6a3874f898f3dc60750dde1"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define POLARSSL_MD_MAX_SIZE   32 /* longest known is SHA256 or less */</td> </tr> </table> </div><div class="memdoc"> <p>Definition at line <a class="el" href="md_8h_source.html#l00067">67</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> </div> </div> <h2 class="groupheader">Enumeration Type Documentation</h2> <a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68">md_type_t</a></td> </tr> </table> </div><div class="memdoc"> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68a1058b903a7b49716f1b75cca6e80c4e8"></a>POLARSSL_MD_NONE</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68a8cee399348deda81a3a9387f5f62c4ed"></a>POLARSSL_MD_MD2</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68a950750fc672ded2a047cdcbc7a882056"></a>POLARSSL_MD_MD4</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68a0d510303f8b4b1c116d221885e2e2362"></a>POLARSSL_MD_MD5</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68a3d59000e02cfa0867e14002d95046335"></a>POLARSSL_MD_SHA1</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68a189a54c5ec3192fa118f99b7700f63e9"></a>POLARSSL_MD_SHA224</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68aff5f5aee7490eb80eb5605eaf309bde2"></a>POLARSSL_MD_SHA256</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68a45ba66979c5c1af786e9fb4fa5820960"></a>POLARSSL_MD_SHA384</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68aff33aab12be4e789a70ff84825c09e3b"></a>POLARSSL_MD_SHA512</em> </td><td class="fielddoc"> </td></tr> <tr><td class="fieldname"><em><a class="anchor" id="af1fbbb67afa0daee4090cde8864e0b68ad5febc58217d33ff1a980b5c0dd49c5a"></a>POLARSSL_MD_RIPEMD160</em> </td><td class="fielddoc"> </td></tr> </table> <p>Definition at line <a class="el" href="md_8h_source.html#l00051">51</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="aae13853f5988bdef5c27ee475ba1295f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td> <td class="paramname"><em>md_info</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"><em>input</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>ilen</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></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Output = message_digest( input buffer ) </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_info</td><td>message digest info </td></tr> <tr><td class="paramname">input</td><td>buffer holding the data </td></tr> <tr><td class="paramname">ilen</td><td>length of the input data </td></tr> <tr><td class="paramname">output</td><td>Generic message digest checksum result</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="aa00ef1f33bec9fda7083115fb507e193"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_file </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td> <td class="paramname"><em>md_info</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 class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>output</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Output = message_digest( file contents ) </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_info</td><td>message digest info </td></tr> <tr><td class="paramname">path</td><td>input file name </td></tr> <tr><td class="paramname">output</td><td>generic message digest checksum result</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, POLARSSL_ERR_MD_FILE_OPEN_FAILED if fopen failed, POLARSSL_ERR_MD_FILE_READ_FAILED if fread failed, POLARSSL_ERR_MD_BAD_INPUT_DATA if md_info was NULL. </dd></dl> </div> </div> <a class="anchor" id="ac8d5acb64d8b392ab9e957e1368644ed"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_finish </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</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></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generic message digest final digest. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Generic message digest context </td></tr> <tr><td class="paramname">output</td><td>Generic message digest checksum result</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="ac4b9dc3bf86a40ac6829eba973b8579e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void md_free </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free and clear the message-specific context of ctx. </p> <p>Freeing ctx itself remains the responsibility of the caller. </p> </div> </div> <a class="anchor" id="a3312061daf9ecc722c025cdbee9c38cc"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_free_ctx </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free the message-specific context of ctx. </p> <p>Freeing ctx itself remains the responsibility of the caller.</p> <dl class="section note"><dt>Note</dt><dd>Deprecated: Redirects to <a class="el" href="md_8h.html#ac4b9dc3bf86a40ac6829eba973b8579e" title="Free and clear the message-specific context of ctx. ">md_free()</a></dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Free the message-specific context</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 </dd></dl> </div> </div> <a class="anchor" id="a43934282608bdb54740410336fdffc60"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static const char* md_get_name </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td> <td class="paramname"><em>md_info</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Returns the name of the message digest output. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_info</td><td>message digest info</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>name of the message digest output. </dd></dl> <p>Definition at line <a class="el" href="md_8h_source.html#l00255">255</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> <p>References <a class="el" href="md_8h_source.html#l00079">md_info_t::name</a>.</p> </div> </div> <a class="anchor" id="a3e688fee63e53a616d031d6319c07372"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static unsigned char md_get_size </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td> <td class="paramname"><em>md_info</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Returns the size of the message digest output. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_info</td><td>message digest info</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>size of the message digest output. </dd></dl> <p>Definition at line <a class="el" href="md_8h_source.html#l00225">225</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> <p>References <a class="el" href="md_8h_source.html#l00082">md_info_t::size</a>.</p> </div> </div> <a class="anchor" id="a9ee533b0b5982099a1c21563cceb13a2"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68">md_type_t</a> md_get_type </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td> <td class="paramname"><em>md_info</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Returns the type of the message digest output. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_info</td><td>message digest info</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>type of the message digest output. </dd></dl> <p>Definition at line <a class="el" href="md_8h_source.html#l00240">240</a> of file <a class="el" href="md_8h_source.html">md.h</a>.</p> <p>References <a class="el" href="md_8h_source.html#l00052">POLARSSL_MD_NONE</a>, and <a class="el" href="md_8h_source.html#l00076">md_info_t::type</a>.</p> </div> </div> <a class="anchor" id="ad05947898bd5b20b3fd5f88f538932c8"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_hmac </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td> <td class="paramname"><em>md_info</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"><em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>keylen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"><em>input</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>ilen</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></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Output = Generic_HMAC( hmac key, input buffer ) </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_info</td><td>message digest info </td></tr> <tr><td class="paramname">key</td><td>HMAC secret key </td></tr> <tr><td class="paramname">keylen</td><td>length of the HMAC key </td></tr> <tr><td class="paramname">input</td><td>buffer holding the data </td></tr> <tr><td class="paramname">ilen</td><td>length of the input data </td></tr> <tr><td class="paramname">output</td><td>Generic HMAC-result</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="ae4d71986a47097a6c320965c9656c81e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_hmac_finish </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</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></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generic HMAC final digest. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>HMAC context </td></tr> <tr><td class="paramname">output</td><td>Generic HMAC checksum result</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="a2731cd88efb4f40f948789766cde73da"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_hmac_reset </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Generic HMAC context reset. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>HMAC context to be reset</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="a8debd6277357faa47333bb4919b82058"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_hmac_starts </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</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>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>keylen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generic HMAC context setup. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>HMAC context to be initialized </td></tr> <tr><td class="paramname">key</td><td>HMAC secret key </td></tr> <tr><td class="paramname">keylen</td><td>length of the HMAC key</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="a4a371673a6250979460217e4e74a0d33"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_hmac_update </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</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>input</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>ilen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generic HMAC process buffer. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>HMAC context </td></tr> <tr><td class="paramname">input</td><td>buffer holding the data </td></tr> <tr><td class="paramname">ilen</td><td>length of the input data</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="a7fa2d1cb9d20d49cf0a1d26bb2080b81"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="structmd__info__t.html">md_info_t</a>* md_info_from_string </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>md_name</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the message digest information associated with the given digest name. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_name</td><td>Name of the digest to search for.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The message digest information associated with md_name or NULL if not found. </dd></dl> </div> </div> <a class="anchor" id="a622c94870533dc68f54b8df520d2c6d9"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="structmd__info__t.html">md_info_t</a>* md_info_from_type </td> <td>(</td> <td class="paramtype"><a class="el" href="md_8h.html#af1fbbb67afa0daee4090cde8864e0b68">md_type_t</a> </td> <td class="paramname"><em>md_type</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the message digest information associated with the given digest type. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">md_type</td><td>type of digest to search for.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The message digest information associated with md_type or NULL if not found. </dd></dl> </div> </div> <a class="anchor" id="ae75802b88b5126acc245530be7d9607b"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void md_init </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Initialize a md_context (as NONE) </p> </div> </div> <a class="anchor" id="a7c956b5c92531111312324c91b6d83f9"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_init_ctx </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmd__info__t.html">md_info_t</a> * </td> <td class="paramname"><em>md_info</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Initialises and fills the message digest context structure with the appropriate values. </p> <dl class="section note"><dt>Note</dt><dd>Currently also clears structure. In future versions you will be required to call <a class="el" href="md_8h.html#ae75802b88b5126acc245530be7d9607b" title="Initialize a md_context (as NONE) ">md_init()</a> on the structure first.</dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>context to initialise. May not be NULL. The digest-specific context (ctx->md_ctx) must be NULL. It will be allocated, and must be freed using <a class="el" href="md_8h.html#a3312061daf9ecc722c025cdbee9c38cc" title="Free the message-specific context of ctx. ">md_free_ctx()</a> later. </td></tr> <tr><td class="paramname">md_info</td><td>message digest to use.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd><code>0</code> on success, <code>POLARSSL_ERR_MD_BAD_INPUT_DATA</code> on parameter failure, <code>POLARSSL_ERR_MD_ALLOC_FAILED</code> if allocation of the digest-specific context failed. </dd></dl> </div> </div> <a class="anchor" id="a5d1f7e44d913c6621403773374b89b3e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const int* md_list </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the list of digests supported by the generic digest module. </p> <dl class="section return"><dt>Returns</dt><dd>a statically allocated array of digests, the last entry is 0. </dd></dl> </div> </div> <a class="anchor" id="ac6420107a39b25a6b5f0e7594338ef10"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_process </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</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></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a4362ff554b0e3b934a1e3c3b6496fa42"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_starts </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</a> * </td> <td class="paramname"><em>ctx</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Set-up the given context for a new message digest. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>generic message digest context.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </dd></dl> </div> </div> <a class="anchor" id="aeee048646a981f3aa4810609e3bf8787"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int md_update </td> <td>(</td> <td class="paramtype"><a class="el" href="structmd__context__t.html">md_context_t</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>input</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>ilen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generic message digest process buffer. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ctx</td><td>Generic message digest context </td></tr> <tr><td class="paramname">input</td><td>buffer holding the datal </td></tr> <tr><td class="paramname">ilen</td><td>length of the input data</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, POLARSSL_ERR_MD_BAD_INPUT_DATA if parameter verification fails. </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>