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

📄 ida_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00288         m_pad = parameters.<a class="code" href="class_name_value_pairs.html#_x_t_r___d_ha40">GetValueWithDefault</a>(<span class="stringliteral">"RemovePadding"</span>, <span class="keyword">true</span>);00289         <a class="code" href="class_filter.html#_zlib_decompressora13">RawIDA::Initialize</a>(CombinedNameValuePairs(parameters, MakeParameters(<span class="stringliteral">"OutputChannelID"</span>, (word32)0xffffffff)), propagation);00290 }00291 00292 <span class="keywordtype">void</span> SecretRecovery::FlushOutputQueues()00293 {00294         <span class="keywordflow">if</span> (m_pad)00295                 m_outputQueues[0].TransferTo(*<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>(), m_outputQueues[0].<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_0">MaxRetrievable</a>()-4);00296         <span class="keywordflow">else</span>00297                 m_outputQueues[0].TransferTo(*<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>());00298 }00299 00300 <span class="keywordtype">void</span> SecretRecovery::OutputMessageEnds()00301 {00302         <span class="keywordflow">if</span> (m_pad)00303         {00304                 PaddingRemover paddingRemover(<span class="keyword">new</span> <a class="code" href="class_redirector.html">Redirector</a>(*<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()));00305                 m_outputQueues[0].TransferAllTo(paddingRemover);00306         }00307 00308         <span class="keywordflow">if</span> (GetAutoSignalPropagation() != 0)00309                 <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>(GetAutoSignalPropagation()-1);00310 }00311 00312 <span class="comment">// ****************************************************************</span>00313 00314 <span class="keywordtype">void</span> <a class="code" href="class_information_dispersal.html#_information_dispersala1">InformationDispersal::Initialize</a>(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters, <span class="keywordtype">int</span> propagation)00315 {00316         m_nextChannel = 0;00317         m_pad = parameters.<a class="code" href="class_name_value_pairs.html#_x_t_r___d_ha40">GetValueWithDefault</a>(<span class="stringliteral">"AddPadding"</span>, <span class="keyword">true</span>);00318         m_ida.Initialize(parameters, propagation);00319 }00320 00321 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_information_dispersal.html#_information_dispersala2">InformationDispersal::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)00322 {00323         <span class="keywordflow">if</span> (!blocking)00324                 <span class="keywordflow">throw</span> BlockingInputOnly(<span class="stringliteral">"InformationDispersal"</span>);00325         00326         <span class="keywordflow">while</span> (length--)00327         {00328                 m_ida.<a class="code" href="class_raw_i_d_a.html#_secret_recoverya4">ChannelData</a>(m_nextChannel, begin, 1, <span class="keyword">false</span>);00329                 begin++;00330                 m_nextChannel++;00331                 <span class="keywordflow">if</span> (m_nextChannel == m_ida.<a class="code" href="class_raw_i_d_a.html#_secret_recoverya2">GetThreshold</a>())00332                         m_nextChannel = 0;00333         }00334 00335         <span class="keywordflow">if</span> (messageEnd)00336         {00337                 m_ida.SetAutoSignalPropagation(messageEnd-1);00338                 <span class="keywordflow">if</span> (m_pad)00339                         <a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">InformationDispersal::Put</a>(1);00340                 <span class="keywordflow">for</span> (word32 i=0; i&lt;m_ida.<a class="code" href="class_raw_i_d_a.html#_secret_recoverya2">GetThreshold</a>(); i++)00341                         m_ida.<a class="code" href="class_raw_i_d_a.html#_secret_recoverya4">ChannelData</a>(i, NULL, 0, <span class="keyword">true</span>);00342         }00343 00344         <span class="keywordflow">return</span> 0;00345 }00346 00347 <span class="keywordtype">void</span> <a class="code" href="class_information_recovery.html#_information_recoverya1">InformationRecovery::Initialize</a>(<span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html">NameValuePairs</a> &amp;parameters, <span class="keywordtype">int</span> propagation)00348 {00349         m_pad = parameters.<a class="code" href="class_name_value_pairs.html#_x_t_r___d_ha40">GetValueWithDefault</a>(<span class="stringliteral">"RemovePadding"</span>, <span class="keyword">true</span>);00350         <a class="code" href="class_filter.html#_zlib_decompressora13">RawIDA::Initialize</a>(parameters, propagation);00351 }00352 00353 <span class="keywordtype">void</span> InformationRecovery::FlushOutputQueues()00354 {00355         <span class="keywordflow">while</span> (m_outputQueues[0].AnyRetrievable())00356         {00357                 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;m_outputChannelIds.size(); i++)00358                         m_outputQueues[i].TransferTo(m_queue, 1);00359         }00360 00361         <span class="keywordflow">if</span> (m_pad)00362                 m_queue.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(*<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>(), m_queue.<a class="code" href="class_byte_queue.html#_d_e_r_set_encodera3">MaxRetrievable</a>()-4*m_threshold);00363         <span class="keywordflow">else</span>00364                 m_queue.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz7_10">TransferTo</a>(*<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>());00365 }00366 00367 <span class="keywordtype">void</span> InformationRecovery::OutputMessageEnds()00368 {00369         <span class="keywordflow">if</span> (m_pad)00370         {00371                 PaddingRemover paddingRemover(<span class="keyword">new</span> <a class="code" href="class_redirector.html">Redirector</a>(*<a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()));00372                 m_queue.<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz9_8">TransferAllTo</a>(paddingRemover);00373         }00374 00375         <span class="keywordflow">if</span> (GetAutoSignalPropagation() != 0)00376                 <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_7">MessageEnd</a>(GetAutoSignalPropagation()-1);00377 }00378 00379 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PaddingRemover::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)00380 {00381         <span class="keywordflow">if</span> (!blocking)00382                 <span class="keywordflow">throw</span> BlockingInputOnly(<span class="stringliteral">"PaddingRemover"</span>);00383 00384         <span class="keyword">const</span> byte *<span class="keyword">const</span> end = begin + length;00385 00386         <span class="keywordflow">if</span> (m_possiblePadding)00387         {00388                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = find_if(begin, end, bind2nd(not_equal_to&lt;byte&gt;(), 0)) - begin;00389                 m_zeroCount += len;00390                 begin += len;00391                 <span class="keywordflow">if</span> (begin == end)00392                         <span class="keywordflow">return</span> 0;00393 00394                 <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(1);00395                 <span class="keywordflow">while</span> (m_zeroCount--)00396                         <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(0);00397                 <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(*begin++);00398                 m_possiblePadding = <span class="keyword">false</span>;00399         }00400 00401 <span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; !defined(__MWERKS__)</span>00402 <span class="preprocessor"></span>        <span class="comment">// VC60 workaround: built-in reverse_iterator has two template parameters, Dinkumware only has one</span>00403         <span class="keyword">typedef</span> reverse_bidirectional_iterator&lt;const byte *, const byte&gt; rit;00404 <span class="preprocessor">#else</span>00405 <span class="preprocessor"></span>        <span class="keyword">typedef</span> reverse_iterator&lt;const byte *&gt; rit;00406 <span class="preprocessor">#endif</span>00407 <span class="preprocessor"></span>        <span class="keyword">const</span> byte *x = find_if(rit(end), rit(begin), bind2nd(not_equal_to&lt;byte&gt;(), 0)).base();00408         <span class="keywordflow">if</span> (x != begin &amp;&amp; *(x-1) == 1)00409         {00410                 <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(begin, x-begin-1);00411                 m_possiblePadding = <span class="keyword">true</span>;00412                 m_zeroCount = end - x;00413         }00414         <span class="keywordflow">else</span>00415                 <a class="code" href="class_filter.html#_zlib_decompressora8">AttachedTransformation</a>()-&gt;<a class="code" href="class_buffered_transformation.html#_zlib_decompressorz1_0">Put</a>(begin, end-begin);00416 00417         <span class="keywordflow">if</span> (messageEnd)00418         {00419                 m_possiblePadding = <span class="keyword">false</span>;00420                 Output(0, begin, length, messageEnd, blocking);00421         }00422         <span class="keywordflow">return</span> 0;00423 }00424 00425 NAMESPACE_END</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:16 2003 for Crypto++ by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>

⌨️ 快捷键说明

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