blob: b94555f537aa90dc844a24f8c1dca941770bbece [file] [log] [blame]
<!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&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</td>
<td class="mdname" nowrap> <em>keylen</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td>context </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>alg</em>&nbsp;</td><td>is the digest or signature (sign/verification) algorithm used </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>key</em>&nbsp;</td><td>is a HMAC key or pointer to EVP_PKEY object or NULL for digests </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>keylen</em>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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> *&nbsp;</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&nbsp;</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 *&nbsp;</td>
<td class="mdname" nowrap> <em>msg</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [static]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td>context </td></tr>
<tr><td><tt>[in,out]</tt>&nbsp;</td><td valign=top><em>data</em>&nbsp;</td><td>smdevp engine context </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>err</em>&nbsp;</td><td>OpenSSL error value </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>msg</em>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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 *&nbsp;</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 *&nbsp;</td>
<td class="mdname" nowrap> <em>len</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td>context </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>buf</em>&nbsp;</td><td>contains signature for verification (when using a SOAP_SMD_VRFY algorithm) </td></tr>
<tr><td><tt>[out]</tt>&nbsp;</td><td valign=top><em>buf</em>&nbsp;</td><td>is populated with the digest or signature </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>len</em>&nbsp;</td><td>points to length of signature to verify (when using a SOAP_SMD_VRFY algorithm) </td></tr>
<tr><td><tt>[out]</tt>&nbsp;</td><td valign=top><em>len</em>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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> *&nbsp;</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 *&nbsp;</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 *&nbsp;</td>
<td class="mdname" nowrap> <em>len</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td>context </td></tr>
<tr><td><tt>[in,out]</tt>&nbsp;</td><td valign=top><em>data</em>&nbsp;</td><td>smdevp engine context </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>buf</em>&nbsp;</td><td>contains signature for verification (SOAP_SMD_VRFY algorithms) </td></tr>
<tr><td><tt>[out]</tt>&nbsp;</td><td valign=top><em>buf</em>&nbsp;</td><td>is populated with the digest or signature </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>len</em>&nbsp;</td><td>points to length of signature to verify (SOAP_SMD_VRFY algorithms) </td></tr>
<tr><td><tt>[out]</tt>&nbsp;</td><td valign=top><em>len</em>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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> *&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</td>
<td class="mdname" nowrap> <em>keylen</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td>context </td></tr>
<tr><td><tt>[in,out]</tt>&nbsp;</td><td valign=top><em>data</em>&nbsp;</td><td>smdevp engine context </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>alg</em>&nbsp;</td><td>is algorithm to use </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>key</em>&nbsp;</td><td>is key to use or NULL for digests </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>keylen</em>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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 *&nbsp;</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&nbsp;</td>
<td class="mdname" nowrap> <em>len</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [static]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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 *&nbsp;</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&nbsp;</td>
<td class="mdname" nowrap> <em>len</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"><code> [static]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td>context </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>buf</em>&nbsp;</td><td>message </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>len</em>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">int&nbsp;</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 *&nbsp;</td>
<td class="mdname" nowrap> <em>key</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td valign=top><em>alg</em>&nbsp;</td><td>is the digest or signature algorithm to be used </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>key</em>&nbsp;</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">(&nbsp;</td>
<td class="md" nowrap valign="top">struct soap *&nbsp;</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> *&nbsp;</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 *&nbsp;</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&nbsp;</td>
<td class="mdname" nowrap> <em>len</em></td>
</tr>
<tr>
<td></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</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>&nbsp;</td><td>context </td></tr>
<tr><td><tt>[in,out]</tt>&nbsp;</td><td valign=top><em>data</em>&nbsp;</td><td>smdevp engine context </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>buf</em>&nbsp;</td><td>contains message part </td></tr>
<tr><td><tt>[in]</tt>&nbsp;</td><td valign=top><em>len</em>&nbsp;</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>