File: group__crypto.html

package info (click to toggle)
xml-security-c 1.2.1-3
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 24,464 kB
  • ctags: 6,673
  • sloc: cpp: 36,830; xml: 23,415; sh: 2,365; makefile: 340; perl: 221
file content (138 lines) | stat: -rw-r--r-- 11,220 bytes parent folder | download | duplicates (2)
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&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</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>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">&nbsp;</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">&nbsp;</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">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoBase64.html">XSECCryptoBase64</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoException.html">XSECCryptoException</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoHash.html">XSECCryptoHash</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKey.html">XSECCryptoKey</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKeyDSA.html">XSECCryptoKeyDSA</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKeyHMAC.html">XSECCryptoKeyHMAC</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoKeyRSA.html">XSECCryptoKeyRSA</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoSymmetricKey.html">XSECCryptoSymmetricKey</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classXSECCryptoX509.html">XSECCryptoX509</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto.html#ga1">XKMSAuthenticationValue</a>&nbsp;&nbsp;&nbsp;0x01</td></tr>

<tr><td class="mdescLeft">&nbsp;</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 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__crypto.html#ga0">XSECCryptoExceptionStrings</a> []</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&nbsp;&nbsp;&nbsp;0x01          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </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>
      &nbsp;
    </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&nbsp;
<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>