📄 filters_8h-source.html
字号:
00214 FilterWithInputQueue(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment) : Filter(attachment) {}<a name="l00215"></a><a class="code" href="class_filter_with_input_queue.html#_filter_with_input_queuea1">00215</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_buffered_transformation.html#_unflushable_3_01_sink_01_4z1_9">Put2</a>(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> messageEnd, <span class="keywordtype">bool</span> blocking)00216 {00217 <span class="keywordflow">if</span> (!blocking)00218 <span class="keywordflow">throw</span> BlockingInputOnly(<span class="stringliteral">"FilterWithInputQueue"</span>);00219 00220 m_inQueue.Put(inString, length);00221 <span class="keywordflow">if</span> (messageEnd)00222 {00223 IsolatedMessageEnd(blocking);00224 Output(0, NULL, 0, messageEnd, blocking);00225 }00226 <span class="keywordflow">return</span> 0;00227 }00228 00229 <span class="keyword">protected</span>:00230 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsolatedMessageEnd(<span class="keywordtype">bool</span> blocking) =0;00231 <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters) {m_inQueue.Clear();}00232 00233 <a class="code" href="class_byte_queue.html">ByteQueue</a> m_inQueue;00234 };00235 <span class="comment"></span>00236 <span class="comment">//! Filter Wrapper for StreamTransformation</span><a name="l00237"></a><a class="code" href="class_stream_transformation_filter.html">00237</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL StreamTransformationFilter : <span class="keyword">public</span> FilterWithBufferedInput, <span class="keyword">private</span> FilterPutSpaceHelper00238 {00239 <span class="keyword">public</span>:00240 <span class="keyword">enum</span> BlockPaddingScheme {NO_PADDING, ZEROS_PADDING, PKCS_PADDING, ONE_AND_ZEROS_PADDING, DEFAULT_PADDING};<span class="comment"></span>00241 <span class="comment"> /*! DEFAULT_PADDING means PKCS_PADDING if c.MandatoryBlockSize() > 1 && c.MinLastBlockSize() == 0 (e.g. ECB or CBC mode),</span>00242 <span class="comment"> otherwise NO_PADDING (OFB, CFB, CTR, CBC-CTS modes) */</span>00243 StreamTransformationFilter(<a class="code" href="class_stream_transformation.html">StreamTransformation</a> &c, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, BlockPaddingScheme padding = DEFAULT_PADDING);00244 00245 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString);00246 <span class="keywordtype">void</span> NextPutMultiple(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00247 <span class="keywordtype">void</span> NextPutModifiable(byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00248 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00249 <span class="comment">// byte * CreatePutSpace(unsigned int &size);</span>00250 00251 <span class="keyword">protected</span>:00252 <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> LastBlockSize(<a class="code" href="class_stream_transformation.html">StreamTransformation</a> &c, BlockPaddingScheme padding);00253 00254 <a class="code" href="class_stream_transformation.html">StreamTransformation</a> &m_cipher;00255 BlockPaddingScheme m_padding;00256 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_optimalBufferSize;00257 };00258 00259 <span class="preprocessor">#ifdef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY</span>00260 <span class="preprocessor"></span><span class="keyword">typedef</span> StreamTransformationFilter StreamCipherFilter;00261 <span class="preprocessor">#endif</span>00262 <span class="preprocessor"></span><span class="comment"></span>00263 <span class="comment">//! Filter Wrapper for HashTransformation</span><a name="l00264"></a><a class="code" href="class_hash_filter.html">00264</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL HashFilter : <span class="keyword">public</span> Bufferless<Filter>, <span class="keyword">private</span> FilterPutSpaceHelper00265 {00266 <span class="keyword">public</span>:00267 HashFilter(<a class="code" href="class_hash_transformation.html">HashTransformation</a> &hm, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">bool</span> putMessage=<span class="keyword">false</span>)00268 : Bufferless<Filter>(attachment), m_hashModule(hm), m_putMessage(putMessage) {}00269 00270 <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters);00271 <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);00272 <a name="l00273"></a><a class="code" href="class_hash_filter.html#_hash_filtera3">00273</a> byte * CreatePutSpace(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &size) {<span class="keywordflow">return</span> m_hashModule.CreateUpdateSpace(size);}00274 00275 <span class="keyword">private</span>:00276 <a class="code" href="class_hash_transformation.html">HashTransformation</a> &m_hashModule;00277 <span class="keywordtype">bool</span> m_putMessage;00278 byte *m_space;00279 };00280 <span class="comment"></span>00281 <span class="comment">//! Filter Wrapper for HashTransformation</span><a name="l00282"></a><a class="code" href="class_hash_verification_filter.html">00282</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL HashVerificationFilter : <span class="keyword">public</span> FilterWithBufferedInput00283 {00284 <span class="keyword">public</span>:00285 <span class="keyword">class </span>HashVerificationFailed : <span class="keyword">public</span> <a class="code" href="class_exception.html">Exception</a>00286 {00287 <span class="keyword">public</span>:00288 HashVerificationFailed()00289 : <a class="code" href="class_exception.html">Exception</a>(DATA_INTEGRITY_CHECK_FAILED, <span class="stringliteral">"HashVerifier: message hash not valid"</span>) {}00290 };00291 00292 <span class="keyword">enum</span> Flags {HASH_AT_BEGIN=1, PUT_MESSAGE=2, PUT_HASH=4, PUT_RESULT=8, THROW_EXCEPTION=16, DEFAULT_FLAGS = HASH_AT_BEGIN | PUT_RESULT};00293 HashVerificationFilter(<a class="code" href="class_hash_transformation.html">HashTransformation</a> &hm, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, word32 flags = DEFAULT_FLAGS);00294 00295 <span class="keywordtype">bool</span> GetLastResult()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_verified;}00296 00297 <span class="keyword">protected</span>:00298 <span class="keywordtype">void</span> InitializeDerivedAndReturnNewSizes(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &lastSize);00299 <span class="keywordtype">void</span> FirstPut(<span class="keyword">const</span> byte *inString);00300 <span class="keywordtype">void</span> NextPutMultiple(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00301 <span class="keywordtype">void</span> LastPut(<span class="keyword">const</span> byte *inString, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length);00302 00303 <span class="keyword">private</span>:00304 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FirstSize(word32 flags, <a class="code" href="class_hash_transformation.html">HashTransformation</a> &hm) {<span class="keywordflow">return</span> flags & HASH_AT_BEGIN ? hm.<a class="code" href="class_hash_transformation.html#_x_m_a_c_ca9">DigestSize</a>() : 0;}00305 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> LastSize(word32 flags, <a class="code" href="class_hash_transformation.html">HashTransformation</a> &hm) {<span class="keywordflow">return</span> flags & HASH_AT_BEGIN ? 0 : hm.<a class="code" href="class_hash_transformation.html#_x_m_a_c_ca9">DigestSize</a>();}00306 00307 <a class="code" href="class_hash_transformation.html">HashTransformation</a> &m_hashModule;00308 word32 m_flags;00309 <a class="code" href="class_sec_block.html">SecByteBlock</a> m_expectedHash;00310 <span class="keywordtype">bool</span> m_verified;00311 };00312 00313 <span class="keyword">typedef</span> HashVerificationFilter <a class="code" href="class_hash_verification_filter.html">HashVerifier</a>; <span class="comment">// for backwards compatibility</span>00314 <span class="comment"></span>00315 <span class="comment">//! Filter Wrapper for PK_Signer</span><a name="l00316"></a><a class="code" href="class_signer_filter.html">00316</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL SignerFilter : <span class="keyword">public</span> Unflushable<Filter>00317 {00318 <span class="keyword">public</span>:00319 SignerFilter(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <span class="keyword">const</span> <a class="code" href="class_p_k___signer.html">PK_Signer</a> &signer, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> *attachment = NULL, <span class="keywordtype">bool</span> putMessage=<span class="keyword">false</span>)00320 : Unflushable<Filter>(attachment), m_rng(rng), m_signer(signer), m_messageAccumulator(signer.<a class="code" href="class_p_k___signer.html#_signer_with_recovery_templatea12">NewSignatureAccumulator</a>()), m_putMessage(putMessage) {}00321 00322 <span class="keywordtype">void</span> IsolatedInitialize(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &parameters);00323 <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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -