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> &target, <span class="keyword">const</span> std::string &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>()-><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> &target, <span class="keyword">const</span> std::string &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>()-><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 &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>()-><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 &channel, word16 value, ByteOrder order, <span class="keywordtype">bool</span> blocking)00436 {00437 FixedSizeSecBlock<byte, 2> 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 &channel, word32 value, ByteOrder order, <span class="keywordtype">bool</span> blocking)00443 {00444 FixedSizeSecBlock<byte, 4> 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 &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] << 8) | buf[1];00466 <span class="keywordflow">else</span>00467 value = (buf[1] << 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 &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] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf [3];00479 <span class="keywordflow">else</span>00480 value = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 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 &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 &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>() && <a class="code" href="class_buffered_transformation.html#_windows_pipe_sinkz15_1">AttachedTransformation</a>()-><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>()-><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> &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> &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<FilterWithInputQueue>00511 {00512 <span class="comment">// VC60 complains if this function is missing</span>00513 EncryptionFilter(<span class="keyword">const</span> EncryptionFilter &x) : Unflushable<FilterWithInputQueue>(NULL), m_rng(x.m_rng), m_encryptor(x.m_encryptor) {}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?