⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filters_8h-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
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> &amp;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() &gt; 1 &amp;&amp; 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> &amp;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 &amp;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> &amp;c, BlockPaddingScheme padding);00253 00254         <a class="code" href="class_stream_transformation.html">StreamTransformation</a> &amp;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&lt;Filter&gt;, <span class="keyword">private</span> FilterPutSpaceHelper00265 {00266 <span class="keyword">public</span>:00267         HashFilter(<a class="code" href="class_hash_transformation.html">HashTransformation</a> &amp;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&lt;Filter&gt;(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> &amp;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> &amp;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> &amp;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> &amp;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> &amp;parameters, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;firstSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;blockSize, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;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> &amp;hm) {<span class="keywordflow">return</span> flags &amp; 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> &amp;hm) {<span class="keywordflow">return</span> flags &amp; 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> &amp;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&lt;Filter&gt;00317 {00318 <span class="keyword">public</span>:00319         SignerFilter(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, <span class="keyword">const</span> <a class="code" href="class_p_k___signer.html">PK_Signer</a> &amp;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&lt;Filter&gt;(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> &amp;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 + -