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

📄 fipstest_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00376"></a>00376                                         }<a name="l00377"></a>00377                                 }<a name="l00378"></a>00378 <span class="preprocessor">#endif</span><a name="l00379"></a>00379 <span class="preprocessor"></span><a name="l00380"></a>00380                                 <span class="keywordflow">if</span> (subSectionMemStart &lt;= expectedModuleMac &amp;&amp; expectedModuleMac &lt; subSectionMemStart + subSectionSize)<a name="l00381"></a>00381                                 {<a name="l00382"></a>00382                                         <span class="comment">// found stored MAC</span><a name="l00383"></a>00383                                         macFileLocation = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>)(subSectionFileStart + (expectedModuleMac - subSectionMemStart));<a name="l00384"></a>00384                                         verifier.AddRangeToSkip(0, macFileLocation, macSize);<a name="l00385"></a>00385                                 }<a name="l00386"></a>00386 <a name="l00387"></a>00387                                 file.<a class="code" href="class_buffered_transformation.html#91c4526148274ae9cb68803bb2d2a2aa" title="move transferMax bytes of the buffered output to target as input">TransferTo</a>(verifier, subSectionFileStart - currentFilePos);<a name="l00388"></a>00388                                 verifier.Put(subSectionMemStart, subSectionSize);<a name="l00389"></a>00389                                 file.<a class="code" href="class_file_store.html#224d31ea858a3c890fec604a030db7cf" title="discard skipMax bytes from the output buffer">Skip</a>(subSectionSize);<a name="l00390"></a>00390                                 currentFilePos = subSectionFileStart + subSectionSize;<a name="l00391"></a>00391                                 subSectionStart = nextSubSectionStart;<a name="l00392"></a>00392                         } <span class="keywordflow">while</span> (nextSubSectionStart != 0);<a name="l00393"></a>00393                 }<a name="l00394"></a>00394                 phs++;<a name="l00395"></a>00395         }<a name="l00396"></a>00396 <span class="preprocessor">#endif</span><a name="l00397"></a>00397 <span class="preprocessor"></span>        file.<a class="code" href="class_buffered_transformation.html#80b60bff9f62976c15effdbc45cbc5f1">TransferAllTo</a>(verifier);<a name="l00398"></a>00398 <a name="l00399"></a>00399 <span class="preprocessor">#ifdef CRYPTOPP_WIN32_AVAILABLE</span><a name="l00400"></a>00400 <span class="preprocessor"></span>        <span class="comment">// if that fails (could be caused by debug breakpoints or DLL base relocation modifying image in memory),</span><a name="l00401"></a>00401         <span class="comment">// hash from disk instead</span><a name="l00402"></a>00402         <span class="keywordflow">if</span> (memcmp(expectedModuleMac, actualMac, macSize) != 0)<a name="l00403"></a>00403         {<a name="l00404"></a>00404                 OutputDebugString(<span class="stringliteral">"In memory integrity check failed. This may be caused by debug breakpoints or DLL relocation.\n"</span>);<a name="l00405"></a>00405                 moduleStream.clear();<a name="l00406"></a>00406                 moduleStream.seekg(0);<a name="l00407"></a>00407                 verifier.Initialize(MakeParameters(<a class="code" href="namespace_name.html#54b71c75bd8b50e8bddfacf1f7b7b338" title="ByteArrayParameter.">Name::OutputBuffer</a>(), <a class="code" href="class_byte_array_parameter.html">ByteArrayParameter</a>(actualMac, (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)actualMac.size())));<a name="l00408"></a>00408 <span class="comment">//              verifier.Initialize(MakeParameters(Name::OutputFileName(), (const char *)"c:\\dt2.tmp"));</span><a name="l00409"></a>00409                 verifier.AddRangeToSkip(0, checksumPos, checksumSize);<a name="l00410"></a>00410                 verifier.AddRangeToSkip(0, certificateTableDirectoryPos, certificateTableDirectorySize);<a name="l00411"></a>00411                 verifier.AddRangeToSkip(0, certificateTablePos, certificateTableSize);<a name="l00412"></a>00412                 verifier.AddRangeToSkip(0, macFileLocation, macSize);<a name="l00413"></a>00413                 <a class="code" href="class_file_store.html" title="file-based implementation of Store interface">FileStore</a>(moduleStream).TransferAllTo(verifier);<a name="l00414"></a>00414         }<a name="l00415"></a>00415 <span class="preprocessor">#endif</span><a name="l00416"></a>00416 <span class="preprocessor"></span><a name="l00417"></a>00417         <span class="keywordflow">if</span> (memcmp(expectedModuleMac, actualMac, macSize) == 0)<a name="l00418"></a>00418                 <span class="keywordflow">return</span> <span class="keyword">true</span>;<a name="l00419"></a>00419 <a name="l00420"></a>00420 <span class="preprocessor">#ifdef CRYPTOPP_WIN32_AVAILABLE</span><a name="l00421"></a>00421 <span class="preprocessor"></span>        std::string hexMac;<a name="l00422"></a>00422         <a class="code" href="class_hex_encoder.html" title="Converts given data to base 16.">HexEncoder</a>(<span class="keyword">new</span> <a class="code" href="class_string_sink_template.html" title="Append input to a string object.">StringSink</a>(hexMac)).PutMessageEnd(actualMac, actualMac.size());<a name="l00423"></a>00423         OutputDebugString(((<span class="stringliteral">"Crypto++ DLL integrity check failed. Actual MAC is: "</span> + hexMac) + <span class="stringliteral">"\n"</span>).c_str());<a name="l00424"></a>00424 <span class="preprocessor">#endif</span><a name="l00425"></a>00425 <span class="preprocessor"></span>        <span class="keywordflow">return</span> <span class="keyword">false</span>;<a name="l00426"></a>00426 }<a name="l00427"></a>00427 <a name="l00428"></a><a class="code" href="fips140_8h.html#fbf72ca41794ab8c4be31b31070a903f">00428</a> <span class="keywordtype">void</span> <a class="code" href="fips140_8h.html#fbf72ca41794ab8c4be31b31070a903f" title="perform the power-up self test, and set the self test status">DoPowerUpSelfTest</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *moduleFilename, <span class="keyword">const</span> byte *expectedModuleMac)<a name="l00429"></a>00429 {<a name="l00430"></a>00430         g_powerUpSelfTestStatus = <a class="code" href="fips140_8h.html#8ccac50ac3bfc5abaa6cb457f0ded35d50805cb51444d59eb747962fa279ad27">POWER_UP_SELF_TEST_NOT_DONE</a>;<a name="l00431"></a>00431         SetPowerUpSelfTestInProgressOnThisThread(<span class="keyword">true</span>);<a name="l00432"></a>00432 <a name="l00433"></a>00433         <span class="keywordflow">try</span><a name="l00434"></a>00434         {<a name="l00435"></a>00435                 <span class="keywordflow">if</span> (FIPS_140_2_ComplianceEnabled() || expectedModuleMac != NULL)<a name="l00436"></a>00436                 {<a name="l00437"></a>00437                         <span class="keywordflow">if</span> (!<a class="code" href="fips140_8h.html#422b2c96912953afb9b01b7c498baed3">IntegrityCheckModule</a>(moduleFilename, expectedModuleMac, &amp;g_actualMac, &amp;g_macFileLocation))<a name="l00438"></a>00438                                 <span class="keywordflow">throw</span> 0;        <span class="comment">// throw here so we break in the debugger, this will be caught right away</span><a name="l00439"></a>00439                 }<a name="l00440"></a>00440 <a name="l00441"></a>00441                 <span class="comment">// algorithm tests</span><a name="l00442"></a>00442 <a name="l00443"></a>00443                 X917RNG_KnownAnswerTest&lt;AES&gt;(<a name="l00444"></a>00444                         <span class="stringliteral">"2b7e151628aed2a6abf7158809cf4f3c"</span>,                                                                             <span class="comment">// key</span><a name="l00445"></a>00445                         <span class="stringliteral">"000102030405060708090a0b0c0d0e0f"</span>,                                                                             <span class="comment">// seed</span><a name="l00446"></a>00446                         <span class="stringliteral">"00000000000000000000000000000001"</span>,                                                                             <span class="comment">// time vector</span><a name="l00447"></a>00447                         <span class="stringliteral">"D176EDD27493B0395F4D10546232B0693DC7061C03C3A554F09CECF6F6B46D945A"</span>);  <span class="comment">// output</span><a name="l00448"></a>00448 <a name="l00449"></a>00449                 SymmetricEncryptionKnownAnswerTest&lt;DES_EDE3&gt;(<a name="l00450"></a>00450                         <span class="stringliteral">"385D7189A5C3D485E1370AA5D408082B5CCCCB5E19F2D90E"</span>,<a name="l00451"></a>00451                         <span class="stringliteral">"C141B5FCCD28DC8A"</span>,<a name="l00452"></a>00452                         <span class="stringliteral">"6E1BD7C6120947A464A6AAB293A0F89A563D8D40D3461B68"</span>,<a name="l00453"></a>00453                         <span class="stringliteral">"64EAAD4ACBB9CEAD6C7615E7C7E4792FE587D91F20C7D2F4"</span>,<a name="l00454"></a>00454                         <span class="stringliteral">"6235A461AFD312973E3B4F7AA7D23E34E03371F8E8C376C9"</span>,<a name="l00455"></a>00455                         <span class="stringliteral">"E26BA806A59B0330DE40CA38E77A3E494BE2B212F6DD624B"</span>,<a name="l00456"></a>00456                         <span class="stringliteral">"E26BA806A59B03307DE2BCC25A08BA40A8BA335F5D604C62"</span>,<a name="l00457"></a>00457                         <span class="stringliteral">"E26BA806A59B03303C62C2EFF32D3ACDD5D5F35EBCC53371"</span>);<a name="l00458"></a>00458 <a name="l00459"></a>00459                 SymmetricEncryptionKnownAnswerTest&lt;SKIPJACK&gt;(<a name="l00460"></a>00460                         <span class="stringliteral">"1555E5531C3A169B2D65"</span>,<a name="l00461"></a>00461                         <span class="stringliteral">"6EC9795701F49864"</span>,<a name="l00462"></a>00462                         <span class="stringliteral">"00AFA48E9621E52E8CBDA312660184EDDB1F33D9DACDA8DA"</span>,<a name="l00463"></a>00463                         <span class="stringliteral">"DBEC73562EFCAEB56204EB8AE9557EBF77473FBB52D17CD1"</span>,<a name="l00464"></a>00464                         <span class="stringliteral">"0C7B0B74E21F99B8F2C8DF37879F6C044967F42A796DCA8B"</span>,<a name="l00465"></a>00465                         <span class="stringliteral">"79FDDA9724E36CC2E023E9A5C717A8A8A7FDA465CADCBF63"</span>,<a name="l00466"></a>00466                         <span class="stringliteral">"79FDDA9724E36CC26CACBD83C1ABC06EAF5B249BE5B1E040"</span>,<a name="l00467"></a>00467                         <span class="stringliteral">"79FDDA9724E36CC211B0AEC607B95A96BCDA318440B82F49"</span>);<a name="l00468"></a>00468 <a name="l00469"></a>00469                 SymmetricEncryptionKnownAnswerTest&lt;AES&gt;(<a name="l00470"></a>00470                         <span class="stringliteral">"2b7e151628aed2a6abf7158809cf4f3c"</span>,<a name="l00471"></a>00471                         <span class="stringliteral">"000102030405060708090a0b0c0d0e0f"</span>,<a name="l00472"></a>00472                         <span class="stringliteral">"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710"</span>,     <span class="comment">// plaintext</span><a name="l00473"></a>00473                         <span class="stringliteral">"3ad77bb40d7a3660a89ecaf32466ef97f5d3d58503b9699de785895a96fdbaaf43b1cd7f598ece23881b00e3ed0306887b0c785e27e8ad3f8223207104725dd4"</span>, <span class="comment">// ecb</span><a name="l00474"></a>00474                         <span class="stringliteral">"7649abac8119b246cee98e9b12e9197d5086cb9b507219ee95db113a917678b273bed6b8e3c1743b7116e69e222295163ff1caa1681fac09120eca307

⌨️ 快捷键说明

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