<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>gSOAP WS-Security: /Users/engelen/Projects/gsoap/doc/wsse/smdevp.c File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.8 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div> <h1>/Users/engelen/Projects/gsoap/doc/wsse/smdevp.c File Reference</h1><code>#include "<a class="el" href="smdevp_8h.html">smdevp.h</a>"</code><br> <p> Include dependency graph for smdevp.c:<p><center><img src="smdevp_8c__incl.png" border="0" usemap="#smdevp.c_map" alt="Include dependency graph"></center> <map name="smdevp.c_map"> <area href="smdevp_8h.html" shape="rect" coords="11,92,77,118" alt=""> </map> <table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a0">soap_smd_send</a> (struct soap *soap, const char *buf, size_t len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Callback to intercept messages for digest or signature computation. <a href="#a0"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>size_t </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a1">soap_smd_recv</a> (struct soap *soap, char *buf, size_t len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Dummy callback to avoid read operations from blocking. <a href="#a1"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a2">soap_smd_check</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, int err, const char *msg)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Check result of init/update/final smdevp engine operations. <a href="#a2"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>size_t </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a3">soap_smd_size</a> (int alg, const void *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of octets needed to store the digest or signature returned by soap_smd_end. <a href="#a3"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a4">soap_smd_begin</a> (struct soap *soap, int alg, const void *key, int keylen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Initiates a digest or signature computation. <a href="#a4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a5">soap_smd_end</a> (struct soap *soap, char *buf, int *len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Completes a digest or signature computation. <a href="#a5"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a6">soap_smd_init</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, int alg, const void *key, int keylen)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Initiates a (signed) digest computation. <a href="#a6"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a7">soap_smd_update</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, const char *buf, size_t len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updates (signed) digest computation with message part. <a href="#a7"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>int </td><td class="memItemRight" valign=bottom><a class="el" href="smdevp_8c.html#a8">soap_smd_final</a> (struct soap *soap, struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> *data, char *buf, int *len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Finalizes (signed) digest computation and returns digest or signature. <a href="#a8"></a><br></td></tr> </table> <hr><h2>Function Documentation</h2> <a class="anchor" name="a4" doxytag="smdevp.c::soap_smd_begin" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int soap_smd_begin </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>alg</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const void * </td> <td class="mdname" nowrap> <em>key</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>keylen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Initiates a digest or signature computation. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>soap</em> </td><td>context </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>alg</em> </td><td>is the digest or signature (sign/verification) algorithm used </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>key</em> </td><td>is a HMAC key or pointer to EVP_PKEY object or NULL for digests </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>keylen</em> </td><td>is the length of the HMAC key or 0 </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>SOAP_OK, SOAP_EOM, or SOAP_SSL_ERROR </dd></dl> </td> </tr> </table> <a class="anchor" name="a2" doxytag="smdevp.c::soap_smd_check" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int soap_smd_check </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> * </td> <td class="mdname" nowrap> <em>data</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>err</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>msg</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Check result of init/update/final smdevp engine operations. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>soap</em> </td><td>context </td></tr> <tr><td><tt>[in,out]</tt> </td><td valign=top><em>data</em> </td><td>smdevp engine context </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>err</em> </td><td>OpenSSL error value </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>msg</em> </td><td>error message </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl> </td> </tr> </table> <a class="anchor" name="a5" doxytag="smdevp.c::soap_smd_end" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int soap_smd_end </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Completes a digest or signature computation. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>soap</em> </td><td>context </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>buf</em> </td><td>contains signature for verification (when using a SOAP_SMD_VRFY algorithm) </td></tr> <tr><td><tt>[out]</tt> </td><td valign=top><em>buf</em> </td><td>is populated with the digest or signature </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>len</em> </td><td>points to length of signature to verify (when using a SOAP_SMD_VRFY algorithm) </td></tr> <tr><td><tt>[out]</tt> </td><td valign=top><em>len</em> </td><td>points to length of stored digest or signature (when not NULL) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>SOAP_OK, SOAP_USER_ERROR, or SOAP_SSL_ERROR </dd></dl> </td> </tr> </table> <a class="anchor" name="a8" doxytag="smdevp.c::soap_smd_final" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int soap_smd_final </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> * </td> <td class="mdname" nowrap> <em>data</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Finalizes (signed) digest computation and returns digest or signature. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>soap</em> </td><td>context </td></tr> <tr><td><tt>[in,out]</tt> </td><td valign=top><em>data</em> </td><td>smdevp engine context </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>buf</em> </td><td>contains signature for verification (SOAP_SMD_VRFY algorithms) </td></tr> <tr><td><tt>[out]</tt> </td><td valign=top><em>buf</em> </td><td>is populated with the digest or signature </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>len</em> </td><td>points to length of signature to verify (SOAP_SMD_VRFY algorithms) </td></tr> <tr><td><tt>[out]</tt> </td><td valign=top><em>len</em> </td><td>points to length of stored digest or signature (pass NULL if you are not interested in this value) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl> </td> </tr> </table> <a class="anchor" name="a6" doxytag="smdevp.c::soap_smd_init" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int soap_smd_init </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> * </td> <td class="mdname" nowrap> <em>data</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>alg</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const void * </td> <td class="mdname" nowrap> <em>key</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>keylen</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Initiates a (signed) digest computation. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>soap</em> </td><td>context </td></tr> <tr><td><tt>[in,out]</tt> </td><td valign=top><em>data</em> </td><td>smdevp engine context </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>alg</em> </td><td>is algorithm to use </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>key</em> </td><td>is key to use or NULL for digests </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>keylen</em> </td><td>is length of HMAC key (when provided) </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl> </td> </tr> </table> <a class="anchor" name="a1" doxytag="smdevp.c::soap_smd_recv" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> size_t soap_smd_recv </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Dummy callback to avoid read operations from blocking. <p> <dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl> </td> </tr> </table> <a class="anchor" name="a0" doxytag="smdevp.c::soap_smd_send" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int soap_smd_send </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [static]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Callback to intercept messages for digest or signature computation. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>soap</em> </td><td>context </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>buf</em> </td><td>message </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>len</em> </td><td>message length </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl> </td> </tr> </table> <a class="anchor" name="a3" doxytag="smdevp.c::soap_smd_size" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> size_t soap_smd_size </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">int </td> <td class="mdname" nowrap> <em>alg</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const void * </td> <td class="mdname" nowrap> <em>key</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Returns the number of octets needed to store the digest or signature returned by soap_smd_end. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td><tt>[in]</tt> </td><td valign=top><em>alg</em> </td><td>is the digest or signature algorithm to be used </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>key</em> </td><td>is a pointer to an EVP_PKEY object for RSA/DSA signatures or NULL for digests and HMAC </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>size_t number of octets that is needed to hold digest or signature </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="smdevp_8h.html#a14">soap_smd_end</a></dd></dl> The values returned for digests are SOAP_SMD_MD5_SIZE and SOAP_SMD_SHA1_SIZE. </td> </tr> </table> <a class="anchor" name="a7" doxytag="smdevp.c::soap_smd_update" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int soap_smd_update </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">struct soap * </td> <td class="mdname" nowrap> <em>soap</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>struct <a class="el" href="structsoap__smd__data.html">soap_smd_data</a> * </td> <td class="mdname" nowrap> <em>data</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const char * </td> <td class="mdname" nowrap> <em>buf</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>size_t </td> <td class="mdname" nowrap> <em>len</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Updates (signed) digest computation with message part. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td></td><td valign=top><em>soap</em> </td><td>context </td></tr> <tr><td><tt>[in,out]</tt> </td><td valign=top><em>data</em> </td><td>smdevp engine context </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>buf</em> </td><td>contains message part </td></tr> <tr><td><tt>[in]</tt> </td><td valign=top><em>len</em> </td><td>of message part </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>SOAP_OK or SOAP_SSL_ERROR </dd></dl> </td> </tr> </table> <hr size="1"><address style="align: right;"><small>Generated on Fri Aug 19 10:41:45 2005 for gSOAP WS-Security by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.8 </small></address> </body> </html>