📄 validat2_8cpp-source.html
字号:
00372 00373 <span class="keywordtype">bool</span> ValidateDLIES()00374 {00375 cout << <span class="stringliteral">"\nDLIES validation suite running...\n\n"</span>;00376 <span class="keywordtype">bool</span> pass = <span class="keyword">true</span>;00377 {00378 <a class="code" href="class_file_source.html">FileSource</a> fc(<span class="stringliteral">"dlie1024.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00379 <a class="code" href="struct_d_l_i_e_s.html">DLIES<></a>::Decryptor privC(fc);00380 <a class="code" href="struct_d_l_i_e_s.html">DLIES<></a>::Encryptor pubC(privC);00381 pass = CryptoSystemValidate(privC, pubC) && pass;00382 }00383 {00384 cout << <span class="stringliteral">"Generating new encryption key..."</span> << endl;00385 <a class="code" href="struct_d_l_i_e_s.html">DLIES<></a>::GroupParameters gp;00386 gp.GenerateRandomWithKeySize(GlobalRNG(), 128);00387 <a class="code" href="struct_d_l_i_e_s.html">DLIES<></a>::Decryptor decryptor;00388 decryptor.AccessKey().GenerateRandom(GlobalRNG(), gp);00389 <a class="code" href="struct_d_l_i_e_s.html">DLIES<></a>::Encryptor encryptor(decryptor);00390 00391 pass = CryptoSystemValidate(decryptor, encryptor) && pass;00392 }00393 <span class="keywordflow">return</span> pass;00394 }00395 00396 <span class="keywordtype">bool</span> ValidateNR()00397 {00398 cout << <span class="stringliteral">"\nNR validation suite running...\n\n"</span>;00399 <span class="keywordtype">bool</span> pass = <span class="keyword">true</span>;00400 {00401 <a class="code" href="class_file_source.html">FileSource</a> f(<span class="stringliteral">"nr2048.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00402 <a class="code" href="struct_n_r.html">NR<SHA></a>::Signer privS(f);00403 privS.AccessKey().Precompute();00404 <a class="code" href="struct_n_r.html">NR<SHA></a>::Verifier pubS(privS);00405 00406 pass = SignatureValidate(privS, pubS) && pass;00407 }00408 {00409 cout << <span class="stringliteral">"Generating new signature key..."</span> << endl;00410 <a class="code" href="struct_n_r.html">NR<SHA></a>::Signer privS(GlobalRNG(), 256);00411 <a class="code" href="struct_n_r.html">NR<SHA></a>::Verifier pubS(privS);00412 00413 pass = SignatureValidate(privS, pubS) && pass;00414 }00415 <span class="keywordflow">return</span> pass;00416 }00417 00418 <span class="keywordtype">bool</span> ValidateDSA(<span class="keywordtype">bool</span> thorough)00419 {00420 cout << <span class="stringliteral">"\nDSA validation suite running...\n\n"</span>;00421 00422 <span class="keywordtype">bool</span> pass = <span class="keyword">true</span>, fail;00423 {00424 <a class="code" href="class_file_source.html">FileSource</a> fs(<span class="stringliteral">"dsa512.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>());00425 <a class="code" href="struct_g_d_s_a.html">GDSA<SHA></a>::Signer priv(fs);00426 priv.AccessKey().Precompute(16);00427 <a class="code" href="struct_g_d_s_a.html">GDSA<SHA></a>::Verifier pub(priv);00428 00429 byte seed[]={0xd5, 0x01, 0x4e, 0x4b, 0x60, 0xef, 0x2b, 0xa8, 0xb6, 0x21, 00430 0x1b, 0x40, 0x62, 0xba, 0x32, 0x24, 0xe0, 0x42, 0x7d, 0xd3};00431 <a class="code" href="class_integer.html">Integer</a> k(<span class="stringliteral">"358dad57 1462710f 50e254cf 1a376b2b deaadfbfh"</span>);00432 <a class="code" href="class_integer.html">Integer</a> h(<span class="stringliteral">"a9993e36 4706816a ba3e2571 7850c26c 9cd0d89dh"</span>);00433 byte sig[]={0x8b, 0xac, 0x1a, 0xb6, 0x64, 0x10, 0x43, 0x5c, 0xb7, 0x18,00434 0x1f, 0x95, 0xb1, 0x6a, 0xb9, 0x7c, 0x92, 0xb3, 0x41, 0xc0, 00435 0x41, 0xe2, 0x34, 0x5f, 0x1f, 0x56, 0xdf, 0x24, 0x58, 0xf4, 00436 0x26, 0xd1, 0x55, 0xb4, 0xba, 0x2d, 0xb6, 0xdc, 0xd8, 0xc8};00437 <a class="code" href="class_integer.html">Integer</a> r(sig, 20);00438 <a class="code" href="class_integer.html">Integer</a> s(sig+20, 20);00439 00440 <a class="code" href="class_integer.html">Integer</a> pGen, qGen, rOut, sOut;00441 <span class="keywordtype">int</span> c;00442 00443 fail = !<a class="code" href="struct_d_s_a.html#_d_s_ae1">DSA::GeneratePrimes</a>(seed, 160, c, pGen, 512, qGen);00444 fail = fail || (pGen != pub.GetKey().GetGroupParameters().GetModulus()) || (qGen != pub.GetKey().GetGroupParameters().GetSubgroupOrder());00445 pass = pass && !fail;00446 00447 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>);00448 cout << <span class="stringliteral">"prime generation test\n"</span>;00449 00450 priv.GetDigestSignatureScheme().RawSign(k, h, rOut, sOut);00451 fail = (rOut != r) || (sOut != s);00452 pass = pass && !fail;00453 00454 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>);00455 cout << <span class="stringliteral">"signature check against test vector\n"</span>;00456 00457 fail = !pub.VerifyMessage((byte *)<span class="stringliteral">"abc"</span>, 3, sig);00458 pass = pass && !fail;00459 00460 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>);00461 cout << <span class="stringliteral">"verification check against test vector\n"</span>;00462 00463 fail = pub.VerifyMessage((byte *)<span class="stringliteral">"xyz"</span>, 3, sig);00464 pass = pass && !fail;00465 }00466 <a class="code" href="class_file_source.html">FileSource</a> fs1(<span class="stringliteral">"dsa1024.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>());00467 <a class="code" href="class_d_l___s_s_a.html#_d_l___s_s_aw0">DSA::Signer</a> priv(fs1);00468 <a class="code" href="class_d_l___s_s_a.html#_d_l___s_s_aw1">DSA::Verifier</a> pub(priv);00469 <a class="code" href="class_file_source.html">FileSource</a> fs2(<span class="stringliteral">"dsa1024b.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>());00470 <a class="code" href="class_d_l___s_s_a.html#_d_l___s_s_aw1">DSA::Verifier</a> pub1(fs2);00471 assert(pub.GetKey() == pub1.GetKey());00472 pass = SignatureValidate(priv, pub, thorough) && pass;00473 <span class="keywordflow">return</span> pass;00474 }00475 00476 <span class="keywordtype">bool</span> ValidateLUC()00477 {00478 cout << <span class="stringliteral">"\nLUC validation suite running...\n\n"</span>;00479 <span class="keywordtype">bool</span> pass=<span class="keyword">true</span>;00480 00481 {00482 <a class="code" href="class_file_source.html">FileSource</a> f(<span class="stringliteral">"luc1024.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00483 <a class="code" href="struct_l_u_c_s_s_a.html">LUCSSA_PKCS1v15_SHA_Signer</a> priv(f);00484 <a class="code" href="struct_l_u_c_s_s_a.html">LUCSSA_PKCS1v15_SHA_Verifier</a> pub(priv);00485 pass = SignatureValidate(priv, pub) && pass;00486 }00487 {00488 <a class="code" href="struct_l_u_c_e_s.html">LUCES_OAEP_SHA_Decryptor</a> priv(GlobalRNG(), 512);00489 <a class="code" href="struct_l_u_c_e_s.html">LUCES_OAEP_SHA_Encryptor</a> pub(priv);00490 pass = CryptoSystemValidate(priv, pub) && pass;00491 }00492 <span class="keywordflow">return</span> pass;00493 }00494 00495 <span class="keywordtype">bool</span> ValidateLUC_DL()00496 {00497 cout << <span class="stringliteral">"\nLUC-HMP validation suite running...\n\n"</span>;00498 00499 <a class="code" href="class_file_source.html">FileSource</a> f(<span class="stringliteral">"lucs512.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00500 <a class="code" href="struct_l_u_c___h_m_p.html">LUC_HMP<SHA></a>::Signer privS(f);00501 <a class="code" href="struct_l_u_c___h_m_p.html">LUC_HMP<SHA></a>::Verifier pubS(privS);00502 <span class="keywordtype">bool</span> pass = SignatureValidate(privS, pubS);00503 00504 cout << <span class="stringliteral">"\nLUC-IES validation suite running...\n\n"</span>;00505 00506 <a class="code" href="class_file_source.html">FileSource</a> fc(<span class="stringliteral">"lucc512.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00507 <a class="code" href="struct_l_u_c___i_e_s.html">LUC_IES<></a>::Decryptor privC(fc);00508 <a class="code" href="struct_l_u_c___i_e_s.html">LUC_IES<></a>::Encryptor pubC(privC);00509 pass = CryptoSystemValidate(privC, pubC) && pass;00510 00511 <span class="keywordflow">return</span> pass;00512 }00513 00514 <span class="keywordtype">bool</span> ValidateRabin()00515 {00516 cout << <span class="stringliteral">"\nRabin validation suite running...\n\n"</span>;00517 <span class="keywordtype">bool</span> pass=<span class="keyword">true</span>;00518 00519 {00520 <a class="code" href="class_file_source.html">FileSource</a> f(<span class="stringliteral">"rabi1024.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00521 <a class="code" href="struct_rabin_p_s_s_r.html">RabinPSSR<SHA></a>::Signer priv(f);00522 <a class="code" href="struct_rabin_p_s_s_r.html">RabinPSSR<SHA></a>::Verifier pub(priv);00523 pass = SignatureValidate(priv, pub) && pass;00524 }00525 {00526 <a class="code" href="struct_rabin_e_s.html">RabinES<OAEP<SHA></a> >::Decryptor priv(GlobalRNG(), 512);00527 <a class="code" href="struct_rabin_e_s.html">RabinES<OAEP<SHA></a> >::Encryptor pub(priv);00528 pass = CryptoSystemValidate(priv, pub) && pass;00529 }00530 <span class="keywordflow">return</span> pass;00531 }00532 00533 <span class="keywordtype">bool</span> ValidateRW()00534 {00535 cout << <span class="stringliteral">"\nRW validation suite running...\n\n"</span>;00536 00537 <a class="code" href="class_file_source.html">FileSource</a> f(<span class="stringliteral">"rw1024.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00538 <a class="code" href="struct_r_w_s_s_a.html">RWSSA<SHA></a>::Signer priv(f);00539 <a class="code" href="struct_r_w_s_s_a.html">RWSSA<SHA></a>::Verifier pub(priv);00540 00541 <span class="keywordflow">return</span> SignatureValidate(priv, pub);00542 }00543 00544 <span class="comment">/*</span>00545 <span class="comment">bool ValidateBlumGoldwasser()</span>00546 <span class="comment">{</span>00547 <span class="comment"> cout << "\nBlumGoldwasser validation suite running...\n\n";</span>00548 <span class="comment"></span>00549 <span class="comment"> FileSource f("blum512.dat", true, new HexDecoder);</span>00550 <span class="comment"> BlumGoldwasserPrivateKey priv(f);</span>00551 <span class="comment"> BlumGoldwasserPublicKey pub(priv);</span>00552 <span class="comment"></span>00553 <span class="comment"> return CryptoSystemValidate(priv, pub);</span>00554 <span class="comment">}</span>00555 <span class="comment">*/</span>00556 00557 <span class="keywordtype">bool</span> ValidateECP()00558 {00559 cout << <span class="stringliteral">"\nECP validation suite running...\n\n"</span>;00560
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -