1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
<!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>XML-Security-C: Cryptographic Abstraction Layer</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.2 -->
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</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>Cryptographic Abstraction Layer</h1>
<p>
Collaboration diagram for Cryptographic Abstraction Layer:<center><table><tr><td><img src="group__crypto.png" border="0" alt="" usemap="#group____crypto_map">
<map name="group____crypto_map">
<area href="group__opensslcrypto.html" shape="rect" coords="302,8,438,32" alt="">
<area href="group__wincapicrypto.html" shape="rect" coords="269,56,472,80" alt="">
<area href="group__xscryptcrypto.html" shape="rect" coords="274,104,466,128" alt="">
</map></td></tr></table></center>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The interface layer between the cryptographic modules and the XML Security library. It has been created to allow users to easily integrate other cryptographic libraries into the XML-Security library.<p>
The XML-Security-C library itself makes calls to this interface layer to perform all cryptographic procedures. In order to instantiate the correct object (i.e. the object that belongs to the correct crypto library), XSEC makes calls to the virtual class <a class="el" href="classXSECCryptoProvider.html">XSECCryptoProvider</a>, which returns pointers to particular virtual class objects.<p>
The cryptographic interface has been kept as thin as possible. The classes are not meant to provide a complete wrapper for the cryptographic libraries involved. The application program is expected to deal directly with the chosen library. This ensures that the xml-security library can perform the functions it needs to, but does not constrain the application in what it can do.<p>
Therefore, three type of methods are available on any cryptographic class.<p>
<ul>
<li>
<em>Required</em> methods are those absolutely necessary for the library to operate. For example, these include the methods necessary for the library to decode a base64 encoded signature and validate it against a defined key. </li>
<li>
<em>Optional</em> methods are used by the ancillary classes in the library. For example, the default KeyInfoResolver can use an optional method to extract a public key from a certificate. This is not strictly necessary, as the calling application could provide a resolver that does this work directly rather than using the <a class="el" href="classXSECCryptoX509.html">XSECCryptoX509</a> class. </li>
<li>
<em>Library Specific</em> methods are those methods that are unique to a particular library. For example, the <a class="el" href="classOpenSSLCryptoX509.html">OpenSSLCryptoX509</a> class has a Library Specific constructor that takes an OpenSSL X509 structure as its argument. </li>
</ul>
<p>
Unless marked otherwise, all methods defined in the XSECCrypto* classes are <em>Required</em>.<p>
The particular instantiation of <a class="el" href="classXSECCryptoProvider.html">XSECCryptoProvider</a> that is to be used is set via the <a class="el" href="classXSECPlatformUtils.html#e0">XSECPlatformUtils::Initialise()</a> function call. If no provider is passed in, the Initialise function generates an <a class="el" href="classOpenSSLCryptoProvider.html">OpenSSLCryptoProvider</a> class for use. If OpenSSL is not available under windows, the library will use the Windows CAPI instead.<p>
The provider is kept in a global variable, and is used by all signature objects created by a particular application. At this time there is no way to have different signature objects use different CryptoProviders<p>
<dl compact><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>Add an ability to better handle "optional" functions. The library should make a call to the provider to see whether an optional function (e.g. extract key from X509) has been provided.</dd></dl>
@{
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__opensslcrypto.html">OpenSSL Interface</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__wincapicrypto.html">Windows Crypto API Interface</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__xscryptcrypto.html">Internal Crypto API Interface</a></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoBase64.html">XSECCryptoBase64</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Base64 encode/decode handler interface class. <a href="classXSECCryptoBase64.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoException.html">XSECCryptoException</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception class used by the cryptographic modules. <a href="classXSECCryptoException.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoHash.html">XSECCryptoHash</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interface definition for Hash functions. <a href="classXSECCryptoHash.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKey.html">XSECCryptoKey</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Base interface class for key material. <a href="classXSECCryptoKey.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKeyDSA.html">XSECCryptoKeyDSA</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interface class for DSA keys. <a href="classXSECCryptoKeyDSA.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKeyHMAC.html">XSECCryptoKeyHMAC</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interface class for HMAC keys. <a href="classXSECCryptoKeyHMAC.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKeyRSA.html">XSECCryptoKeyRSA</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interface class for RSA keys. <a href="classXSECCryptoKeyRSA.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoSymmetricKey.html">XSECCryptoSymmetricKey</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Base interface definition for symmetric key material. <a href="classXSECCryptoSymmetricKey.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoX509.html">XSECCryptoX509</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Interface class for X509 certificates. <a href="classXSECCryptoX509.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto.html#ga1">XKMSAuthenticationValue</a> 0x01</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper utilities for crypto. <a href="#ga1"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto.html#ga0">XSECCryptoExceptionStrings</a> []</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Exception strings. <a href="#ga0"></a><br></td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="ga1" doxytag="XSECCryptoUtils.hpp::XKMSAuthenticationValue"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">#define XKMSAuthenticationValue 0x01 </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Helper utilities for crypto.
<p>
</td>
</tr>
</table>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="ga0" doxytag="XSECCryptoException.hpp::XSECCryptoExceptionStrings"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">const char* <a class="el" href="group__crypto.html#ga0">XSECCryptoExceptionStrings</a>[] </td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</td>
<td>
<p>
Exception strings.
<p>
Global array of strings that can be looked up using the #type element of an <a class="el" href="classXSECCryptoException.html">XSECCryptoException</a> to determine a default string for the erro </td>
</tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Sun Jul 3 17:46:13 2005 for XML-Security-C by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address>
</body>
</html>
|