📄 filters_8h-source.html
字号:
00434 <span class="keywordtype">bool</span> m_passSignal;00435 };00436 <span class="comment"></span>00437 <span class="comment">//! Base class for Filter classes that are proxies for a chain of other filters.</span><a name="l00438"></a><a class="code" href="class_proxy_filter.html">00438</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL ProxyFilter : <span class="keyword">public</span> FilterWithBufferedInput00439 {00440 <span class="keyword">public</span>:00441 ProxyFilter(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *filter, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lastSize, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment);00442 00443 <span class="keywordtype">void</span> <a class="code" href="class_filter_with_buffered_input.html#_stream_transformation_filtera8">IsolatedFlush</a>(<span class="keywordtype">bool</span> completeFlush);00444 00445 <span class="keywordtype">void</span> SetFilter(Filter *filter);00446 <span class="keywordtype">void</span> NextPutMultiple(<span class="keyword">const</span> byte *s, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len);00447 00448 <span class="keyword">protected</span>:00449 member_ptr<BufferedTransformation> m_filter;00450 OutputProxy *m_proxy;00451 };00452 <span class="comment"></span>00453 <span class="comment">//! simple proxy filter that doesn't modify the underlying filter's input or output</span><a name="l00454"></a><a class="code" href="class_simple_proxy_filter.html">00454</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL SimpleProxyFilter : <span class="keyword">public</span> ProxyFilter00455 {00456 <span class="keyword">public</span>:00457 SimpleProxyFilter(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *filter, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment)00458 : ProxyFilter(filter, 0, 0, attachment) {}00459 00460 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *) {}00461 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) {m_filter->MessageEnd();}00462 };00463 <span class="comment"></span>00464 <span class="comment">//! proxy for the filter created by PK_Encryptor::CreateEncryptionFilter</span>00465 <span class="comment"></span><span class="comment">/*! This class is here just to provide symmetry with VerifierFilter. */</span><a name="l00466"></a><a class="code" href="class_p_k___encryptor_filter.html">00466</a> <span class="keyword">class </span>CRYPTOPP_DLL PK_EncryptorFilter : <span class="keyword">public</span> SimpleProxyFilter00467 {00468 <span class="keyword">public</span>:00469 PK_EncryptorFilter(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <span class="keyword">const</span> <a class="code" href="class_p_k___encryptor.html">PK_Encryptor</a> &encryptor, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL)00470 : SimpleProxyFilter(encryptor.<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">CreateEncryptionFilter</a>(rng), attachment) {}00471 };00472 <span class="comment"></span>00473 <span class="comment">//! proxy for the filter created by PK_Decryptor::CreateDecryptionFilter</span>00474 <span class="comment"></span><span class="comment">/*! This class is here just to provide symmetry with SignerFilter. */</span><a name="l00475"></a><a class="code" href="class_p_k___decryptor_filter.html">00475</a> <span class="keyword">class </span>CRYPTOPP_DLL PK_DecryptorFilter : <span class="keyword">public</span> SimpleProxyFilter00476 {00477 <span class="keyword">public</span>:00478 PK_DecryptorFilter(<span class="keyword">const</span> <a class="code" href="class_p_k___decryptor.html">PK_Decryptor</a> &decryptor, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL)00479 : SimpleProxyFilter(decryptor.<a class="code" href="class_p_k___decryptor.html#_t_f___private_object_impl_3_01_t_f___decryptor_base_00_01_s_c_h_e_m_e___o_p_t_i_o_n_s_01_4a14">CreateDecryptionFilter</a>(), attachment) {}00480 };00481 <span class="comment"></span>00482 <span class="comment">//! Append input to a string object</span>00483 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> T><a name="l00484"></a><a class="code" href="class_string_sink_template.html">00484</a> <span class="keyword">class </span><a class="code" href="class_string_sink_template.html">StringSinkTemplate</a> : <span class="keyword">public</span> Bufferless<Sink>00485 {00486 <span class="keyword">public</span>:00487 <span class="comment">// VC60 workaround: no T::char_type</span>00488 <span class="keyword">typedef</span> <span class="keyword">typename</span> T::traits_type::char_type char_type;00489 00490 <a class="code" href="class_string_sink_template.html">StringSinkTemplate</a>(T &output)00491 : m_output(&output) {assert(<span class="keyword">sizeof</span>(output[0])==1);}00492 00493 <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters)00494 {<span class="keywordflow">if</span> (!parameters.<a class="code" href="class_name_value_pairs.html#_x_t_r___d_ha39">GetValue</a>(<span class="stringliteral">"OutputStringPointer"</span>, m_output)) <span class="keywordflow">throw</span> <a class="code" href="class_invalid_argument.html">InvalidArgument</a>(<span class="stringliteral">"StringSink: OutputStringPointer not specified"</span>);}<a name="l00495"></a><a class="code" href="class_string_sink_template.html#_string_sink_templatea2">00495</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_string_sink_template.html#_string_sink_templatea2">Put2</a>(<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)00496 {00497 m_output->append((<span class="keyword">const</span> char_type *)begin, (<span class="keyword">const</span> char_type *)begin+length);00498 <span class="keywordflow">return</span> 0;00499 }00500 00501 <span class="keyword">private</span>: 00502 T *m_output;00503 };00504 <span class="comment"></span>00505 <span class="comment">//! Append input to an std::string</span>00506 <span class="comment"></span>CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_string_sink_template.html">StringSinkTemplate<std::string></a>;00507 <span class="keyword">typedef</span> StringSinkTemplate<std::string> <a class="code" href="class_string_sink_template.html">StringSink</a>;00508 <span class="comment"></span>00509 <span class="comment">//! Copy input to a memory buffer</span><a name="l00510"></a><a class="code" href="class_array_sink.html">00510</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL ArraySink : <span class="keyword">public</span> Bufferless<Sink>00511 {00512 <span class="keyword">public</span>:00513 ArraySink(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters = g_nullNameValuePairs) {IsolatedInitialize(parameters);}00514 ArraySink(byte *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size) : m_buf(buf), m_size(size), m_total(0) {}00515 00516 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> AvailableSize() {<span class="keywordflow">return</span> m_size - STDMIN(m_total, (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)m_size);}00517 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> TotalPutLength() {<span class="keywordflow">return</span> m_total;}00518 00519 <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters);00520 byte * CreatePutSpace(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &size);00521 <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);00522 00523 <span class="keyword">protected</span>:00524 byte *m_buf;00525 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_size;00526 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> m_total;00527 };00528 <span class="comment"></span>00529 <span class="comment">//! Xor input to a memory buffer</span><a name="l00530"></a><a class="code" href="class_array_xor_sink.html">00530</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL ArrayXorSink : <span class="keyword">public</span> ArraySink00531 {00532 <span class="keyword">public</span>:00533 ArrayXorSink(byte *buf, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size)00534 : ArraySink(buf, size) {}00535 00536 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_array_sink.html#_array_sinka6">Put2</a>(<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);<a name="l00537"></a><a class="code" href="class_array_xor_sink.html#_array_xor_sinka2">00537</a> byte * <a class="code" href="class_array_sink.html#_array_sinka5">CreatePutSpace</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &size) {<span class="keywordflow">return</span> <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_4">BufferedTransformation::CreatePutSpace</a>(size);}00538 };00539 <span class="comment"></span>00540 <span class="comment">//! .</span><a name="l00541"></a><a class="code" hr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -