File: WinCAPICryptoProvider_8hpp-source.html

package info (click to toggle)
xml-security-c 1.2.1-3%2Betch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 24,472 kB
  • ctags: 6,673
  • sloc: cpp: 36,830; xml: 23,415; sh: 2,365; makefile: 340; perl: 221
file content (157 lines) | stat: -rw-r--r-- 13,703 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<!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: WinCAPICryptoProvider.hpp Source File</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>
<div class="nav">
<a class="el" href="dir_000000.html">src</a>&nbsp;/&nbsp;<a class="el" href="dir_000002.html">enc</a>&nbsp;/&nbsp;<a class="el" href="dir_000005.html">WinCAPI</a></div>
<h1>WinCAPICryptoProvider.hpp</h1><a href="WinCAPICryptoProvider_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/*</span>
00002 <span class="comment"> * Copyright 2002-2005 The Apache Software Foundation.</span>
00003 <span class="comment"> *</span>
00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span>
00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
00006 <span class="comment"> * You may obtain a copy of the License at</span>
00007 <span class="comment"> *</span>
00008 <span class="comment"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
00009 <span class="comment"> *</span>
00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
00014 <span class="comment"> * limitations under the License.</span>
00015 <span class="comment"> */</span>
00016 
00017 <span class="comment">/*</span>
00018 <span class="comment"> * XSEC</span>
00019 <span class="comment"> *</span>
00020 <span class="comment"> * WinCAPICryptoProvider := Base class to handle Windows Crypto API</span>
00021 <span class="comment"> *</span>
00022 <span class="comment"> * Author(s): Berin Lautenbach</span>
00023 <span class="comment"> *</span>
00024 <span class="comment"> * $Id: WinCAPICryptoProvider.hpp,v 1.20 2005/06/04 11:30:26 blautenb Exp $</span>
00025 <span class="comment"> *</span>
00026 <span class="comment"> */</span>
00027 
00028 <span class="preprocessor">#ifndef WINCAPICRYPTOPROVIDER_INCLUDE</span>
00029 <span class="preprocessor"></span><span class="preprocessor">#define WINCAPICRYPTOPROVIDER_INCLUDE</span>
00030 <span class="preprocessor"></span>
00031 <span class="preprocessor">#include &lt;xsec/framework/XSECDefs.hpp&gt;</span>
00032 <span class="preprocessor">#include &lt;xsec/enc/XSECCryptoProvider.hpp&gt;</span>
00033 
00034 <span class="preprocessor">#if defined (HAVE_WINCAPI)</span>
00035 <span class="preprocessor"></span>
00036 <span class="preprocessor">#if defined (_WIN32_WINNT)</span>
00037 <span class="preprocessor"></span><span class="preprocessor">#   undef _WIN32_WINNT</span>
00038 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00039"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a0">00039</a> <span class="preprocessor"></span><span class="preprocessor">#define _WIN32_WINNT 0x0400</span>
00040 <span class="preprocessor"></span><span class="preprocessor">#include &lt;wincrypt.h&gt;</span>
00041 
00042 
00043 <span class="comment">// For older versions of wincrypt.h</span>
00044 
00045 <span class="preprocessor">#if !defined (PROV_RSA_AES)</span>
<a name="l00046"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a1">00046</a> <span class="preprocessor"></span><span class="preprocessor">#   define PROV_RSA_AES      24</span>
<a name="l00047"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a2">00047</a> <span class="preprocessor"></span><span class="preprocessor">#   define ALG_SID_AES_128   14</span>
<a name="l00048"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a3">00048</a> <span class="preprocessor"></span><span class="preprocessor">#   define ALG_SID_AES_192   15</span>
<a name="l00049"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a4">00049</a> <span class="preprocessor"></span><span class="preprocessor">#   define ALG_SID_AES_256   16</span>
<a name="l00050"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a5">00050</a> <span class="preprocessor"></span><span class="preprocessor">#   define ALG_SID_AES       17</span>
<a name="l00051"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a6">00051</a> <span class="preprocessor"></span><span class="preprocessor">#   define CALG_AES_128      (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128)</span>
<a name="l00052"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a7">00052</a> <span class="preprocessor"></span><span class="preprocessor">#   define CALG_AES_192      (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192)</span>
<a name="l00053"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a8">00053</a> <span class="preprocessor"></span><span class="preprocessor">#   define CALG_AES_256      (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256)</span>
00054 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00055 <span class="preprocessor"></span>
<a name="l00056"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a9">00056</a> <span class="preprocessor">#define WINCAPI_BLOBHEADERLEN   0x08</span>
<a name="l00057"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a10">00057</a> <span class="preprocessor"></span><span class="preprocessor">#define WINCAPI_DSSPUBKEYLEN    0x08</span>
<a name="l00058"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a11">00058</a> <span class="preprocessor"></span><span class="preprocessor">#define WINCAPI_DSSSEEDLEN      0x18</span>
<a name="l00059"></a><a class="code" href="WinCAPICryptoProvider_8hpp.html#a12">00059</a> <span class="preprocessor"></span><span class="preprocessor">#define WINCAPI_RSAPUBKEYLEN    0x0C</span>
00060 <span class="preprocessor"></span>
00084  <span class="comment">/*\@{*/</span>
00085 
<a name="l00086"></a><a class="code" href="classWinCAPICryptoProvider.html">00086</a> <span class="keyword">class </span><a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> <a class="code" href="classWinCAPICryptoProvider.html">WinCAPICryptoProvider</a> : <span class="keyword">public</span> <a class="code" href="classXSECCryptoProvider.html">XSECCryptoProvider</a> {
00087 
00088 
00089 <span class="keyword">public</span> :
00090 
00107     <a class="code" href="classWinCAPICryptoProvider.html">WinCAPICryptoProvider</a>(LPCSTR provDSSName = NULL, LPCSTR provRSAName = NULL, DWORD dwFlags = 0);
00108 
00109     <span class="keyword">virtual</span> ~<a class="code" href="classWinCAPICryptoProvider.html">WinCAPICryptoProvider</a>();
00110 
00112 
00115 
00126     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoHash.html">XSECCryptoHash</a>          * <a class="code" href="classXSECCryptoProvider.html#z171_0">hashSHA1</a>();
00127 
00139     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoHash.html">XSECCryptoHash</a>          * <a class="code" href="classXSECCryptoProvider.html#z171_1">hashSHA</a>(<span class="keywordtype">int</span> length = 160);
00140     
00152     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoHash.html">XSECCryptoHash</a>          * <a class="code" href="classXSECCryptoProvider.html#z171_2">hashHMACSHA1</a>();
00153 
00166     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoHash.html">XSECCryptoHash</a>          * <a class="code" href="classXSECCryptoProvider.html#z171_3">hashHMACSHA</a>(<span class="keywordtype">int</span> length = 160);
00167     
00178     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoHash.html">XSECCryptoHash</a>          * <a class="code" href="classXSECCryptoProvider.html#z171_4">hashMD5</a>();
00179 
00196     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoHash.html">XSECCryptoHash</a>          * <a class="code" href="classXSECCryptoProvider.html#z171_5">hashHMACMD5</a>();
00197 
00208     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoKeyHMAC.html">XSECCryptoKeyHMAC</a>       * <a class="code" href="classXSECCryptoProvider.html#z171_6">keyHMAC</a>(<span class="keywordtype">void</span>);
00209 
00211 
00214 
00229     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoBase64.html">XSECCryptoBase64</a>        * <a class="code" href="classXSECCryptoProvider.html#z172_0">base64</a>();
00230 
00232 
00235 
00245     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoKeyDSA.html">XSECCryptoKeyDSA</a>        * <a class="code" href="classXSECCryptoProvider.html#z173_0">keyDSA</a>();
00246 
00256     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoKeyRSA.html">XSECCryptoKeyRSA</a>        * <a class="code" href="classXSECCryptoProvider.html#z173_1">keyRSA</a>();
00257 
00268     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoX509.html">XSECCryptoX509</a>          * <a class="code" href="classXSECCryptoProvider.html#z173_2">X509</a>();
00269 
00271 
00274 
<a name="l00279"></a><a class="code" href="classWinCAPICryptoProvider.html#z138_0">00279</a>     HCRYPTPROV getProviderDSS(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> m_provDSS;}
00280 
<a name="l00285"></a><a class="code" href="classWinCAPICryptoProvider.html#z138_1">00285</a>     HCRYPTPROV getProviderRSA(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> m_provRSA;}
00286 
<a name="l00291"></a><a class="code" href="classWinCAPICryptoProvider.html#z138_2">00291</a>     HCRYPTPROV getApacheKeyStore(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> m_provApacheKeyStore;}
00292 
00305     <span class="keyword">static</span> BYTE * b642WinBN(<span class="keyword">const</span> <span class="keywordtype">char</span> * b64, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b64Len, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;retLen);
00306 
00319     <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * WinBN2b64(BYTE * n, DWORD nLen, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;retLen);
00320 
00328     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classXSECCryptoProvider.html#z173_3">algorithmSupported</a>(<a class="code" href="classXSECCryptoSymmetricKey.html#w8">XSECCryptoSymmetricKey::SymmetricKeyType</a> alg);
00329 
00337     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classXSECCryptoProvider.html#z173_3">algorithmSupported</a>(<a class="code" href="classXSECCryptoHash.html#w7">XSECCryptoHash::HashType</a> alg);
00338     
00349     <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoSymmetricKey.html">XSECCryptoSymmetricKey</a>  * <a class="code" href="classXSECCryptoProvider.html#z173_5">keySymmetric</a>(<a class="code" href="classXSECCryptoSymmetricKey.html#w8">XSECCryptoSymmetricKey::SymmetricKeyType</a> alg);
00350 
00363     <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classXSECCryptoProvider.html#z173_6">getRandom</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOctets);
00364 
00365 
00367 
00370 
00375     <span class="keyword">virtual</span> <span class="keyword">const</span> XMLCh * <a class="code" href="classXSECCryptoProvider.html#z174_0">getProviderName</a>();
00376 
00378 
00379 
00380 <span class="keyword">private</span>:
00381 
00382     HCRYPTPROV      m_provDSS;
00383     HCRYPTPROV      m_provRSA;
00384     HCRYPTPROV      m_provApacheKeyStore;
00385     LPCSTR          m_provDSSName;
00386     LPCSTR          m_provRSAName;
00387     <span class="keywordtype">bool</span>            m_haveAES;
00388     DWORD           m_provRSAType;
00389 
00390 };
00391 
00392 <span class="comment">/*\@}*/</span>
00393 
00394 <span class="preprocessor">#endif </span><span class="comment">/* HAVE_WINCAPI */</span>
00395 <span class="preprocessor">#endif </span><span class="comment">/* WINCAPICRYPTOPROVIDER_INCLUDE */</span>
00396 
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Jul 3 17:37:26 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>