<!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 Encryption</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 Encryption<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__encryption.html#gf1d0dc87c3df459e634ad5cf6da483ad">oxs_xml_enc_encrypt_node</a> (const axutil_env_t *env, <a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *key_reference_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__encryption.html#g656d25ac5f1ea1130e597cfa7daaacf3">oxs_xml_enc_decrypt_node</a> (const axutil_env_t *env, <a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_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__encryption.html#g23a655fe1363591788d506833529b6ad">oxs_xml_enc_encrypt_data</a> (const axutil_env_t *env, <a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *enc_ctx, <a class="el" href="group__oxs__buffer.html#g0c4b78066ec1762a58cbec685dd60537">oxs_buffer_t</a> *content_buf, axiom_node_t **enc_type_node, axiom_node_t *key_reference_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__encryption.html#ge9f8332c6f84f2c16b7dfd4741e0d677">oxs_xml_enc_decrypt_data</a> (const axutil_env_t *env, <a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *enc_ctx, axiom_node_t *enc_type_node, <a class="el" href="group__oxs__buffer.html#g0c4b78066ec1762a58cbec685dd60537">oxs_buffer_t</a> *result_buf)</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__encryption.html#g773121d21a842d0959dc57e2c75c1657">oxs_xml_enc_encrypt_key</a> (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, <a class="el" href="group__oxs__key.html#g6336c79b9592fb630903079b14a99206">oxs_key_t</a> *sym_key, axutil_array_list_t *id_list)</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__encryption.html#geddda5177bb714f8b1e1dfc086d87912">oxs_xml_enc_decrypt_key</a> (const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, <a class="el" href="group__oxs__key.html#g6336c79b9592fb630903079b14a99206">oxs_key_t</a> *key)</td></tr>

</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="ge9f8332c6f84f2c16b7dfd4741e0d677"></a><!-- doxytag: member="oxs_xml_encryption.h::oxs_xml_enc_decrypt_data" ref="ge9f8332c6f84f2c16b7dfd4741e0d677" args="(const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, oxs_buffer_t *result_buf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_data           </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"><a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>enc_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>enc_type_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__oxs__buffer.html#g0c4b78066ec1762a58cbec685dd60537">oxs_buffer_t</a> *&nbsp;</td>
          <td class="paramname"> <em>result_buf</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>
Decrypts  and places the data inside the  The name of the method is bit tricky as it doesn't exactly decrypts a data buffer. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>pointer to environment struct </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_ctx</em>&nbsp;</td><td>encryption context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_type_node</em>&nbsp;</td><td>the EncryptedData node which needs to be decrypted </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>result_buf</em>&nbsp;</td><td>the buffer to keep the decrypted content </td></tr>
  </table>
</dl>
<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="geddda5177bb714f8b1e1dfc086d87912"></a><!-- doxytag: member="oxs_xml_encryption.h::oxs_xml_enc_decrypt_key" ref="geddda5177bb714f8b1e1dfc086d87912" args="(const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, axiom_node_t *encrypted_key_node, oxs_key_t *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_key           </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_asym_ctx_t *&nbsp;</td>
          <td class="paramname"> <em>asym_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>encrypted_key_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__oxs__key.html#g6336c79b9592fb630903079b14a99206">oxs_key_t</a> *&nbsp;</td>
          <td class="paramname"> <em>key</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>
Decrypts a key/data in asymmetric way as specified in . This method is specifically written to support the key decryption in WS-Secruity <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>pointer to environment struct </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_ctx</em>&nbsp;</td><td>encryption context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>parent</em>&nbsp;</td><td>parent of the EncryptedKey node </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>encrypted_key_node</em>&nbsp;</td><td>the EncryptedKey node </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key,the</em>&nbsp;</td><td>key which holds the decrypted key data </td></tr>
  </table>
</dl>
<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="g656d25ac5f1ea1130e597cfa7daaacf3"></a><!-- doxytag: member="oxs_xml_encryption.h::oxs_xml_enc_decrypt_node" ref="g656d25ac5f1ea1130e597cfa7daaacf3" args="(const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *enc_type_node, axiom_node_t **decrypted_node)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_enc_decrypt_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"><a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>enc_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>enc_type_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t **&nbsp;</td>
          <td class="paramname"> <em>decrypted_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>
Decrypts a node as specified in the . A reference is taken to assign the address of the decrypted node <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>pointer to environment struct </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_ctx</em>&nbsp;</td><td>encryption context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_type_node</em>&nbsp;</td><td>the EncryptedData node which needs to be decrypted </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>decrypted_node</em>&nbsp;</td><td>reference to the decrypted node </td></tr>
  </table>
</dl>
<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="g23a655fe1363591788d506833529b6ad"></a><!-- doxytag: member="oxs_xml_encryption.h::oxs_xml_enc_encrypt_data" ref="g23a655fe1363591788d506833529b6ad" args="(const axutil_env_t *env, oxs_ctx_t *enc_ctx, oxs_buffer_t *content_buf, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_data           </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"><a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>enc_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__oxs__buffer.html#g0c4b78066ec1762a58cbec685dd60537">oxs_buffer_t</a> *&nbsp;</td>
          <td class="paramname"> <em>content_buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t **&nbsp;</td>
          <td class="paramname"> <em>enc_type_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>key_reference_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>
Encrypts data or the content of the  as specified in the . A reference is taken for the EncryptedData to place the encrypted data <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>pointer to environment struct </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_ctx</em>&nbsp;</td><td>encryption context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>content_buf</em>&nbsp;</td><td>the content to be encrypted. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_type_node</em>&nbsp;</td><td>reference to the EncryptedData node </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key_reference_node</em>&nbsp;</td><td>key reference provided by STS generated tokens. </td></tr>
  </table>
</dl>
<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="g773121d21a842d0959dc57e2c75c1657"></a><!-- doxytag: member="oxs_xml_encryption.h::oxs_xml_enc_encrypt_key" ref="g773121d21a842d0959dc57e2c75c1657" args="(const axutil_env_t *env, oxs_asym_ctx_t *asym_ctx, axiom_node_t *parent, oxs_key_t *sym_key, axutil_array_list_t *id_list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_key           </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_asym_ctx_t *&nbsp;</td>
          <td class="paramname"> <em>asym_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"><a class="el" href="group__oxs__key.html#g6336c79b9592fb630903079b14a99206">oxs_key_t</a> *&nbsp;</td>
          <td class="paramname"> <em>sym_key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axutil_array_list_t *&nbsp;</td>
          <td class="paramname"> <em>id_list</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>
Encrypts a key/data in asymmetric way as specified in . This method is specifically written to support the key encryption in WS-Secruity <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>pointer to environment struct </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_ctx</em>&nbsp;</td><td>encryption context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>parent</em>&nbsp;</td><td>parent of the EncryptedKey node </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sym_key,the</em>&nbsp;</td><td>symmetric key that needs to be encrypted </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id_list</em>&nbsp;</td><td>the list of nodes that are encrypted by this particular key </td></tr>
  </table>
</dl>
<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="gf1d0dc87c3df459e634ad5cf6da483ad"></a><!-- doxytag: member="oxs_xml_encryption.h::oxs_xml_enc_encrypt_node" ref="gf1d0dc87c3df459e634ad5cf6da483ad" args="(const axutil_env_t *env, oxs_ctx_t *enc_ctx, axiom_node_t *node, axiom_node_t **enc_type_node, axiom_node_t *key_reference_node)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AXIS2_EXTERN axis2_status_t oxs_xml_enc_encrypt_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"><a class="el" href="group__oxs__ctx.html#g795415d5d6b4ae62260a5a093b368378">oxs_ctx_t</a> *&nbsp;</td>
          <td class="paramname"> <em>enc_ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t **&nbsp;</td>
          <td class="paramname"> <em>enc_type_node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">axiom_node_t *&nbsp;</td>
          <td class="paramname"> <em>key_reference_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>
Encrypts a given node as specified in the . A reference is taken for the EncryptedData to place the encrypted data. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>env</em>&nbsp;</td><td>pointer to environment struct </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_ctx</em>&nbsp;</td><td>encryption context </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>node</em>&nbsp;</td><td>the node tobe encrypted </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enc_type_node</em>&nbsp;</td><td>reference to the EncryptedData node </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key_reference_node</em>&nbsp;</td><td>key reference provided by STS generated tokens. </td></tr>
  </table>
</dl>
<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>
