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

📄 test_8cpp-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00204"></a>00204                         }<a name="l00205"></a>00205                         word32 checksumPos = optionalHeaderPos + 64;<a name="l00206"></a>00206                         word32 certificateTableDirectoryPos = optionalHeaderPos + (optionalHeaderMagic == 0x10b ? 128 : 144);<a name="l00207"></a>00207                         word32 certificateTablePos = *(word32 *)(buf+certificateTableDirectoryPos);<a name="l00208"></a>00208                         word32 certificateTableSize = *(word32 *)(buf+certificateTableDirectoryPos+4);<a name="l00209"></a>00209                         <span class="keywordflow">if</span> (certificateTableSize != 0)<a name="l00210"></a>00210                                 cerr &lt;&lt; <span class="stringliteral">"Warning: certificate table (IMAGE_DIRECTORY_ENTRY_SECURITY) of target image is not empty.\n"</span>;<a name="l00211"></a>00211 <a name="l00212"></a>00212                         <span class="comment">// find where to place computed MAC</span><a name="l00213"></a>00213                         byte mac[] = <a class="code" href="fips140_8h.html#fa5d25ce1be2e8d1beda9340260a4d77">CRYPTOPP_DUMMY_DLL_MAC</a>;<a name="l00214"></a>00214                         byte *found = std::search(buf.begin(), buf.end(), mac+0, mac+<span class="keyword">sizeof</span>(mac));<a name="l00215"></a>00215                         <span class="keywordflow">if</span> (found == buf.end())<a name="l00216"></a>00216                         {<a name="l00217"></a>00217                                 cerr &lt;&lt; <span class="stringliteral">"MAC placeholder not found. Possibly the actual MAC was already placed.\n"</span>;<a name="l00218"></a>00218                                 <span class="keywordflow">return</span> 2;<a name="l00219"></a>00219                         }<a name="l00220"></a>00220                         word32 macPos = (<span class="keywordtype">unsigned</span> int)(found-buf.begin());<a name="l00221"></a>00221 <a name="l00222"></a>00222                         <span class="comment">// compute MAC</span><a name="l00223"></a>00223                         <a class="code" href="classmember__ptr.html">member_ptr&lt;MessageAuthenticationCode&gt;</a> pMac(<a class="code" href="fips140_8h.html#766d57f0d6451c714b95ba126258b487">NewIntegrityCheckingMAC</a>());<a name="l00224"></a>00224                         assert(pMac-&gt;DigestSize() == <span class="keyword">sizeof</span>(mac));<a name="l00225"></a>00225                         <a class="code" href="class_meter_filter.html" title="measure how many byte and messages pass through, also serves as valve">MeterFilter</a> f(<span class="keyword">new</span> <a class="code" href="class_hash_filter.html" title="Filter Wrapper for HashTransformation.">HashFilter</a>(*pMac, <span class="keyword">new</span> <a class="code" href="class_array_sink.html" title="Copy input to a memory buffer.">ArraySink</a>(mac, <span class="keyword">sizeof</span>(mac))));<a name="l00226"></a>00226                         f.AddRangeToSkip(0, checksumPos, 4);<a name="l00227"></a>00227                         f.AddRangeToSkip(0, certificateTableDirectoryPos, 8);<a name="l00228"></a>00228                         f.AddRangeToSkip(0, macPos, <span class="keyword">sizeof</span>(mac));<a name="l00229"></a>00229                         f.AddRangeToSkip(0, certificateTablePos, certificateTableSize);<a name="l00230"></a>00230                         f.PutMessageEnd(buf.begin(), buf.size());<a name="l00231"></a>00231 <a name="l00232"></a>00232                         <span class="comment">// place MAC</span><a name="l00233"></a>00233                         cout &lt;&lt; <span class="stringliteral">"Placing MAC in file "</span> &lt;&lt; argv[2] &lt;&lt; <span class="stringliteral">", location "</span> &lt;&lt; macPos &lt;&lt; <span class="stringliteral">".\n"</span>;<a name="l00234"></a>00234                         dllFile.seekg(macPos, std::ios_base::beg);<a name="l00235"></a>00235                         dllFile.write((<span class="keywordtype">char</span> *)mac, <span class="keyword">sizeof</span>(mac));<a name="l00236"></a>00236                 }<a name="l00237"></a>00237                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"m"</span>)<a name="l00238"></a>00238                         DigestFile(argv[2]);<a name="l00239"></a>00239                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"tv"</span>)<a name="l00240"></a>00240                 {<a name="l00241"></a>00241                         std::string fname = argv[2];<a name="l00242"></a>00242                         <span class="keywordflow">if</span> (fname.find(<span class="stringliteral">".txt"</span>) == std::string::npos)<a name="l00243"></a>00243                                 fname = <span class="stringliteral">"TestVectors/"</span> + fname + <span class="stringliteral">".txt"</span>;<a name="l00244"></a>00244                         <span class="keywordflow">return</span> !RunTestDataFile(fname.c_str());<a name="l00245"></a>00245                 }<a name="l00246"></a>00246                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"t"</span>)<a name="l00247"></a>00247                 {<a name="l00248"></a>00248                         <span class="comment">// VC60 workaround: use char array instead of std::string to workaround MSVC's getline bug</span><a name="l00249"></a>00249                         <span class="keywordtype">char</span> passPhrase[MAX_PHRASE_LENGTH], plaintext[1024];<a name="l00250"></a>00250 <a name="l00251"></a>00251                         cout &lt;&lt; <span class="stringliteral">"Passphrase: "</span>;<a name="l00252"></a>00252                         cin.getline(passPhrase, MAX_PHRASE_LENGTH);<a name="l00253"></a>00253 <a name="l00254"></a>00254                         cout &lt;&lt; <span class="stringliteral">"\nPlaintext: "</span>;<a name="l00255"></a>00255                         cin.getline(plaintext, 1024);<a name="l00256"></a>00256 <a name="l00257"></a>00257                         <span class="keywordtype">string</span> ciphertext = EncryptString(plaintext, passPhrase);<a name="l00258"></a>00258                         cout &lt;&lt; <span class="stringliteral">"\nCiphertext: "</span> &lt;&lt; ciphertext &lt;&lt; endl;<a name="l00259"></a>00259 <a name="l00260"></a>00260                         <span class="keywordtype">string</span> decrypted = DecryptString(ciphertext.c_str(), passPhrase);<a name="l00261"></a>00261                         cout &lt;&lt; <span class="stringliteral">"\nDecrypted: "</span> &lt;&lt; decrypted &lt;&lt; endl;<a name="l00262"></a>00262 <a name="l00263"></a>00263                         <span class="keywordflow">return</span> 0;<a name="l00264"></a>00264                 }<a name="l00265"></a>00265                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"e64"</span>)<a name="l00266"></a>00266                         Base64Encode(argv[2], argv[3]);<a name="l00267"></a>00267                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"d64"</span>)<a name="l00268"></a>00268                         Base64Decode(argv[2], argv[3]);<a name="l00269"></a>00269                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"e16"</span>)<a name="l00270"></a>00270                         HexEncode(argv[2], argv[3]);<a name="l00271"></a>00271                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"d16"</span>)<a name="l00272"></a>00272                         HexDecode(argv[2], argv[3]);<a name="l00273"></a>00273                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"e"</span> || command == <span class="stringliteral">"d"</span>)<a name="l00274"></a>00274                 {<a name="l00275"></a>00275                         <span class="keywordtype">char</span> passPhrase[MAX_PHRASE_LENGTH];<a name="l00276"></a>00276                         cout &lt;&lt; <span class="stringliteral">"Passphrase: "</span>;<a name="l00277"></a>00277                         cin.getline(passPhrase, MAX_PHRASE_LENGTH);<a name="l00278"></a>00278                         <span class="keywordflow">if</span> (command == <span class="stringliteral">"e"</span>)<a name="l00279"></a>00279                                 EncryptFile(argv[2], argv[3], passPhrase);<a name="l00280"></a>00280                         <span class="keywordflow">else</span><a name="l00281"></a>00281                                 DecryptFile(argv[2], argv[3], passPhrase);<a name="l00282"></a>00282                 }<a name="l00283"></a>00283                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"ss"</span>)<a name="l00284"></a>00284                 {<a name="l00285"></a>00285                         <span class="keywordtype">char</span> seed[1024];<a name="l00286"></a>00286                         cout &lt;&lt; <span class="stringliteral">"\nRandom Seed: "</span>;<a name="l00287"></a>00287                         ws(cin);<a name="l00288"></a>00288                         cin.getline(seed, 1024);<a name="l00289"></a>00289                         SecretShareFile(atoi(argv[2]), atoi(argv[3]), argv[4], seed);<a name="l00290"></a>00290                 }<a name="l00291"></a>00291                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"sr"</span>)<a name="l00292"></a>00292                         SecretRecoverFile(argc-3, argv[2], argv+3);<a name="l00293"></a>00293                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"id"</span>)<a name="l00294"></a>00294                         InformationDisperseFile(atoi(argv[2]), atoi(argv[3]), argv[4]);<a name="l00295"></a>00295                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"ir"</span>)<a name="l00296"></a>00296                         InformationRecoverFile(argc-3, argv[2], argv+3);<a name="l00297"></a>00297                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"v"</span>)<a name="l00298"></a>00298                         <span class="keywordflow">return</span> !Validate(argc&gt;2 ? atoi(argv[2]) : 0, argv[1][1] == <span class="charliteral">'v'</span>, argc&gt;3 ? argv[3] : NULL);<a name="l00299"></a>00299                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"b"</span>)<a name="l00300"></a>00300                         BenchmarkAll(argc&lt;3 ? 1 : atof(argv[2]), argc&lt;4 ? 0 : atof(argv[3])*1e9);<a name="l00301"></a>00301                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"b2"</span>)<a name="l00302"></a>00302                         BenchmarkAll2(argc&lt;3 ? 1 : atof(argv[2]), argc&lt;4 ? 0 : atof(argv[3])*1e9);<a name="l00303"></a>00303                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"z"</span>)<a name="l00304"></a>00304                         GzipFile(argv[3], argv[4], argv[2][0]-<span class="charliteral">'0'</span>);<a name="l00305"></a>00305                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"u"</span>)<a name="l00306"></a>00306                         GunzipFile(argv[2], argv[3]);<a name="l00307"></a>00307                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"fips"</span>)<a name="l00308"></a>00308                         FIPS140_SampleApplication();<a name="l00309"></a>00309                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"fips-rand"</span>)<a name="l00310"></a>00310                         FIPS140_GenerateRandomFiles();<a name="l00311"></a>00311                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"ft"</span>)<a name="l00312"></a>00312                         ForwardTcpPort(argv[2], argv[3], argv[4]);<a name="l00313"></a>00313                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"a"</span>)<a name="l00314"></a>00314                 {<a name="l00315"></a>00315                         <span class="keywordflow">if</span> (AdhocTest)

⌨️ 快捷键说明

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