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

📄 validat2_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00561         <a class="code" href="struct_e_c_i_e_s.html">ECIES&lt;ECP&gt;</a>::Decryptor cpriv(GlobalRNG(), ASN1::secp192r1());00562         <a class="code" href="struct_e_c_i_e_s.html">ECIES&lt;ECP&gt;</a>::Encryptor cpub(cpriv);00563         <a class="code" href="class_byte_queue.html">ByteQueue</a> bq;00564         cpriv.GetKey().DEREncode(bq);00565         cpub.AccessKey().AccessGroupParameters().SetEncodeAsOID(<span class="keyword">true</span>);00566         cpub.GetKey().DEREncode(bq);00567         <a class="code" href="struct_e_c_d_s_a.html">ECDSA&lt;ECP, SHA&gt;</a>::Signer spriv(bq);00568         <a class="code" href="struct_e_c_d_s_a.html">ECDSA&lt;ECP, SHA&gt;</a>::Verifier spub(bq);00569         <a class="code" href="struct_e_c_d_h.html">ECDH&lt;ECP&gt;</a>::Domain ecdhc(ASN1::secp192r1());00570         <a class="code" href="struct_e_c_m_q_v.html">ECMQV&lt;ECP&gt;</a>::Domain ecmqvc(ASN1::secp192r1());00571 00572         spriv.AccessKey().Precompute();00573         <a class="code" href="class_byte_queue.html">ByteQueue</a> queue;00574         spriv.AccessKey().SavePrecomputation(queue);00575         spriv.AccessKey().LoadPrecomputation(queue);00576 00577         <span class="keywordtype">bool</span> pass = SignatureValidate(spriv, spub);00578         cpub.AccessKey().Precompute();00579         cpriv.AccessKey().Precompute();00580         pass = CryptoSystemValidate(cpriv, cpub) &amp;&amp; pass;00581         pass = SimpleKeyAgreementValidate(ecdhc) &amp;&amp; pass;00582         pass = AuthenticatedKeyAgreementValidate(ecmqvc) &amp;&amp; pass;00583 00584         cout &lt;&lt; <span class="stringliteral">"Turning on point compression..."</span> &lt;&lt; endl;00585         cpriv.AccessKey().AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00586         cpub.AccessKey().AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00587         ecdhc.AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00588         ecmqvc.AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00589         pass = CryptoSystemValidate(cpriv, cpub) &amp;&amp; pass;00590         pass = SimpleKeyAgreementValidate(ecdhc) &amp;&amp; pass;00591         pass = AuthenticatedKeyAgreementValidate(ecmqvc) &amp;&amp; pass;00592 00593         cout &lt;&lt; <span class="stringliteral">"Testing SEC 2 recommended curves..."</span> &lt;&lt; endl;00594         <a class="code" href="class_o_i_d.html">OID</a> oid;00595         <span class="keywordflow">while</span> (!(oid = <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;ECP&gt;::GetNextRecommendedParametersOID</a>(oid)).m_values.empty())00596         {00597                 <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;ECP&gt;</a> params(oid);00598                 <span class="keywordtype">bool</span> fail = !params.<a class="code" href="class_d_l___group_parameters.html#_d_l___group_parametersa1">Validate</a>(GlobalRNG(), 2);00599                 cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED"</span> : <span class="stringliteral">"passed"</span>) &lt;&lt; <span class="stringliteral">"    "</span> &lt;&lt; dec &lt;&lt; params.<a class="code" href="class_d_l___group_parameters___e_c.html#_d_l___group_parameters___e_ca32">GetCurve</a>().GetField().MaxElementBitLength() &lt;&lt; <span class="stringliteral">" bits"</span> &lt;&lt; endl;00600                 pass = pass &amp;&amp; !fail;00601         }00602 00603         <span class="keywordflow">return</span> pass;00604 }00605 00606 <span class="keywordtype">bool</span> ValidateEC2N()00607 {00608         cout &lt;&lt; <span class="stringliteral">"\nEC2N validation suite running...\n\n"</span>;00609 00610         <a class="code" href="struct_e_c_i_e_s.html">ECIES&lt;EC2N&gt;</a>::Decryptor cpriv(GlobalRNG(), ASN1::sect193r1());00611         <a class="code" href="struct_e_c_i_e_s.html">ECIES&lt;EC2N&gt;</a>::Encryptor cpub(cpriv);00612         <a class="code" href="class_byte_queue.html">ByteQueue</a> bq;00613         cpriv.DEREncode(bq);00614         cpub.AccessKey().AccessGroupParameters().SetEncodeAsOID(<span class="keyword">true</span>);00615         cpub.DEREncode(bq);00616         <a class="code" href="struct_e_c_d_s_a.html">ECDSA&lt;EC2N, SHA&gt;</a>::Signer spriv(bq);00617         <a class="code" href="struct_e_c_d_s_a.html">ECDSA&lt;EC2N, SHA&gt;</a>::Verifier spub(bq);00618         <a class="code" href="struct_e_c_d_h.html">ECDH&lt;EC2N&gt;</a>::Domain ecdhc(ASN1::sect193r1());00619         <a class="code" href="struct_e_c_m_q_v.html">ECMQV&lt;EC2N&gt;</a>::Domain ecmqvc(ASN1::sect193r1());00620 00621         spriv.AccessKey().Precompute();00622         <a class="code" href="class_byte_queue.html">ByteQueue</a> queue;00623         spriv.AccessKey().SavePrecomputation(queue);00624         spriv.AccessKey().LoadPrecomputation(queue);00625 00626         <span class="keywordtype">bool</span> pass = SignatureValidate(spriv, spub);00627         pass = CryptoSystemValidate(cpriv, cpub) &amp;&amp; pass;00628         pass = SimpleKeyAgreementValidate(ecdhc) &amp;&amp; pass;00629         pass = AuthenticatedKeyAgreementValidate(ecmqvc) &amp;&amp; pass;00630 00631         cout &lt;&lt; <span class="stringliteral">"Turning on point compression..."</span> &lt;&lt; endl;00632         cpriv.AccessKey().AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00633         cpub.AccessKey().AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00634         ecdhc.AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00635         ecmqvc.AccessGroupParameters().SetPointCompression(<span class="keyword">true</span>);00636         pass = CryptoSystemValidate(cpriv, cpub) &amp;&amp; pass;00637         pass = SimpleKeyAgreementValidate(ecdhc) &amp;&amp; pass;00638         pass = AuthenticatedKeyAgreementValidate(ecmqvc) &amp;&amp; pass;00639 00640 <span class="preprocessor">#if 0   // TODO: turn this back on when I make EC2N faster for pentanomial basis</span>00641 <span class="preprocessor"></span>        cout &lt;&lt; <span class="stringliteral">"Testing SEC 2 recommended curves..."</span> &lt;&lt; endl;00642         <a class="code" href="class_o_i_d.html">OID</a> oid;00643         <span class="keywordflow">while</span> (!(oid = ECParameters&lt;EC2N&gt;::GetNextRecommendedParametersOID(oid)).m_values.empty())00644         {00645                 ECParameters&lt;EC2N&gt; params(oid);00646                 <span class="keywordtype">bool</span> fail = !params.ValidateParameters(GlobalRNG());00647                 cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED"</span> : <span class="stringliteral">"passed"</span>) &lt;&lt; <span class="stringliteral">"    "</span> &lt;&lt; params.GetCurve().GetField().MaxElementBitLength() &lt;&lt; <span class="stringliteral">" bits"</span> &lt;&lt; endl;00648                 pass = pass &amp;&amp; !fail;00649         }00650 <span class="preprocessor">#endif</span>00651 <span class="preprocessor"></span>00652         <span class="keywordflow">return</span> pass;00653 }00654 00655 <span class="keywordtype">bool</span> ValidateECDSA()00656 {00657         cout &lt;&lt; <span class="stringliteral">"\nECDSA validation suite running...\n\n"</span>;00658 00659         <span class="comment">// from Sample Test Vectors for P1363</span>00660         <a class="code" href="class_g_f2_n_t.html">GF2NT</a> gf2n(191, 9, 0);00661         byte a[]=<span class="stringliteral">"\x28\x66\x53\x7B\x67\x67\x52\x63\x6A\x68\xF5\x65\x54\xE1\x26\x40\x27\x6B\x64\x9E\xF7\x52\x62\x67"</span>;00662         byte b[]=<span class="stringliteral">"\x2E\x45\xEF\x57\x1F\x00\x78\x6F\x67\xB0\x08\x1B\x94\x95\xA3\xD9\x54\x62\xF5\xDE\x0A\xA1\x85\xEC"</span>;00663         <a class="code" href="class_e_c2_n.html">EC2N</a> ec(gf2n, <a class="code" href="class_polynomial_mod2.html">PolynomialMod2</a>(a,24), <a class="code" href="class_polynomial_mod2.html">PolynomialMod2</a>(b,24));00664 00665         <a class="code" href="struct_e_c2_n_point.html">EC2N::Point</a> P;00666         ec.<a class="code" href="class_e_c2_n.html#_e_c2_na15">DecodePoint</a>(P, (byte *)<span class="stringliteral">"\x04\x36\xB3\xDA\xF8\xA2\x32\x06\xF9\xC4\xF2\x99\xD7\xB2\x1A\x9C\x36\x91\x37\xF2\xC8\x4A\xE1\xAA\x0D"</span>00667                 <span class="stringliteral">"\x76\x5B\xE7\x34\x33\xB3\xF9\x5E\x33\x29\x32\xE7\x0E\xA2\x45\xCA\x24\x18\xEA\x0E\xF9\x80\x18\xFB"</span>, ec.<a class="code" href="class_e_c2_n.html#_e_c2_na14">EncodedPointSize</a>());00668         <a class="code" href="class_integer.html">Integer</a> n(<span class="stringliteral">"40000000000000000000000004a20e90c39067c893bbb9a5H"</span>);00669         <a class="code" href="class_integer.html">Integer</a> d(<span class="stringliteral">"340562e1dda332f9d2aec168249b5696ee39d0ed4d03760fH"</span>);00670         <a class="code" href="struct_e_c2_n_point.html">EC2N::Point</a> Q(ec.<a class="code" href="class_e_c2_n.html#_e_c2_na10">Multiply</a>(d, P));00671         <a class="code" href="struct_e_c_d_s_a.html">ECDSA&lt;EC2N, SHA&gt;</a>::Signer priv(ec, P, n, d);00672         <a class="code" href="struct_e_c_d_s_a.html">ECDSA&lt;EC2N, SHA&gt;</a>::Verifier pub(priv);00673 00674         <a class="code" href="class_integer.html">Integer</a> h(<span class="stringliteral">"A9993E364706816ABA3E25717850C26C9CD0D89DH"</span>);00675         <a class="code" href="class_integer.html">Integer</a> k(<span class="stringliteral">"3eeace72b4919d991738d521879f787cb590aff8189d2b69H"</span>);00676         byte sig[]=<span class="stringliteral">"\x03\x8e\x5a\x11\xfb\x55\xe4\xc6\x54\x71\xdc\xd4\x99\x84\x52\xb1\xe0\x2d\x8a\xf7\x09\x9b\xb9\x30"</span>00677                 <span class="stringliteral">"\x0c\x9a\x08\xc3\x44\x68\xc2\x44\xb4\xe5\xd6\xb2\x1b\x3c\x68\x36\x28\x07\x41\x60\x20\x32\x8b\x6e"</span>;00678         <a class="code" href="class_integer.html">Integer</a> r(sig, 24);00679         <a class="code" href="class_integer.html">Integer</a> s(sig+24, 24);00680 00681         <a class="code" href="class_integer.html">Integer</a> rOut, sOut;00682         <span class="keywordtype">bool</span> fail, pass=<span class="keyword">true</span>;00683 00684         priv.GetDigestSignatureScheme().RawSign(k, h, rOut, sOut);00685         fail = (rOut != r) || (sOut != s);00686         pass = pass &amp;&amp; !fail;00687 00688         cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED    "</span> : <span class="stringliteral">"passed    "</span>);00689         cout &lt;&lt; <span class="stringliteral">"signature check against test vector\n"</span>;00690 00691         fail = !pub.VerifyMessage((byte *)<span class="stringliteral">"abc"</span>, 3, sig);00692         pass = pass &amp;&amp; !fail;00693 00694         cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED    "</span> : <span class="stringliteral">"passed    "</span>);00695         cout &lt;&lt; <span class="stringliteral">"verification check against test vector\n"</span>;00696 00697         fail = pub.VerifyMessage((byte *)<span class="stringliteral">"xyz"</span>, 3, sig);00698         pass = pass &amp;&amp; !fail;00699 00700         pass = SignatureValidate(priv, pub) &amp;&amp; pass;00701 00702         <span class="keywordflow">return</span> pass;00703 }00704 00705 <span class="keywordtype">bool</span> ValidateESIGN()00706 {00707         cout &lt;&lt; <span class="stringliteral">"\nESIGN validation suite running...\n\n"</span>;00708 00709         <span class="keywordtype">bool</span> pass = <span class="keyword">true</span>, fail;00710 00711         <span class="keyword">const</span> <span class="keywordtype">char</span> *plain = <span class="stringliteral">"test"</span>;00712         <span class="keyword">const</span> byte *signature = (byte *)00713                 <span class="stringliteral">"\xA3\xE3\x20\x65\xDE\xDA\xE7\xEC\x05\xC1\xBF\xCD\x25\x79\x7D\x99\xCD\xD5\x73\x9D\x9D\xF3\xA4\xAA\x9A\xA4\x5A\xC8\x23\x3D\x0D\x37\xFE\xBC\x76\x3F\xF1\x84\xF6\x59"</span>00714                 <span class="stringliteral">"\x14\x91\x4F\x0C\x34\x1B\xAE\x9A\x5C\x2E\x2E\x38\x08\x78\x77\xCB\xDC\x3C\x7E\xA0\x34\x44\x5B\x0F\x67\xD9\x35\x2A\x79\x47\x1A\x52\x37\x71\xDB\x12\x67\xC1\xB6\xC6"</span>00715                 <span class="stringliteral">"\x66\x73\xB3\x40\x2E\xD6\xF2\x1A\x84\x0A\xB6\x7B\x0F\xEB\x8B\x88\xAB\x33\xDD\xE4\x83\x21\x90\x63\x2D\x51\x2A\xB1\x6F\xAB\xA7\x5C\xFD\x77\x99\xF2\xE1\xEF\x67\x1A"</span>00716                 <span class="stringliteral">"\x74\x02\x37\x0E\xED\x0A\x06\xAD\xF4\x15\x65\xB8\xE1\xD1\x45\xAE\x39\x19\xB4\xFF\x5D\xF1\x45\x7B\xE0\xFE\x72\xED\x11\x92\x8F\x61\x41\x4F\x02\x00\xF2\x76\x6F\x7C"</span>00717                 <span class="stringliteral">"\x79\xA2\xE5\x52\x20\x5D\x97\x5E\xFE\x39\xAE\x21\x10\xFB\x35\xF4\x80\x81\x41\x13\xDD\xE8\x5F\xCA\x1E\x4F\xF8\x9B\xB2\x68\xFB\x28"</span>;00718 00719         <a class="code" href="class_file_source.html">FileSource</a> keys(<span class="stringliteral">"esig1536.dat"</span>, <span class="keyword">true</span>, <span class="keyword">new</span> <a class="code" href="class_hex_decoder.html">HexDecoder</a>);00720         <a class="code" href="struct_e_s_i_g_n.html">ESIGN&lt;SHA&gt;</a>::Signer signer(keys);00721         <a class="code" href="struct_e_s_i_g_n.html">ESIGN&lt;SHA&gt;</a>::Verifier verifier(signer);00722 00723         fail = !SignatureValidate(signer, verifier);00724         pass = pass &amp;&amp; !fail;00725 00726         fail = !verifier.VerifyMessage((byte *)plain, strlen(plain), signature);00727         pass = pass &amp;&amp; !fail;00728 00729         cout &lt;&lt; (fail ? <span class="stringliteral">"FAILED    "</span> : <span class="stringliteral">"passed    "</span>);00730         cout &lt;&lt; <span class="stringliteral">"verification check against test vector\n"</span>;00731 00732         cout &lt;&lt; <span class="stringliteral">"Generating signature key from seed..."</span> &lt;&lt; endl;00733         <a class="code" href="class_invertible_e_s_i_g_n_function.html">InvertibleESIGNFunction</a> priv;00734         priv.<a class="code" href="class_invertible_e_s_i_g_n_function.html#_invertible_e_s_i_g_n_functiona8">GenerateRandom</a>(GlobalRNG(), MakeParameters(<span class="stringliteral">"Seed"</span>, <a class="code" href="class_const_byte_array_parameter.html">ConstByteArrayParameter</a>((<span class="keyword">const</span> byte *)<span class="stringliteral">"test"</span>, 4))(<span class="stringliteral">"KeySize"</span>, 3*512));00735 00736         fail = !SignatureValidate(signer, verifier);00737         pass = pass &amp;&amp; !fail;00738 00739         <span class="keywordflow">return</span> pass;00740 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:27 2003 for Crypto++ by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>

⌨️ 快捷键说明

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