📄 validat2_8cpp-source.html
字号:
<a name="l00428"></a>00428 <a class="code" href="struct_n_r.html" title="NR">NR<SHA>::Signer</a> privS(GlobalRNG(), 256);<a name="l00429"></a>00429 <a class="code" href="struct_n_r.html" title="NR">NR<SHA>::Verifier</a> pubS(privS);<a name="l00430"></a>00430 <a name="l00431"></a>00431 pass = SignatureValidate(privS, pubS) && pass;<a name="l00432"></a>00432 }<a name="l00433"></a>00433 <span class="keywordflow">return</span> pass;<a name="l00434"></a>00434 }<a name="l00435"></a>00435 <a name="l00436"></a>00436 <span class="keywordtype">bool</span> ValidateDSA(<span class="keywordtype">bool</span> thorough)<a name="l00437"></a>00437 {<a name="l00438"></a>00438 cout << <span class="stringliteral">"\nDSA validation suite running...\n\n"</span>;<a name="l00439"></a>00439 <a name="l00440"></a>00440 <span class="keywordtype">bool</span> pass = <span class="keyword">true</span>, fail;<a name="l00441"></a>00441 {<a name="l00442"></a>00442 <a class="code" href="class_file_source.html" title="file-based implementation of Source interface">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" title="Decode base 16 data back to bytes.">HexDecoder</a>());<a name="l00443"></a>00443 <a class="code" href="struct_g_d_s_a.html" title="DSA-1363">GDSA<SHA>::Signer</a> priv(fs);<a name="l00444"></a>00444 priv.AccessKey().Precompute(16);<a name="l00445"></a>00445 <a class="code" href="struct_g_d_s_a.html" title="DSA-1363">GDSA<SHA>::Verifier</a> pub(priv);<a name="l00446"></a>00446 <a name="l00447"></a>00447 byte seed[]={0xd5, 0x01, 0x4e, 0x4b, 0x60, 0xef, 0x2b, 0xa8, 0xb6, 0x21, <a name="l00448"></a>00448 0x1b, 0x40, 0x62, 0xba, 0x32, 0x24, 0xe0, 0x42, 0x7d, 0xd3};<a name="l00449"></a>00449 <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> k(<span class="stringliteral">"358dad57 1462710f 50e254cf 1a376b2b deaadfbfh"</span>);<a name="l00450"></a>00450 <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> h(<span class="stringliteral">"a9993e36 4706816a ba3e2571 7850c26c 9cd0d89dh"</span>);<a name="l00451"></a>00451 byte sig[]={0x8b, 0xac, 0x1a, 0xb6, 0x64, 0x10, 0x43, 0x5c, 0xb7, 0x18,<a name="l00452"></a>00452 0x1f, 0x95, 0xb1, 0x6a, 0xb9, 0x7c, 0x92, 0xb3, 0x41, 0xc0, <a name="l00453"></a>00453 0x41, 0xe2, 0x34, 0x5f, 0x1f, 0x56, 0xdf, 0x24, 0x58, 0xf4, <a name="l00454"></a>00454 0x26, 0xd1, 0x55, 0xb4, 0xba, 0x2d, 0xb6, 0xdc, 0xd8, 0xc8};<a name="l00455"></a>00455 <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> r(sig, 20);<a name="l00456"></a>00456 <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> s(sig+20, 20);<a name="l00457"></a>00457 <a name="l00458"></a>00458 <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> pGen, qGen, rOut, sOut;<a name="l00459"></a>00459 <span class="keywordtype">int</span> c;<a name="l00460"></a>00460 <a name="l00461"></a>00461 fail = !<a class="code" href="struct_d_s_a.html#48eab0da4234a2d20f3ef7250fbad5f5" title="Generate DSA primes according to NIST standard.">DSA::GeneratePrimes</a>(seed, 160, c, pGen, 512, qGen);<a name="l00462"></a>00462 fail = fail || (pGen != pub.GetKey().GetGroupParameters().GetModulus()) || (qGen != pub.GetKey().GetGroupParameters().GetSubgroupOrder());<a name="l00463"></a>00463 pass = pass && !fail;<a name="l00464"></a>00464 <a name="l00465"></a>00465 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>);<a name="l00466"></a>00466 cout << <span class="stringliteral">"prime generation test\n"</span>;<a name="l00467"></a>00467 <a name="l00468"></a>00468 priv.RawSign(k, h, rOut, sOut);<a name="l00469"></a>00469 fail = (rOut != r) || (sOut != s);<a name="l00470"></a>00470 pass = pass && !fail;<a name="l00471"></a>00471 <a name="l00472"></a>00472 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>);<a name="l00473"></a>00473 cout << <span class="stringliteral">"signature check against test vector\n"</span>;<a name="l00474"></a>00474 <a name="l00475"></a>00475 fail = !pub.VerifyMessage((byte *)<span class="stringliteral">"abc"</span>, 3, sig, <span class="keyword">sizeof</span>(sig));<a name="l00476"></a>00476 pass = pass && !fail;<a name="l00477"></a>00477 <a name="l00478"></a>00478 cout << (fail ? <span class="stringliteral">"FAILED "</span> : <span class="stringliteral">"passed "</span>);<a name="l00479"></a>00479 cout << <span class="stringliteral">"verification check against test vector\n"</span>;<a name="l00480"></a>00480 <a name="l00481"></a>00481 fail = pub.VerifyMessage((byte *)<span class="stringliteral">"xyz"</span>, 3, sig, <span class="keyword">sizeof</span>(sig));<a name="l00482"></a>00482 pass = pass && !fail;<a name="l00483"></a>00483 }<a name="l00484"></a>00484 <a class="code" href="class_file_source.html" title="file-based implementation of Source interface">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" title="Decode base 16 data back to bytes.">HexDecoder</a>());<a name="l00485"></a>00485 <a class="code" href="class_p_k___final_template.html" title="A template implementing constructors for public key algorithm classes.">DSA::Signer</a> priv(fs1);<a name="l00486"></a>00486 <a class="code" href="class_p_k___final_template.html" title="A template implementing constructors for public key algorithm classes.">DSA::Verifier</a> pub(priv);<a name="l00487"></a>00487 <a class="code" href="class_file_source.html" title="file-based implementation of Source interface">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" title="Decode base 16 data back to bytes.">HexDecoder</a>());<a name="l00488"></a>00488 <a class="code" href="class_p_k___final_template.html" title="A template implementing constructors for public key algorithm classes.">DSA::Verifier</a> pub1(fs2);<a name="l00489"></a>00489 assert(pub.GetKey() == pub1.GetKey());<a name="l00490"></a>00490 pass = SignatureValidate(priv, pub, thorough) && pass;<a name="l00491"></a>00491 <span class="keywordflow">return</span> pass;<a name="l00492"></a>00492 }<a name="l00493"></a>00493 <a name="l00494"></a>00494 <span class="keywordtype">bool</span> ValidateLUC()<a name="l00495"></a>00495 {<a name="l00496"></a>00496 cout << <span class="stringliteral">"\nLUC validation suite running...\n\n"</span>;<a name="l00497"></a>00497 <span class="keywordtype">bool</span> pass=<span class="keyword">true</span>;<a name="l00498"></a>00498 <a name="l00499"></a>00499 {<a name="l00500"></a>00500 <a class="code" href="class_file_source.html" title="file-based implementation of Source interface">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" title="Decode base 16 data back to bytes.">HexDecoder</a>);<a name="l00501"></a>00501 <a class="code" href="class_p_k___final_template.html" title="A template implementing constructors for public key algorithm classes.">LUCSSA_PKCS1v15_SHA_Signer</a> priv(f);<a name="l00502"></a>00502 <a class="code" href="class_p_k___final_template.html" title="A template implementing constructors for public key algorithm classes.">LUCSSA_PKCS1v15_SHA_Verifier</a> pub(priv);<a name="l00503"></a>00503 pass = SignatureValidate(priv, pub) && pass;<a name="l00504"></a>00504 }<a name="l00505"></a>00505 {<a name="l00506"></a>00506 <a class="code" href="class_p_k___final_template.html" title="A template implementing constructors for public key algorithm classes.">LUCES_OAEP_SHA_Decryptor</a> priv(GlobalRNG(), 512);<a name="l00507"></a>00507 <a class="code" href="class_p_k___final_template.html" title="A template implementing constructors for public key algorithm classes.">LUCES_OAEP_SHA_Encryptor</a> pub(priv);<a name="l00508"></a>00508 pass = CryptoSystemValidate(priv, pub) && pass;<a name="l00509"></a>00509 }<a name="l00510"></a>00510 <span class="keywordflow">return</span> pass;<a name="l00511"></a>00511 }<a name="l00512"></a>00512 <a name="l00513"></a>00513 <span class="keywordtype">bool</span> ValidateLUC_DL()<a name="l00514"></a>00514 {<a name="l00515"></a>00515 cout << <span class="stringliteral">"\nLUC-HMP validation suite running...\n\n"</span>;<a name="l00516"></a>00516 <a name="l00517"></a>00517 <a class="code" href="class_file_source.html" title="file-based implementation of Source interface">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" title="Decode base 16 data back to bytes.">HexDecoder</a>);<a name="l00518"></a>00518 <a class="code" href="struct_l_u_c___h_m_p.html" title="LUC-HMP, based on "Digital signature schemes based on Lucas functions" by Patrick...">LUC_HMP<SHA>::Signer</a> privS(f);<a name="l00519"></a>00519 <a class="code" href="struct_l_u_c___h_m_p.html" title="LUC-HMP, based on "Digital signature schemes based on Lucas functions" by Patrick...">LUC_HMP<SHA>::Verifier</a> pubS(privS);<a name="l00520"></a>00520 <span class="keywordtype">bool</span> pass = SignatureValidate(privS, pubS);<a name="l00521"></a>00521 <a name="l00522"></a>00522 cout << <span class="stringliteral">"\nLUC-IES validation suite running...\n\n"</span>;<a name="l00523"></a>00523 <a name="l00524"></a>00524 <a class="code" href="class_file_source.html" title="file-based implementation of Source interface">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" title="Decode base 16 data back to bytes.">HexDecoder</a>);<a name="l00525"></a>00525 <a class="code" href="struct_l_u_c___i_e_s.html" title="LUC-IES.">LUC_IES<>::Decryptor</a> privC(fc);<a name="l00526"></a>00526 <a class="code" href="struct_l_u_c___i_e_s.html" title="LUC-IES.">LUC_IES<>::Encryptor</a> pubC(privC);<a name="l00527"></a>00527 pass = CryptoSystemValidate(privC, pubC) && pass;<a name="l00528"></a>00528 <a name="l00529"></a>00529 <span class="keywordflow">return</span> pass;<a name="l00530"></a>00530 }<a name="l00531"></a>00531 <a name="l00532"></a>00532 <span class="keywordtype">bool</span> ValidateRabin()<a name="l00533"></a>00533 {<a name="l00534"></a>00534 cout << <span class="stringliteral">"\nRabin validation suite running...\n\n"</span>;<a name="l00535"></a>00535 <span class="keywordtype">bool</span> pass=<span class="keyword">true</span>;<a name="l00536"></a>00536 <a name="l00537"></a>00537 {<a name="l00538"></a>00538 <a class="code" href="class_file_source.html" title="file-based implementation of Source interface">FileSource</a> f(<span class="stringliteral">"rabi1024.dat"</span>, <span class=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -