cryptlib_8cpp-source.html

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

HTML
649
字号
00384 }00385 00386 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::TransferAllTo2(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, <span class="keyword">const</span> std::string &amp;channel, <span class="keywordtype">bool</span> blocking)00387 {00388         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00389                 <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_decompressorz11_1">TransferAllTo2</a>(target, channel, blocking);00390         <span class="keywordflow">else</span>00391         {00392                 assert(!NumberOfMessageSeries());00393 00394                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> messageCount;00395                 <span class="keywordflow">do</span>00396                 {00397                         messageCount = UINT_MAX;00398                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockedBytes = TransferMessagesTo2(target, messageCount, channel, blocking);00399                         <span class="keywordflow">if</span> (blockedBytes)00400                                 <span class="keywordflow">return</span> blockedBytes;00401                 }00402                 <span class="keywordflow">while</span> (messageCount != 0);00403 00404                 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> byteCount;00405                 <span class="keywordflow">do</span>00406                 {00407                         byteCount = ULONG_MAX;00408                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockedBytes = <a class="code" href="class_buffered_transformation.html#_storez11_0">TransferTo2</a>(target, byteCount, channel, blocking);00409                         <span class="keywordflow">if</span> (blockedBytes)00410                                 <span class="keywordflow">return</span> blockedBytes;00411                 }00412                 <span class="keywordflow">while</span> (byteCount != 0);00413 00414                 <span class="keywordflow">return</span> 0;00415         }00416 }00417 00418 <span class="keywordtype">void</span> BufferedTransformation::CopyAllTo(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;target, <span class="keyword">const</span> std::string &amp;channel)<span class="keyword"> const</span>00419 <span class="keyword"></span>{00420         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00421                 <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_9">CopyAllTo</a>(target, channel);00422         <span class="keywordflow">else</span>00423         {00424                 assert(!NumberOfMessageSeries());00425                 <span class="keywordflow">while</span> (CopyMessagesTo(target, UINT_MAX, channel)) {}00426         }00427 }00428 00429 <span class="keywordtype">void</span> BufferedTransformation::SetRetrievalChannel(<span class="keyword">const</span> std::string &amp;channel)00430 {00431         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>())00432                 <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz13_13">SetRetrievalChannel</a>(channel);00433 }00434 00435 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::ChannelPutWord16(<span class="keyword">const</span> std::string &amp;channel, word16 value, ByteOrder order, <span class="keywordtype">bool</span> blocking)00436 {00437         FixedSizeSecBlock&lt;byte, 2&gt; buf;00438         PutWord(<span class="keyword">false</span>, order, buf, value);00439         <span class="keywordflow">return</span> ChannelPut(channel, buf, 2, blocking);00440 }00441 00442 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> BufferedTransformation::ChannelPutWord32(<span class="keyword">const</span> std::string &amp;channel, word32 value, ByteOrder order, <span class="keywordtype">bool</span> blocking)00443 {00444         FixedSizeSecBlock&lt;byte, 4&gt; buf;00445         PutWord(<span class="keyword">false</span>, order, buf, value);00446         <span class="keywordflow">return</span> ChannelPut(channel, buf, 4, blocking);00447 }00448 <a name="l00449"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_2">00449</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_2">BufferedTransformation::PutWord16</a>(word16 value, ByteOrder order, <span class="keywordtype">bool</span> blocking)00450 {00451         <span class="keywordflow">return</span> ChannelPutWord16(NULL_CHANNEL, value, order, blocking);00452 }00453 <a name="l00454"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_3">00454</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_3">BufferedTransformation::PutWord32</a>(word32 value, ByteOrder order, <span class="keywordtype">bool</span> blocking)00455 {00456         <span class="keywordflow">return</span> ChannelPutWord32(NULL_CHANNEL, value, order, blocking);00457 }00458 <a name="l00459"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_8">00459</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_8">BufferedTransformation::PeekWord16</a>(word16 &amp;value, ByteOrder order)00460 {00461         byte buf[2] = {0, 0};00462         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(buf, 2);00463 00464         <span class="keywordflow">if</span> (order)00465                 value = (buf[0] &lt;&lt; 8) | buf[1];00466         <span class="keywordflow">else</span>00467                 value = (buf[1] &lt;&lt; 8) | buf[0];00468 00469         <span class="keywordflow">return</span> len;00470 }00471 <a name="l00472"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_9">00472</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_9">BufferedTransformation::PeekWord32</a>(word32 &amp;value, ByteOrder order)00473 {00474         byte buf[4] = {0, 0, 0, 0};00475         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_4">Peek</a>(buf, 4);00476 00477         <span class="keywordflow">if</span> (order)00478                 value = (buf[0] &lt;&lt; 24) | (buf[1] &lt;&lt; 16) | (buf[2] &lt;&lt; 8) | buf [3];00479         <span class="keywordflow">else</span>00480                 value = (buf[3] &lt;&lt; 24) | (buf[2] &lt;&lt; 16) | (buf[1] &lt;&lt; 8) | buf [0];00481 00482         <span class="keywordflow">return</span> len;00483 }00484 <a name="l00485"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_6">00485</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_6">BufferedTransformation::GetWord16</a>(word16 &amp;value, ByteOrder order)00486 {00487         <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_11">Skip</a>(<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_8">PeekWord16</a>(value, order));00488 }00489 <a name="l00490"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_7">00490</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_7">BufferedTransformation::GetWord32</a>(word32 &amp;value, ByteOrder order)00491 {00492         <span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_11">Skip</a>(<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_9">PeekWord32</a>(value, order));00493 }00494 <a name="l00495"></a><a class="code" href="class_buffered_transformation.html#_zlib_decompressorz15_0">00495</a> <span class="keywordtype">void</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz15_0">BufferedTransformation::Attach</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *newOut)00496 {00497         <span class="keywordflow">if</span> (<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>() &amp;&amp; <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_0">Attachable</a>())00498                 <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz15_0">Attach</a>(newOut);00499         <span class="keywordflow">else</span>00500                 <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_3">Detach</a>(newOut);00501 }00502 <a name="l00503"></a><a class="code" href="class_generatable_crypto_material.html#_x_t_r___d_ha28">00503</a> <span class="keywordtype">void</span> <a class="code" href="class_generatable_crypto_material.html#_x_t_r___d_ha28">GeneratableCryptoMaterial::GenerateRandomWithKeySize</a>(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> keySize)00504 {00505         <a class="code" href="class_generatable_crypto_material.html#_x_t_r___d_ha27">GenerateRandom</a>(rng, MakeParameters(<span class="stringliteral">"KeySize"</span>, (<span class="keywordtype">int</span>)keySize));00506 }00507 <a name="l00508"></a><a class="code" href="class_p_k___encryptor.html#_t_f___public_object_impl_3_01_t_f___encryptor_base_00_01_s_c_h_e_m_e___o_p_t_i_o_n_s_01_4a12">00508</a> <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> * <a class="code" href="class_p_k___encryptor.html#_t_f___public_object_impl_3_01_t_f___encryptor_base_00_01_s_c_h_e_m_e___o_p_t_i_o_n_s_01_4a12">PK_Encryptor::CreateEncryptionFilter</a>(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment)<span class="keyword"> const</span>00509 <span class="keyword"></span>{00510         <span class="keyword">struct </span>EncryptionFilter : <span class="keyword">public</span> Unflushable&lt;FilterWithInputQueue&gt;00511         {00512                 <span class="comment">// VC60 complains if this function is missing</span>00513                 EncryptionFilter(<span class="keyword">const</span> EncryptionFilter &amp;x) : Unflushable&lt;FilterWithInputQueue&gt;(NULL), m_rng(x.m_rng), m_encryptor(x.m_encryptor) {}

⌨️ 快捷键说明

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