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
|
<!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: OpenSSLCryptoSymmetricKey.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 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>
<div class="nav">
<a class="el" href="dir_000000.html">src</a> / <a class="el" href="dir_000002.html">enc</a> / <a class="el" href="dir_000003.html">OpenSSL</a></div>
<h1>OpenSSLCryptoSymmetricKey.hpp</h1><a href="OpenSSLCryptoSymmetricKey_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"> * XSECCryptoSymmetricKey := Bulk encryption algorithms should all be</span>
00021 <span class="comment"> * implemented via this interface</span>
00022 <span class="comment"> *</span>
00023 <span class="comment"> * Author(s): Berin Lautenbach</span>
00024 <span class="comment"> *</span>
00025 <span class="comment"> * $Id: OpenSSLCryptoSymmetricKey.hpp,v 1.10 2005/06/04 11:30:26 blautenb Exp $</span>
00026 <span class="comment"> *</span>
00027 <span class="comment"> */</span>
00028
00029
00030
00031 <span class="preprocessor">#ifndef OPENSSLCRYPTOSYMMETRICKEY_INCLUDE</span>
00032 <span class="preprocessor"></span><span class="preprocessor">#define OPENSSLCRYPTOSYMMETRICKEY_INCLUDE</span>
00033 <span class="preprocessor"></span>
00034 <span class="preprocessor">#include <xsec/framework/XSECDefs.hpp></span>
00035 <span class="preprocessor">#include <xsec/enc/XSECCryptoSymmetricKey.hpp></span>
00036
00037 <span class="preprocessor">#if defined (HAVE_OPENSSL)</span>
00038 <span class="preprocessor"></span>
00039 <span class="comment">// OpenSSL Includes</span>
00040
00041 <span class="preprocessor">#include <openssl/evp.h></span>
00042
<a name="l00043"></a><a class="code" href="OpenSSLCryptoSymmetricKey_8hpp.html#a0">00043</a> <span class="preprocessor">#define MAX_BLOCK_SIZE 32</span>
00044 <span class="preprocessor"></span>
<a name="l00056"></a><a class="code" href="classOpenSSLCryptoSymmetricKey.html">00056</a> <span class="keyword">class </span><a class="code" href="XSECDefs_8hpp.html#a9">DSIG_EXPORT</a> <a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a> : <span class="keyword">public</span> <a class="code" href="classXSECCryptoSymmetricKey.html">XSECCryptoSymmetricKey</a> {
00057
00058 <span class="keyword">public</span> :
00059
00062
00069 <a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a>(<a class="code" href="classXSECCryptoSymmetricKey.html#w8">XSECCryptoSymmetricKey::SymmetricKeyType</a> type);
00070
00078 <span class="keyword">virtual</span> ~<a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a>();
00079
00081
00084
00089 <span class="keyword">virtual</span> <span class="keyword">const</span> XMLCh * <a class="code" href="classXSECCryptoSymmetricKey.html#z176_1">getProviderName</a>();
00090
00099 <span class="keyword">virtual</span> <a class="code" href="classXSECCryptoKey.html">XSECCryptoKey</a> * <a class="code" href="classXSECCryptoSymmetricKey.html#z176_2">clone</a>();
00100
00102
00105
00114 SymmetricKeyType <a class="code" href="classXSECCryptoSymmetricKey.html#z177_0">getSymmetricKeyType</a>(<span class="keywordtype">void</span>);
00115
00127 <span class="keywordtype">void</span> <a class="code" href="classXSECCryptoSymmetricKey.html#z177_1">setKey</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * key, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> keyLen);
00128
00145 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classXSECCryptoSymmetricKey.html#z177_2">decryptInit</a>(<span class="keywordtype">bool</span> doPad = <span class="keyword">true</span>,
00146 SymmetricKeyMode mode = MODE_CBC,
00147 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * iv = NULL);
00148
00173 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classXSECCryptoSymmetricKey.html#z177_3">decrypt</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * inBuf,
00174 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * plainBuf,
00175 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inLength,
00176 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxOutLength);
00177
00197 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classXSECCryptoSymmetricKey.html#z177_4">decryptFinish</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * plainBuf,
00198 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxOutLength);
00199
00215 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classXSECCryptoSymmetricKey.html#z177_5">encryptInit</a>(<span class="keywordtype">bool</span> doPad = <span class="keyword">true</span>,
00216 SymmetricKeyMode mode = MODE_CBC,
00217 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * iv = NULL);
00218
00239 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classXSECCryptoSymmetricKey.html#z177_6">encrypt</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * inBuf,
00240 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * cipherBuf,
00241 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inLength,
00242 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxOutLength);
00243
00265 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classXSECCryptoSymmetricKey.html#z177_7">encryptFinish</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * plainBuf,
00266 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxOutLength);
00267
00269
00270 <span class="keyword">private</span>:
00271
00272 <span class="comment">// Unimplemented constructors</span>
00273
00274 <a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a>();
00275 <a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a>(<span class="keyword">const</span> <a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a> &);
00276 <a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a> & operator= (<span class="keyword">const</span> <a class="code" href="classOpenSSLCryptoSymmetricKey.html">OpenSSLCryptoSymmetricKey</a> &);
00277
00278 <span class="comment">// Private functions</span>
00279 <span class="keywordtype">int</span> decryptCtxInit(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> * iv);
00280
00281 <span class="comment">// Private variables</span>
00282 SymmetricKeyType m_keyType;
00283 SymmetricKeyMode m_keyMode;
00284 EVP_CIPHER_CTX m_ctx; <span class="comment">// OpenSSL Cipher Context structure</span>
00285 <a class="code" href="classsafeBuffer.html">safeBuffer</a> m_keyBuf; <span class="comment">// Holder of the key</span>
00286 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_keyLen;
00287 <span class="keywordtype">bool</span> m_initialised; <span class="comment">// Is the context ready to work?</span>
00288 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_lastBlock[<a class="code" href="OpenSSLCryptoSymmetricKey_8hpp.html#a0">MAX_BLOCK_SIZE</a>];
00289 <span class="keywordtype">int</span> m_blockSize;
00290 <span class="keywordtype">int</span> m_ivSize;
00291 <span class="keywordtype">int</span> m_bytesInLastBlock;
00292 <span class="keywordtype">bool</span> m_ivSent; <span class="comment">// Has the IV been put in the stream</span>
00293 <span class="keywordtype">bool</span> m_doPad; <span class="comment">// Do we pad last block?</span>
00294 };
00295
00296 <span class="preprocessor">#endif </span><span class="comment">/* HAVE_OPENSSL */</span>
00297 <span class="preprocessor">#endif </span><span class="comment">/* OPENSSLCRYPTOSYMMETRICKEY_INCLUDE */</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Jul 3 17:37:26 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>
|