cryptlib_8cpp-source.html

来自「Crypto++是一个非常强大的密码学库,主要是功能全」· HTML 代码 · 共 649 行 · 第 1/5 页

HTML
649
字号
00124 {00125         <span class="keyword">class </span>NullRNG : <span class="keyword">public</span> <a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a>00126         {00127         <span class="keyword">public</span>:00128                 std::string <a class="code" href="class_algorithm.html#_zlib_decompressora17">AlgorithmName</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="stringliteral">"NullRNG"</span>;}00129                 byte <a class="code" href="class_random_number_generator.html#_sapphire_r_n_ga2">GenerateByte</a>() {<span class="keywordflow">throw</span> <a class="code" href="class_not_implemented.html">NotImplemented</a>(<span class="stringliteral">"NullRNG: NullRNG should only be passed to functions that don't need to generate random bytes"</span>);}00130         };00131 00132         <span class="keyword">static</span> NullRNG s_nullRNG;00133         <span class="keywordflow">return</span> s_nullRNG;00134 }00135 <a name="l00136"></a><a class="code" href="class_hash_transformation.html#_x_m_a_c_ca17">00136</a> <span class="keywordtype">bool</span> <a class="code" href="class_hash_transformation.html#_x_m_a_c_ca17">HashTransformation::TruncatedVerify</a>(<span class="keyword">const</span> byte *digestIn, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digestLength)00137 {00138         ThrowIfInvalidTruncatedSize(digestLength);00139         <a class="code" href="class_sec_block.html">SecByteBlock</a> digest(digestLength);00140         <a class="code" href="class_hash_transformation.html#_x_m_a_c_ca15">TruncatedFinal</a>(digest, digestLength);00141         <span class="keywordflow">return</span> memcmp(digest, digestIn, digestLength) == 0;00142 }00143 00144 <span class="keywordtype">void</span> HashTransformation::ThrowIfInvalidTruncatedSize(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size)<span class="keyword"> const</span>00145 <span class="keyword"></span>{00146         <span class="keywordflow">if</span> (size &gt; <a class="code" href="class_hash_transformation.html#_x_m_a_c_ca9">DigestSize</a>())00147                 <span class="keywordflow">throw</span> <a class="code" href="class_invalid_argument.html">InvalidArgument</a>(<span class="stringliteral">"HashTransformation: can't truncate a "</span> + IntToString(<a class="code" href="class_hash_transformation.html#_x_m_a_c_ca9">DigestSize</a>()) + <span class="stringliteral">" byte digest to "</span> + IntToString(size) + <span class="stringliteral">" bytes"</span>);00148 }00149 <a name="l00150"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_0">00150</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_0">BufferedTransformation::GetMaxWaitObjectCount</a>()<span class="keyword"> const</span>00151 <span class="keyword"></span>{00152         <span class="keyword">const</span> <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *t = <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>();00153         <span class="keywordflow">return</span> t ? t-&gt;GetMaxWaitObjectCount() : 0;00154 }00155 <a name="l00156"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_1">00156</a> <span class="keywordtype">void</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz3_1">BufferedTransformation::GetWaitObjects</a>(<a class="code" href="class_wait_object_container.html">WaitObjectContainer</a> &amp;container)00157 {00158         <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *t = <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>();00159         <span class="keywordflow">if</span> (t)00160                 t-&gt;GetWaitObjects(container);00161 }00162 <a name="l00163"></a><a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_2">00163</a> <span class="keywordtype">void</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_2">BufferedTransformation::Initialize</a>(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters, <span class="keywordtype">int</span> propagation)00164 {00165         assert(!<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>());00166         IsolatedInitialize(parameters);00167 }00168 <a name="l00169"></a><a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_3">00169</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_3">BufferedTransformation::Flush</a>(<span class="keywordtype">bool</span> hardFlush, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00170 {00171         assert(!<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>());00172         <span class="keywordflow">return</span> IsolatedFlush(hardFlush, blocking);00173 }00174 <a name="l00175"></a><a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_4">00175</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_4">BufferedTransformation::MessageSeriesEnd</a>(<span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00176 {00177         assert(!<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>());00178         <span class="keywordflow">return</span> IsolatedMessageSeriesEnd(blocking);00179 }00180 00181 byte * BufferedTransformation::ChannelCreatePutSpace(<span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;size)00182 {00183         <span class="keywordflow">if</span> (channel.empty())00184                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_4">CreatePutSpace</a>(size);00185         <span class="keywordflow">else</span>00186                 <span class="keywordflow">throw</span> NoChannelSupport();00187 }00188 00189 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::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)00190 {00191         <span class="keywordflow">if</span> (channel.empty())00192                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_unflushable_3_01_sink_01_4z1_9">Put2</a>(begin, length, messageEnd, blocking);00193         <span class="keywordflow">else</span>00194                 <span class="keywordflow">throw</span> NoChannelSupport();00195 }00196 00197 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::ChannelPutModifiable2(<span class="keyword">const</span> std::string &amp;channel, 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)00198 {00199         <span class="keywordflow">if</span> (channel.empty())00200                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_9">PutModifiable2</a>(begin, length, messageEnd, blocking);00201         <span class="keywordflow">else</span>00202                 <span class="keywordflow">return</span> ChannelPut2(channel, begin, length, messageEnd, blocking);00203 }00204 00205 <span class="keywordtype">void</span> BufferedTransformation::ChannelInitialize(<span class="keyword">const</span> std::string &amp;channel, <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters, <span class="keywordtype">int</span> propagation)00206 {00207         <span class="keywordflow">if</span> (channel.empty())00208                 <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_2">Initialize</a>(parameters, propagation);00209         <span class="keywordflow">else</span>00210                 <span class="keywordflow">throw</span> NoChannelSupport();00211 }00212 00213 <span class="keywordtype">bool</span> BufferedTransformation::ChannelFlush(<span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">bool</span> completeFlush, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00214 {00215         <span class="keywordflow">if</span> (channel.empty())00216                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_3">Flush</a>(completeFlush, propagation, blocking);00217         <span class="keywordflow">else</span>00218                 <span class="keywordflow">throw</span> NoChannelSupport();00219 }00220 00221 <span class="keywordtype">bool</span> BufferedTransformation::ChannelMessageSeriesEnd(<span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">int</span> propagation, <span class="keywordtype">bool</span> blocking)00222 {00223         <span class="keywordflow">if</span> (channel.empty())00224                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz5_4">MessageSeriesEnd</a>(propagation, blocking);00225         <span class="keywordflow">else</span>00226                 <span class="keywordflow">throw</span> NoChannelSupport();00227 }00228 <a name="l00229"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">00229</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">BufferedTransformation::MaxRetrievable</a>()<span class="keyword"> const</span>00230 <span class="keyword"></span>{00231         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00232                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">MaxRetrievable</a>();00233         <span class="keywordflow">else</span>00234                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_12">CopyTo</a>(TheBitBucket());00235 }00236 <a name="l00237"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_1">00237</a> <span class="keywordtype">bool</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_1">BufferedTransformation::AnyRetrievable</a>()<span class="keyword"> const</span>00238 <span class="keyword"></span>{00239         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00240                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_1">AnyRetrievable</a>();00241         <span class="keywordflow">else</span>00242         {00243                 byte b;00244                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(b) != 0;00245         }00246 }00247 <a name="l00248"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">00248</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">BufferedTransformation::Get</a>(byte &amp;outByte)00249 {00250         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00251                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">Get</a>(outByte);00252         <span class="keywordflow">else</span>00253                 <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_2">Get</a>(&amp;outByte, 1);

⌨️ 快捷键说明

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