<!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>Crypto++: default.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.7 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div> <h1>default.h</h1><pre class="fragment"><div>00001 <span class="preprocessor">#ifndef CRYPTOPP_DEFAULT_H</span> 00002 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_DEFAULT_H</span> 00003 <span class="preprocessor"></span> 00004 <span class="preprocessor">#include "sha.h"</span> 00005 <span class="preprocessor">#include "hmac.h"</span> 00006 <span class="preprocessor">#include "<a class="code" href="des_8h.html">des.h</a>"</span> 00007 <span class="preprocessor">#include "filters.h"</span> 00008 <span class="preprocessor">#include "<a class="code" href="modes_8h.html">modes.h</a>"</span> 00009 00010 NAMESPACE_BEGIN(CryptoPP) 00011 00012 typedef <a class="code" href="class_d_e_s___e_d_e2.html">DES_EDE2</a> <a class="code" href="class_d_e_s___e_d_e2.html">Default_BlockCipher</a>; 00013 typedef <a class="code" href="class_s_h_a.html">SHA</a> <a class="code" href="class_s_h_a.html">DefaultHashModule</a>; 00014 typedef <a class="code" href="class_h_m_a_c.html">HMAC</a><DefaultHashModule> <a class="code" href="class_h_m_a_c.html">DefaultMAC</a>; 00015 <span class="comment"></span> 00016 <span class="comment">//! Password-Based Encryptor using DES-EDE2</span> <a name="l00017"></a><a class="code" href="class_default_encryptor.html">00017</a> <span class="comment"></span>class <a class="code" href="class_default_encryptor.html">DefaultEncryptor</a> : public <a class="code" href="class_proxy_filter.html">ProxyFilter</a> 00018 { 00019 <span class="keyword">public</span>: 00020 <a class="code" href="class_default_encryptor.html">DefaultEncryptor</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *passphrase, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL); 00021 <a class="code" href="class_default_encryptor.html">DefaultEncryptor</a>(<span class="keyword">const</span> byte *passphrase, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> passphraseLength, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL); 00022 00023 <span class="keyword">protected</span>: 00024 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *); 00025 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length); 00026 00027 <span class="keyword">private</span>: 00028 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_passphrase; 00029 <a class="code" href="struct_c_b_c___mode.html">CBC_Mode<Default_BlockCipher></a>::Encryption m_cipher; 00030 }; 00031 <span class="comment"></span> 00032 <span class="comment">//! Password-Based Decryptor using DES-EDE2</span> <a name="l00033"></a><a class="code" href="class_default_decryptor.html">00033</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_default_decryptor.html">DefaultDecryptor</a> : <span class="keyword">public</span> <a class="code" href="class_proxy_filter.html">ProxyFilter</a> 00034 { 00035 <span class="keyword">public</span>: 00036 <a class="code" href="class_default_decryptor.html">DefaultDecryptor</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *passphrase, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">bool</span> throwException=<span class="keyword">true</span>); 00037 <a class="code" href="class_default_decryptor.html">DefaultDecryptor</a>(<span class="keyword">const</span> byte *passphrase, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> passphraseLength, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">bool</span> throwException=<span class="keyword">true</span>); 00038 00039 <span class="keyword">class </span>Err : <span class="keyword">public</span> <a class="code" href="class_exception.html">Exception</a> 00040 { 00041 <span class="keyword">public</span>: 00042 Err(<span class="keyword">const</span> std::string &s) 00043 : <a class="code" href="class_exception.html">Exception</a>(DATA_INTEGRITY_CHECK_FAILED, s) {} 00044 }; 00045 <span class="keyword">class </span>KeyBadErr : <span class="keyword">public</span> Err {<span class="keyword">public</span>: KeyBadErr() : Err(<span class="stringliteral">"DefaultDecryptor: cannot decrypt message with this passphrase"</span>) {}}; 00046 00047 <span class="keyword">enum</span> State {WAITING_FOR_KEYCHECK, KEY_GOOD, KEY_BAD}; 00048 State CurrentState()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_state;} 00049 00050 <span class="keyword">protected</span>: 00051 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString); 00052 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length); 00053 00054 State m_state; 00055 00056 <span class="keyword">private</span>: 00057 <span class="keywordtype">void</span> CheckKey(<span class="keyword">const</span> byte *salt, <span class="keyword">const</span> byte *keyCheck); 00058 00059 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_passphrase; 00060 <a class="code" href="struct_c_b_c___mode.html">CBC_Mode<Default_BlockCipher></a>::Decryption m_cipher; 00061 member_ptr<FilterWithBufferedInput> m_decryptor; 00062 <span class="keywordtype">bool</span> m_throwException; 00063 }; 00064 <span class="comment"></span> 00065 <span class="comment">//! Password-Based Encryptor using DES-EDE2 and HMAC/SHA-1</span> <a name="l00066"></a><a class="code" href="class_default_encryptor_with_m_a_c.html">00066</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_default_encryptor_with_m_a_c.html">DefaultEncryptorWithMAC</a> : <span class="keyword">public</span> <a class="code" href="class_proxy_filter.html">ProxyFilter</a> 00067 { 00068 <span class="keyword">public</span>: 00069 <a class="code" href="class_default_encryptor_with_m_a_c.html">DefaultEncryptorWithMAC</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *passphrase, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL); 00070 <a class="code" href="class_default_encryptor_with_m_a_c.html">DefaultEncryptorWithMAC</a>(<span class="keyword">const</span> byte *passphrase, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> passphraseLength, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL); 00071 00072 <span class="keyword">protected</span>: 00073 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString) {} 00074 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length); 00075 00076 <span class="keyword">private</span>: 00077 member_ptr<DefaultMAC> m_mac; 00078 }; 00079 <span class="comment"></span> 00080 <span class="comment">//! Password-Based Decryptor using DES-EDE2 and HMAC/SHA-1</span> <a name="l00081"></a><a class="code" href="class_default_decryptor_with_m_a_c.html">00081</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_default_decryptor_with_m_a_c.html">DefaultDecryptorWithMAC</a> : <span class="keyword">public</span> <a class="code" href="class_proxy_filter.html">ProxyFilter</a> 00082 { 00083 <span class="keyword">public</span>: 00084 <span class="keyword">class </span>MACBadErr : <span class="keyword">public</span> <a class="code" href="class_default_decryptor.html">DefaultDecryptor</a>::Err {<span class="keyword">public</span>: MACBadErr() : DefaultDecryptor::Err(<span class="stringliteral">"DefaultDecryptorWithMAC: MAC check failed"</span>) {}}; 00085 00086 <a class="code" href="class_default_decryptor_with_m_a_c.html">DefaultDecryptorWithMAC</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *passphrase, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">bool</span> throwException=<span class="keyword">true</span>); 00087 <a class="code" href="class_default_decryptor_with_m_a_c.html">DefaultDecryptorWithMAC</a>(<span class="keyword">const</span> byte *passphrase, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> passphraseLength, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">bool</span> throwException=<span class="keyword">true</span>); 00088 00089 DefaultDecryptor::State CurrentState() <span class="keyword">const</span>; 00090 <span class="keywordtype">bool</span> CheckLastMAC() <span class="keyword">const</span>; 00091 00092 <span class="keyword">protected</span>: 00093 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString) {} 00094 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length); 00095 00096 <span class="keyword">private</span>: 00097 member_ptr<DefaultMAC> m_mac; 00098 <a class="code" href="class_hash_verification_filter.html">HashVerifier</a> *m_hashVerifier; 00099 <span class="keywordtype">bool</span> m_throwException; 00100 }; 00101 00102 NAMESPACE_END 00103 00104 <span class="preprocessor">#endif</span> </div></pre><hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:23:57 2004 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address> </body> </html>