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

📄 eccrypto_8cpp-source.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00518                 pass = pass &amp;&amp; m_n&gt;4*qSqrt;00519                 pass = pass &amp;&amp; VerifyPrime(rng, m_n, level-2);00520                 pass = pass &amp;&amp; (m_k.<a class="code" href="class_integer.html#_integerz41_8">IsZero</a>() || m_k == (q+2*qSqrt+1)/m_n);00521                 pass = pass &amp;&amp; CheckMOVCondition(q, m_n);00522         }00523 00524         <span class="keywordflow">return</span> pass;00525 }00526 00527 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00528 <span class="keywordtype">bool</span> <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;EC&gt;::ValidateElement</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> level, <span class="keyword">const</span> Element &amp;g, <span class="keyword">const</span> DL_FixedBasePrecomputation&lt;Element&gt; *gpc)<span class="keyword"> const</span>00529 <span class="keyword"></span>{00530         <span class="keywordtype">bool</span> pass = !IsIdentity(g) &amp;&amp; GetCurve().VerifyPoint(g);00531         <span class="keywordflow">if</span> (level &gt;= 1)00532         {00533                 <span class="keywordflow">if</span> (gpc)00534                         pass = pass &amp;&amp; gpc-&gt;Exponentiate(GetGroupPrecomputation(), Integer::One()) == g;00535         }00536         <span class="keywordflow">if</span> (level &gt;= 2)00537         {00538                 <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;q = GetSubgroupOrder();00539                 pass = pass &amp;&amp; IsIdentity(gpc ? gpc-&gt;Exponentiate(GetGroupPrecomputation(), q) : ExponentiateElement(g, q));00540         }00541         <span class="keywordflow">return</span> pass;00542 }00543 00544 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00545 <span class="keywordtype">void</span> <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;EC&gt;::SimultaneousExponentiate</a>(Element *results, <span class="keyword">const</span> Element &amp;base, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> *exponents, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> exponentsCount)<span class="keyword"> const</span>00546 <span class="keyword"></span>{00547         GetCurve().SimultaneousMultiply(results, base, exponents, exponentsCount);00548 }00549 00550 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00551 CPP_TYPENAME <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;EC&gt;</a>::Element <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;EC&gt;::MultiplyElements</a>(<span class="keyword">const</span> Element &amp;a, <span class="keyword">const</span> Element &amp;b)<span class="keyword"> const</span>00552 <span class="keyword"></span>{00553         <span class="keywordflow">return</span> GetCurve().Add(a, b);00554 }00555 00556 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00557 CPP_TYPENAME <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;EC&gt;</a>::Element <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;EC&gt;::CascadeExponentiate</a>(<span class="keyword">const</span> Element &amp;element1, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;exponent1, <span class="keyword">const</span> Element &amp;element2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;exponent2)<span class="keyword"> const</span>00558 <span class="keyword"></span>{00559         <span class="keywordflow">return</span> GetCurve().CascadeMultiply(exponent1, element1, exponent2, element2);00560 }00561 00562 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00563 OID <a class="code" href="class_d_l___group_parameters___e_c.html">DL_GroupParameters_EC&lt;EC&gt;::GetAlgorithmID</a>()<span class="keyword"> const</span>00564 <span class="keyword"></span>{00565         <span class="keywordflow">return</span> ASN1::id_ecPublicKey();00566 }00567 00568 <span class="comment">// ******************************************************************</span>00569 00570 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00571 <span class="keywordtype">void</span> <a class="code" href="class_d_l___public_key___e_c.html">DL_PublicKey_EC&lt;EC&gt;::BERDecodeKey2</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, <span class="keywordtype">bool</span> parametersPresent, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size)00572 {00573         <span class="keyword">typename</span> EC::Point P;00574         <span class="keywordflow">if</span> (!GetGroupParameters().GetCurve().DecodePoint(P, bt, size))00575                 BERDecodeError();00576         SetPublicElement(P);00577 }00578 00579 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00580 <span class="keywordtype">void</span> <a class="code" href="class_d_l___public_key___e_c.html">DL_PublicKey_EC&lt;EC&gt;::DEREncodeKey</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)<span class="keyword"> const</span>00581 <span class="keyword"></span>{00582         GetGroupParameters().GetCurve().EncodePoint(bt, GetPublicElement(), GetGroupParameters().GetPointCompression());00583 }00584 00585 <span class="comment">// ******************************************************************</span>00586 00587 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00588 <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html">DL_PrivateKey_EC&lt;EC&gt;::BERDecodeKey2</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, <span class="keywordtype">bool</span> parametersPresent, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size)00589 {00590         <a class="code" href="class_b_e_r_sequence_decoder.html">BERSequenceDecoder</a> seq(bt);00591                 word32 version;00592                 BERDecodeUnsigned&lt;word32&gt;(seq, version, INTEGER, 1, 1); <span class="comment">// check version</span>00593 00594                 <a class="code" href="class_b_e_r_general_decoder.html">BERGeneralDecoder</a> dec(seq, OCTET_STRING);00595                 <span class="keywordflow">if</span> (!dec.<a class="code" href="class_b_e_r_general_decoder.html#_b_e_r_set_decodera2">IsDefiniteLength</a>())00596                         BERDecodeError();00597                 <a class="code" href="class_integer.html">Integer</a> x;00598                 x.Decode(dec, dec.<a class="code" href="class_b_e_r_general_decoder.html#_b_e_r_set_decodera3">RemainingLength</a>());00599                 dec.<a class="code" href="class_b_e_r_general_decoder.html#_b_e_r_set_decodera9">MessageEnd</a>();00600                 <span class="keywordflow">if</span> (!parametersPresent &amp;&amp; seq.PeekByte() != (CONTEXT_SPECIFIC | CONSTRUCTED | 0))00601                         BERDecodeError();00602                 <span class="keywordflow">if</span> (!seq.EndReached() &amp;&amp; seq.PeekByte() == (CONTEXT_SPECIFIC | CONSTRUCTED | 0))00603                 {00604                         <a class="code" href="class_b_e_r_general_decoder.html">BERGeneralDecoder</a> parameters(seq, CONTEXT_SPECIFIC | CONSTRUCTED | 0);00605                         AccessGroupParameters().BERDecode(parameters);00606                         parameters.<a class="code" href="class_b_e_r_general_decoder.html#_b_e_r_set_decodera9">MessageEnd</a>();00607                 }00608                 <span class="keywordflow">if</span> (!seq.EndReached())00609                 {00610                         <span class="comment">// skip over the public element</span>00611                         <a class="code" href="class_sec_block.html">SecByteBlock</a> subjectPublicKey;00612                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> unusedBits;00613                         <a class="code" href="class_b_e_r_general_decoder.html">BERGeneralDecoder</a> publicKey(seq, CONTEXT_SPECIFIC | CONSTRUCTED | 1);00614                         BERDecodeBitString(publicKey, subjectPublicKey, unusedBits);00615                         publicKey.<a class="code" href="class_b_e_r_general_decoder.html#_b_e_r_set_decodera9">MessageEnd</a>();00616                         Element Q;00617                         <span class="keywordflow">if</span> (!(unusedBits == 0 &amp;&amp; GetGroupParameters().GetCurve().DecodePoint(Q, subjectPublicKey, subjectPublicKey.<a class="code" href="class_sec_block.html#_sec_block_with_hinta13">size</a>())))00618                                 BERDecodeError();00619                 }00620         seq.MessageEnd();00621 00622         SetPrivateExponent(x);00623 }00624 00625 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;00626 <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html">DL_PrivateKey_EC&lt;EC&gt;::DEREncodeKey</a>(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)<span class="keyword"> const</span>00627 <span class="keyword"></span>{00628         <a class="code" href="class_d_e_r_sequence_encoder.html">DERSequenceEncoder</a> privateKey(bt);00629                 DEREncodeUnsigned&lt;word32&gt;(privateKey, 1);       <span class="comment">// version</span>00630                 <span class="comment">// SEC 1 ver 1.0 says privateKey (m_d) has the same length as order of the curve</span>00631                 <span class="comment">// this will be changed to order of base point in a future version</span>00632                 GetPrivateExponent().DEREncodeAsOctetString(privateKey, GetGroupParameters().GetSubgroupOrder().ByteCount());00633         privateKey.MessageEnd();00634 }00635 00636 NAMESPACE_END00637 00638 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:13 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 + -