⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simple_8h-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: simple.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><h1>simple.h</h1><a href="simple_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">// simple.h - written and placed in the public domain by Wei Dai</span><span class="comment"></span>00002 <span class="comment">/*! \file</span>00003 <span class="comment">        Simple non-interface classes derived from classes in cryptlib.h.</span>00004 <span class="comment">*/</span>00005 00006 <span class="preprocessor">#ifndef CRYPTOPP_SIMPLE_H</span>00007 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_SIMPLE_H</span>00008 <span class="preprocessor"></span>00009 <span class="preprocessor">#include "<a class="code" href="cryptlib_8h.html">cryptlib.h</a>"</span>00010 <span class="preprocessor">#include "misc.h"</span>00011 00012 NAMESPACE_BEGIN(CryptoPP)00013 00014 <span class="keyword">template</span> &lt;<span class="keyword">class</span> BASE, <span class="keyword">class</span> ALGORITHM_INFO = BASE&gt;00015 <span class="keyword">class </span>AlgorithmImpl : <span class="keyword">public</span> BASE00016 {00017 <span class="keyword">public</span>:00018         std::string AlgorithmName()<span class="keyword"> const </span>{<span class="keywordflow">return</span> ALGORITHM_INFO::StaticAlgorithmName();}00019 };00020 <span class="comment"></span>00021 <span class="comment">//! .</span><a name="l00022"></a><a class="code" href="class_invalid_key_length.html">00022</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL InvalidKeyLength : <span class="keyword">public</span> <a class="code" href="class_invalid_argument.html">InvalidArgument</a>00023 {00024 <span class="keyword">public</span>:00025         <span class="keyword">explicit</span> InvalidKeyLength(<span class="keyword">const</span> std::string &amp;algorithm, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length) : <a class="code" href="class_invalid_argument.html">InvalidArgument</a>(algorithm + <span class="stringliteral">": "</span> + IntToString(length) + <span class="stringliteral">" is not a valid key length"</span>) {}00026 };00027 <span class="comment"></span>00028 <span class="comment">//! .</span><a name="l00029"></a><a class="code" href="class_invalid_rounds.html">00029</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL InvalidRounds : <span class="keyword">public</span> <a class="code" href="class_invalid_argument.html">InvalidArgument</a>00030 {00031 <span class="keyword">public</span>:00032         <span class="keyword">explicit</span> InvalidRounds(<span class="keyword">const</span> std::string &amp;algorithm, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rounds) : <a class="code" href="class_invalid_argument.html">InvalidArgument</a>(algorithm + <span class="stringliteral">": "</span> + IntToString(rounds) + <span class="stringliteral">" is not a valid number of rounds"</span>) {}00033 };00034 00035 <span class="keyword">class </span>CRYPTOPP_DLL HashTransformationWithDefaultTruncation : <span class="keyword">public</span> <a class="code" href="class_hash_transformation.html">HashTransformation</a>00036 {00037 <span class="keyword">public</span>:00038         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final</a>(byte *digest) =0;00039         <span class="keywordtype">void</span> <a class="code" href="class_hash_transformation.html#_x_m_a_c_ca15">TruncatedFinal</a>(byte *digest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digestSize);00040 };00041 <span class="comment"></span>00042 <span class="comment">//! .</span>00043 <span class="comment"></span><span class="comment">// TODO: look into this virtual inheritance</span><a name="l00044"></a><a class="code" href="class_a_s_n1_crypto_material.html">00044</a> <span class="keyword">class </span>CRYPTOPP_DLL ASN1CryptoMaterial : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="class_a_s_n1_object.html">ASN1Object</a>, <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="class_crypto_material.html">CryptoMaterial</a>00045 {00046 <span class="keyword">public</span>:<a name="l00047"></a><a class="code" href="class_a_s_n1_crypto_material.html#_x509_public_keya8">00047</a>         <span class="keywordtype">void</span> <a class="code" href="class_crypto_material.html#_x_t_r___d_ha30">Save</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)<span class="keyword"> const</span>00048 <span class="keyword">                </span>{<a class="code" href="class_a_s_n1_object.html#_x509_public_keya10">BEREncode</a>(bt);}<a name="l00049"></a><a class="code" href="class_a_s_n1_crypto_material.html#_x509_public_keya9">00049</a>         <span class="keywordtype">void</span> <a class="code" href="class_crypto_material.html#_x_t_r___d_ha31">Load</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)00050                 {<a class="code" href="class_a_s_n1_object.html#_a_s_n1_objecta1">BERDecode</a>(bt);}00051 };00052 00053 <span class="comment">// *****************************</span>00054 00055 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;00056 <span class="keyword">class </span>Bufferless : <span class="keyword">public</span> T00057 {00058 <span class="keyword">public</span>:00059         Bufferless() {}00060         Bufferless(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *q) : T(q) {}00061         <span class="keywordtype">bool</span> IsolatedFlush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">bool</span> blocking) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}00062 };00063 00064 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;00065 <span class="keyword">class </span>Unflushable : <span class="keyword">public</span> T00066 {00067 <span class="keyword">public</span>:00068         Unflushable() {}00069         Unflushable(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *q) : T(q) {}00070         <span class="keywordtype">bool</span> Flush(<span class="keywordtype">bool</span> completeFlush, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00071                 {<span class="keywordflow">return</span> ChannelFlush(NULL_CHANNEL, completeFlush, propagation);}00072         <span class="keywordtype">bool</span> IsolatedFlush(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">bool</span> blocking)00073                 {assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="keyword">false</span>;}00074         <span class="keywordtype">bool</span> ChannelFlush(<span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">int</span> propagation=-1, <span class="keywordtype">bool</span> blocking=<span class="keyword">true</span>)00075         {00076                 <span class="keywordflow">if</span> (hardFlush &amp;&amp; !InputBufferIsEmpty())00077                         <span class="keywordflow">throw</span> <a class="code" href="class_cannot_flush.html">CannotFlush</a>(<span class="stringliteral">"Unflushable&lt;T&gt;: this object has buffered input that cannot be flushed"</span>);00078                 <span class="keywordflow">else</span> 00079                 {00080                         <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attached = AttachedTransformation();00081                         <span class="keywordflow">return</span> attached &amp;&amp; propagation ? attached-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz13_11">ChannelFlush</a>(channel, hardFlush, propagation-1, blocking) : false;00082                 }00083         }00084 00085 <span class="keyword">protected</span>:00086         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> InputBufferIsEmpty()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}00087 };00088 00089 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;00090 <span class="keyword">class </span>InputRejecting : <span class="keyword">public</span> T00091 {00092 <span class="keyword">public</span>:00093         InputRejecting() {}00094         InputRejecting(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *q) : T(q) {}00095 00096 <span class="keyword">protected</span>:00097         <span class="keyword">struct </span>InputRejected : <span class="keyword">public</span> <a class="code" href="class_not_implemented.html">NotImplemented</a>00098                 {InputRejected() : <a class="code" href="class_not_implemented.html">NotImplemented</a>("<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a>: this object doesn't allow input") {}};00099 00100         <span class="comment">// shouldn't be calling these functions on this class</span>00101         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Put2(<span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00102                 {<span class="keywordflow">throw</span> InputRejected();}00103         <span class="keywordtype">bool</span> IsolatedFlush(<span class="keywordtype">bool</span>, <span class="keywordtype">bool</span>) {<span class="keywordflow">return</span> <span class="keyword">false</span>;}00104         <span class="keywordtype">bool</span> IsolatedMessageSeriesEnd(<span class="keywordtype">bool</span>) {<span class="keywordflow">throw</span> InputRejected();}00105 00106         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ChannelPut2(<span class="keyword">const</span> std::string &amp;channel, <span class="keyword">const</span> byte *begin, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00107                 {<span class="keywordflow">throw</span> InputRejected();}00108         <span class="keywordtype">bool</span> ChannelMessageSeriesEnd(<span class="keyword">const</span> std::string &amp;, <span class="keywordtype">int</span>, <span class="keywordtype">bool</span>) {<span class="keywordflow">throw</span> InputRejected();}00109 };00110 00111 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;00112 <span class="keyword">class </span>CustomSignalPropagation : <span class="keyword">public</span> T00113 {00114 <span class="keyword">public</span>:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -