<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Rampart/C: XML Signature</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>XML Signature<br>
<small>
[<a class="el" href="group__oxs.html">OMXMLSecurity</a>]</small>
</h1><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">AXIS2_EXTERN axis2_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oxs__xml__signature.html#g8477e097e2333ac0a99eb60f63293d22">oxs_xml_sig_sign</a> (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">AXIS2_EXTERN axis2_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oxs__xml__signature.html#g9b2365a3b9513242569352a3de6085a8">oxs_xml_sig_verify</a> (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">AXIS2_EXTERN axis2_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oxs__xml__signature.html#gd162cdf5fc01c4bdb3375883e886b6b3">oxs_xml_sig_verify_sign_part</a> (const axutil_env_t *env, oxs_sign_part_t *sign_part)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">AXIS2_EXTERN axis2_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oxs__xml__signature.html#gf7cf34d098eff93bba44369c2b151330">oxs_xml_sig_verify_digests</a> (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">AXIS2_EXTERN axis2_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oxs__xml__signature.html#ge5e49af674e44e1635367083c75ae2e6">oxs_xml_sig_process_ref_node</a> (const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">AXIS2_EXTERN axis2_status_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oxs__xml__signature.html#g953f4abdccfde654332019e03896d9db">oxs_xml_sig_process_signature_node</a> (const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)</td></tr>

</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="ge5e49af674e44e1635367083c75ae2e6"></a><!-- doxytag: member="oxs_xml_signature.h::oxs_xml_sig_process_ref_node" ref="ge5e49af674e44e1635367083c75ae2e6" args="(const axutil_env_t *env, oxs_sign_part_t *sign_part, axiom_node_t *ref_node, axiom_node_t *scope_node)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_ref_node           </td>
          <td>(</td>
          <td class="paramtype">const axutil_env_t *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">oxs_sign_part_t *&nbsp;</td>
          <td class="paramname"> <em>sign_part</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>ref_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>scope_node</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Process the ds:Reference node. Populate a signature part  pointer to environment struct  the signature part  the ds:Reference node  the root node in which the referenced are found <dl class="return" compact><dt><b>Returns:</b></dt><dd>AXIS2_SUCCESS on success, else AXIS2_FAILURE </dd></dl>

</div>
</div><p>
<a class="anchor" name="g953f4abdccfde654332019e03896d9db"></a><!-- doxytag: member="oxs_xml_signature.h::oxs_xml_sig_process_signature_node" ref="g953f4abdccfde654332019e03896d9db" args="(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_sig_process_signature_node           </td>
          <td>(</td>
          <td class="paramtype">const axutil_env_t *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">oxs_sign_ctx_t *&nbsp;</td>
          <td class="paramname"> <em>sign_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>signature_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>scope_node</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Process the ds:Signature node. Populate a signature context  pointer to environment struct  the signature context  the ds:Signature node  the root node in which the referenced are found <dl class="return" compact><dt><b>Returns:</b></dt><dd>AXIS2_SUCCESS on success, else AXIS2_FAILURE </dd></dl>

</div>
</div><p>
<a class="anchor" name="g8477e097e2333ac0a99eb60f63293d22"></a><!-- doxytag: member="oxs_xml_signature.h::oxs_xml_sig_sign" ref="g8477e097e2333ac0a99eb60f63293d22" args="(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *parent, axiom_node_t **sig_node)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_sig_sign           </td>
          <td>(</td>
          <td class="paramtype">const axutil_env_t *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">oxs_sign_ctx_t *&nbsp;</td>
          <td class="paramname"> <em>sign_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>parent</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t **&nbsp;</td>
          <td class="paramname"> <em>sig_node</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sign according to the information available in the .  pointer to environment struct  the signature context  the node that the ds:Signature element should be attached.  a reference to the ds:Signature node <dl class="return" compact><dt><b>Returns:</b></dt><dd>AXIS2_SUCCESS on success, else AXIS2_FAILURE </dd></dl>

</div>
</div><p>
<a class="anchor" name="g9b2365a3b9513242569352a3de6085a8"></a><!-- doxytag: member="oxs_xml_signature.h::oxs_xml_sig_verify" ref="g9b2365a3b9513242569352a3de6085a8" args="(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx, axiom_node_t *signature_node, axiom_node_t *scope_node)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify           </td>
          <td>(</td>
          <td class="paramtype">const axutil_env_t *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">oxs_sign_ctx_t *&nbsp;</td>
          <td class="paramname"> <em>sign_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>signature_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>scope_node</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Verify a complete xml document  pointer to environment struct  the signature context  the ds:Signature node  the root node in which the referenced are found <dl class="return" compact><dt><b>Returns:</b></dt><dd>AXIS2_SUCCESS on success, else AXIS2_FAILURE </dd></dl>

</div>
</div><p>
<a class="anchor" name="gf7cf34d098eff93bba44369c2b151330"></a><!-- doxytag: member="oxs_xml_signature.h::oxs_xml_sig_verify_digests" ref="gf7cf34d098eff93bba44369c2b151330" args="(const axutil_env_t *env, oxs_sign_ctx_t *sign_ctx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_digests           </td>
          <td>(</td>
          <td class="paramtype">const axutil_env_t *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">oxs_sign_ctx_t *&nbsp;</td>
          <td class="paramname"> <em>sign_ctx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Verify all digests in signature parts of a single signature context   pointer to environment struct  the signature context <dl class="return" compact><dt><b>Returns:</b></dt><dd>AXIS2_SUCCESS on success, else AXIS2_FAILURE </dd></dl>

</div>
</div><p>
<a class="anchor" name="gd162cdf5fc01c4bdb3375883e886b6b3"></a><!-- doxytag: member="oxs_xml_signature.h::oxs_xml_sig_verify_sign_part" ref="gd162cdf5fc01c4bdb3375883e886b6b3" args="(const axutil_env_t *env, oxs_sign_part_t *sign_part)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_sig_verify_sign_part           </td>
          <td>(</td>
          <td class="paramtype">const axutil_env_t *&nbsp;</td>
          <td class="paramname"> <em>env</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">oxs_sign_part_t *&nbsp;</td>
          <td class="paramname"> <em>sign_part</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Verify a single signature part . Do transforms, Generate digest and compare with the digest in hand  pointer to environment struct  the signature part <dl class="return" compact><dt><b>Returns:</b></dt><dd>AXIS2_SUCCESS on success, else AXIS2_FAILURE </dd></dl>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 13 10:52:54 2009 for Rampart/C by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>
</html>
