📄 test_8cpp-source.html
字号:
00140 <span class="keywordflow">case</span> <span class="charliteral">'v'</span>:00141 {00142 <span class="keywordtype">bool</span> verified = RSAVerifyFile(argv[2], argv[3], argv[4]);00143 cout << (verified ? <span class="stringliteral">"valid signature"</span> : <span class="stringliteral">"invalid signature"</span>) << endl;00144 <span class="keywordflow">return</span> 0;00145 }00146 <span class="keywordflow">default</span>:00147 {00148 <span class="keywordtype">char</span> privFilename[128], pubFilename[128];00149 <span class="keywordtype">char</span> seed[1024], message[1024];00150 00151 cout << <span class="stringliteral">"Private key file: "</span>;00152 cin >> privFilename;00153 00154 cout << <span class="stringliteral">"\nPublic key file: "</span>;00155 cin >> pubFilename;00156 00157 cout << <span class="stringliteral">"\nRandom Seed: "</span>;00158 ws(cin);00159 cin.getline(seed, 1024);00160 00161 cout << <span class="stringliteral">"\nMessage: "</span>;00162 cin.getline(message, 1024);00163 00164 string ciphertext = RSAEncryptString(pubFilename, seed, message);00165 cout << <span class="stringliteral">"\nCiphertext: "</span> << ciphertext << endl;00166 00167 string decrypted = RSADecryptString(privFilename, ciphertext.c_str());00168 cout << <span class="stringliteral">"\nDecrypted: "</span> << decrypted << endl;00169 00170 <span class="keywordflow">return</span> 0;00171 }00172 }00173 }00174 <span class="keywordflow">case</span> <span class="charliteral">'m'</span>:00175 <span class="keywordflow">if</span> (command == <span class="stringliteral">"mac_dll"</span>)00176 {00177 HMODULE hModule = LoadLibrary(argv[2]);00178 PGetPowerUpSelfTestStatus pGetPowerUpSelfTestStatus = (PGetPowerUpSelfTestStatus)GetProcAddress(hModule, <span class="stringliteral">"?GetPowerUpSelfTestStatus@CryptoPP@@YG?AW4PowerUpSelfTestStatus@1@XZ"</span>);00179 PGetActualMacAndLocation pGetActualMacAndLocation = (PGetActualMacAndLocation)GetProcAddress(hModule, <span class="stringliteral">"?GetActualMacAndLocation@CryptoPP@@YGPBEAAI0@Z"</span>);00180 00181 <a class="code" href="fips140_8h.html#a14">PowerUpSelfTestStatus</a> status = pGetPowerUpSelfTestStatus();00182 <span class="keywordflow">if</span> (status == POWER_UP_SELF_TEST_PASSED)00183 {00184 cout << <span class="stringliteral">"Crypto++ DLL MAC is valid. Nothing to do.\n"</span>;00185 <span class="keywordflow">return</span> 0;00186 }00187 00188 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> macSize, macFileLocation;00189 <span class="keyword">const</span> byte *pMac = pGetActualMacAndLocation(macSize, macFileLocation);00190 00191 <span class="keywordflow">if</span> (macFileLocation == 0)00192 {00193 cerr << <span class="stringliteral">"Could not find MAC location in Crypto++ DLL.\n"</span>;00194 <span class="keywordflow">return</span> 1;00195 }00196 <span class="keywordflow">else</span>00197 {00198 <a class="code" href="class_sec_block.html">SecByteBlock</a> mac(pMac, macSize); <span class="comment">// copy MAC before freeing the DLL</span>00199 BOOL r = FreeLibrary(hModule);00200 cout << <span class="stringliteral">"Placing MAC in file "</span> << argv[2] << <span class="stringliteral">", location "</span> << macFileLocation << <span class="stringliteral">".\n"</span>;00201 std::ofstream dllFile(argv[2], ios::in | ios::out | ios::binary);00202 dllFile.seekp(macFileLocation);00203 dllFile.write((<span class="keyword">const</span> <span class="keywordtype">char</span> *)mac.<a class="code" href="class_sec_block.html#_sec_block_with_hinta11">data</a>(), macSize);00204 <span class="keywordflow">if</span> (!dllFile.good())00205 {00206 cerr << <span class="stringliteral">"Error writing file.\n"</span>;00207 <span class="keywordflow">return</span> 1;00208 }00209 <span class="keywordflow">return</span> 0;00210 }00211 }00212 <span class="keywordflow">else</span>00213 {00214 DigestFile(argv[2]);00215 <span class="keywordflow">return</span> 0;00216 }00217 <span class="keywordflow">case</span> <span class="charliteral">'t'</span>:00218 {00219 <span class="comment">// VC60 workaround: use char array instead of std::string to workaround MSVC's getline bug</span>00220 <span class="keywordtype">char</span> passPhrase[MAX_PHRASE_LENGTH], plaintext[1024];00221 00222 cout << <span class="stringliteral">"Passphrase: "</span>;00223 cin.getline(passPhrase, MAX_PHRASE_LENGTH);00224 00225 cout << <span class="stringliteral">"\nPlaintext: "</span>;00226 cin.getline(plaintext, 1024);00227 00228 string ciphertext = EncryptString(plaintext, passPhrase);00229 cout << <span class="stringliteral">"\nCiphertext: "</span> << ciphertext << endl;00230 00231 string decrypted = DecryptString(ciphertext.c_str(), passPhrase);00232 cout << <span class="stringliteral">"\nDecrypted: "</span> << decrypted << endl;00233 00234 <span class="keywordflow">return</span> 0;00235 }00236 <span class="keywordflow">case</span> <span class="charliteral">'e'</span>:00237 <span class="keywordflow">case</span> <span class="charliteral">'d'</span>:00238 <span class="keywordflow">if</span> (command == <span class="stringliteral">"e64"</span>)00239 Base64Encode(argv[2], argv[3]);00240 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"d64"</span>)00241 Base64Decode(argv[2], argv[3]);00242 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"e16"</span>)00243 HexEncode(argv[2], argv[3]);00244 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (command == <span class="stringliteral">"d16"</span>)00245 HexDecode(argv[2], argv[3]);00246 <span class="keywordflow">else</span>00247 {00248 <span class="keywordtype">char</span> passPhrase[MAX_PHRASE_LENGTH];00249 cout << <span class="stringliteral">"Passphrase: "</span>;00250 cin.getline(passPhrase, MAX_PHRASE_LENGTH);00251 <span class="keywordflow">if</span> (command == <span class="stringliteral">"e"</span>)00252 EncryptFile(argv[2], argv[3], passPhrase);00253 <span class="keywordflow">else</span>00254 DecryptFile(argv[2], argv[3], passPhrase);00255 }00256 <span class="keywordflow">return</span> 0;00257 <span class="keywordflow">case</span> <span class="charliteral">'s'</span>:00258 <span class="keywordflow">if</span> (argv[1][1] == <span class="charliteral">'s'</span>)00259 {00260 <span class="keywordtype">char</span> seed[1024];00261 cout << <span class="stringliteral">"\nRandom Seed: "</span>;00262 ws(cin);00263 cin.getline(seed, 1024);00264 SecretShareFile(atoi(argv[2]), atoi(argv[3]), argv[4], seed);00265 }00266 <span class="keywordflow">else</span>00267 SecretRecoverFile(argc-3, argv[2], argv+3);00268 <span class="keywordflow">return</span> 0;00269 <span class="keywordflow">case</span> <span class="charliteral">'i'</span>:00270 <span class="keywordflow">if</span> (argv[1][1] == <span class="charliteral">'d'</span>)00271 InformationDisperseFile(atoi(argv[2]), atoi(argv[3]), argv[4]);00272 <span class="keywordflow">else</span>00273 InformationRecoverFile(argc-3, argv[2], argv+3);00274 <span class="keywordflow">return</span> 0;00275 <span class="keywordflow">case</span> <span class="charliteral">'v'</span>:00276 <span class="keywordflow">return</span> !Validate(argc>2 ? atoi(argv[2]) : 0, argv[1][1] == <span class="charliteral">'v'</span>, argc>3 ? argv[3] : NULL);00277 <span class="keywordflow">case</span> <span class="charliteral">'b'</span>:00278 <span class="keywordflow">if</span> (argc<3)00279 BenchMarkAll();00280 <span class="keywordflow">else</span>00281 BenchMarkAll((<span class="keywordtype">float</span>)atof(argv[2]));00282 <span class="keywordflow">return</span> 0;00283 <span class="keywordflow">case</span> <span class="charliteral">'z'</span>:00284 GzipFile(argv[3], argv[4], argv[2][0]-<span class="charliteral">'0'</span>);00285 <span class="keywordflow">return</span> 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -