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

📄 ec2n_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<a name="l00050"></a><a class="code" href="class_e_c2_n.html#882b847bebd50e11af7c9240c349c380">00050</a>         <span class="keywordtype">bool</span> <a class="code" href="class_abstract_group.html#257836994abefe25b80293f4c6b10f60">InversionIsFast</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}<a name="l00051"></a>00051         <span class="keyword">const</span> Point&amp; Add(<span class="keyword">const</span> Point &amp;P, <span class="keyword">const</span> Point &amp;Q) <span class="keyword">const</span>;<a name="l00052"></a>00052         <span class="keyword">const</span> Point&amp; <a class="code" href="class_abstract_group.html#e54ef772d5f231729e188cbe3b9173f6">Double</a>(<span class="keyword">const</span> Point &amp;P) <span class="keyword">const</span>;<a name="l00053"></a>00053 <a name="l00054"></a><a class="code" href="class_e_c2_n.html#d6cc24daebd5880eaabc551be521dc56">00054</a>         <a class="code" href="struct_e_c2_n_point.html" title="Elliptic Curve Point.">Point</a> Multiply(<span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;k, <span class="keyword">const</span> <a class="code" href="struct_e_c2_n_point.html" title="Elliptic Curve Point.">Point</a> &amp;P)<span class="keyword"> const</span><a name="l00055"></a>00055 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="class_abstract_group.html#c01536b91c4fa3d0e0f929917143595b">ScalarMultiply</a>(P, k);}<a name="l00056"></a><a class="code" href="class_e_c2_n.html#a95e067cc447d666ceb7060f302ad1d0">00056</a>         <a class="code" href="struct_e_c2_n_point.html" title="Elliptic Curve Point.">Point</a> CascadeMultiply(<span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;k1, <span class="keyword">const</span> <a class="code" href="struct_e_c2_n_point.html" title="Elliptic Curve Point.">Point</a> &amp;P, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;k2, <span class="keyword">const</span> <a class="code" href="struct_e_c2_n_point.html" title="Elliptic Curve Point.">Point</a> &amp;Q)<span class="keyword"> const</span><a name="l00057"></a>00057 <span class="keyword">                </span>{<span class="keywordflow">return</span> <a class="code" href="class_abstract_group.html#ca3e1ca578003aff2595cc8d73522894">CascadeScalarMultiply</a>(P, k1, Q, k2);}<a name="l00058"></a>00058 <a name="l00059"></a>00059         <span class="keywordtype">bool</span> ValidateParameters(<a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a> &amp;rng, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> level=3) <span class="keyword">const</span>;<a name="l00060"></a>00060         <span class="keywordtype">bool</span> VerifyPoint(<span class="keyword">const</span> Point &amp;P) <span class="keyword">const</span>;<a name="l00061"></a>00061 <a name="l00062"></a><a class="code" href="class_e_c2_n.html#c96cb02c86e4568d304cacc0b40783b3">00062</a>         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> EncodedPointSize(<span class="keywordtype">bool</span> compressed = <span class="keyword">false</span>)<span class="keyword"> const</span><a name="l00063"></a>00063 <span class="keyword">                </span>{<span class="keywordflow">return</span> 1 + (compressed?1:2)*m_field-&gt;MaxElementByteLength();}<a name="l00064"></a>00064         <span class="comment">// returns false if point is compressed and not valid (doesn't check if uncompressed)</span><a name="l00065"></a>00065         <span class="keywordtype">bool</span> DecodePoint(Point &amp;P, <a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt, <span class="keywordtype">size_t</span> len) <span class="keyword">const</span>;<a name="l00066"></a>00066         <span class="keywordtype">bool</span> DecodePoint(Point &amp;P, <span class="keyword">const</span> byte *encodedPoint, <span class="keywordtype">size_t</span> len) <span class="keyword">const</span>;<a name="l00067"></a>00067         <span class="keywordtype">void</span> EncodePoint(byte *encodedPoint, <span class="keyword">const</span> Point &amp;P, <span class="keywordtype">bool</span> compressed) <span class="keyword">const</span>;<a name="l00068"></a>00068         <span class="keywordtype">void</span> EncodePoint(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt, <span class="keyword">const</span> Point &amp;P, <span class="keywordtype">bool</span> compressed) <span class="keyword">const</span>;<a name="l00069"></a>00069 <a name="l00070"></a>00070         Point BERDecodePoint(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt) <span class="keyword">const</span>;<a name="l00071"></a>00071         <span class="keywordtype">void</span> DEREncodePoint(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt, <span class="keyword">const</span> Point &amp;P, <span class="keywordtype">bool</span> compressed) <span class="keyword">const</span>;<a name="l00072"></a>00072 <a name="l00073"></a><a class="code" href="class_e_c2_n.html#7cbff506b849704949dd7423caba517d">00073</a>         <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> FieldSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_integer.html#de53248f5dbb520273a70856b975417c" title="return the integer 2**e">Integer::Power2</a>(m_field-&gt;MaxElementBitLength());}<a name="l00074"></a><a class="code" href="class_e_c2_n.html#5bac988f8ab444b821723c94bce522e1">00074</a>         <span class="keyword">const</span> <a class="code" href="class_g_f2_n_p.html" title="GF(2^n) with Polynomial Basis.">Field</a> &amp; GetField()<span class="keyword"> const </span>{<span class="keywordflow">return</span> *m_field;}<a name="l00075"></a><a class="code" href="class_e_c2_n.html#af8205d18154d6cb5a1a3d8180869da8">00075</a>         <span class="keyword">const</span> FieldElement &amp; GetA()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_a;}<a name="l00076"></a><a class="code" href="class_e_c2_n.html#54a8fc2492ba9391665e8c57a6e469e9">00076</a>         <span class="keyword">const</span> FieldElement &amp; GetB()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_b;}<a name="l00077"></a>00077 <a name="l00078"></a><a class="code" href="class_e_c2_n.html#069506321f5f7949d0613ad48d1454f6">00078</a>         <span class="keywordtype">bool</span> <a class="code" href="gf2n_8h.html#22c25c181c409600aa2e4bf1067ac47a">operator==</a>(<span class="keyword">const</span> <a class="code" href="class_e_c2_n.html" title="Elliptic Curve over GF(2^n).">EC2N</a> &amp;rhs)<span class="keyword"> const</span><a name="l00079"></a>00079 <span class="keyword">                </span>{<span class="keywordflow">return</span> GetField() == rhs.<a class="code" href="class_e_c2_n.html#5bac988f8ab444b821723c94bce522e1">GetField</a>() &amp;&amp; m_a == rhs.<a class="code" href="class_e_c2_n.html#a9856074990fd4f6cb7d80b8319d8de9">m_a</a> &amp;&amp; m_b == rhs.<a class="code" href="class_e_c2_n.html#bf5f8030f32aefe9995a9745ca4e4c36">m_b</a>;}<a name="l00080"></a>00080 <a name="l00081"></a>00081 <span class="keyword">private</span>:<a name="l00082"></a>00082         <a class="code" href="classclonable__ptr.html">clonable_ptr&lt;Field&gt;</a> m_field;<a name="l00083"></a>00083         FieldElement m_a, m_b;<a name="l00084"></a>00084         <span class="keyword">mutable</span> Point m_R;<a name="l00085"></a>00085 };<a name="l00086"></a>00086 <a name="l00087"></a>00087 CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_d_l___fixed_base_precomputation_impl.html">DL_FixedBasePrecomputationImpl&lt;EC2N::Point&gt;</a>;<a name="l00088"></a>00088 CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_d_l___group_precomputation.html">DL_GroupPrecomputation&lt;EC2N::Point&gt;</a>;<a name="l00089"></a>00089 <a name="l00090"></a>00090 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>EcPrecomputation;<a name="l00091"></a>00091 <span class="comment"></span><a name="l00092"></a>00092 <span class="comment">//! EC2N precomputation</span><a name="l00093"></a><a class="code" href="class_ec_precomputation_3_01_e_c2_n_01_4.html">00093</a> <span class="comment"></span><span class="keyword">template</span>&lt;&gt; <span class="keyword">class </span>EcPrecomputation&lt;<a class="code" href="class_e_c2_n.html" title="Elliptic Curve over GF(2^n).">EC2N</a>&gt; : <span class="keyword">public</span> <a class="code" href="class_d_l___group_precomputation.html">DL_GroupPrecomputation</a>&lt;EC2N::Point&gt;<a name="l00094"></a>00094 {<a name="l00095"></a>00095 <span class="keyword">public</span>:<a name="l00096"></a><a class="code" href="class_ec_precomputation_3_01_e_c2_n_01_4.html#11cba94e6a64bd6cc9ff2387bb1c72b2">00096</a>         <span class="keyword">typedef</span> <a class="code" href="class_e_c2_n.html" title="Elliptic Curve over GF(2^n).">EC2N</a> <a class="code" href="class_e_c2_n.html" title="Elliptic Curve over GF(2^n).">EllipticCurve</a>;<a name="l00097"></a>00097 <a name="l00098"></a>00098         <span class="comment">// DL_GroupPrecomputation</span><a name="l00099"></a><a class="code" href="class_ec_precomputation_3_01_e_c2_n_01_4.html#5d0a558f216ce96b8c12c0d9417880b1">00099</a>         <span class="keyword">const</span> <a class="code" href="class_abstract_group.html" title="Abstract Group.">AbstractGroup&lt;Element&gt;</a> &amp; GetGroup()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ec;}<a name="l00100"></a><a class="code" href="class_ec_precomputation_3_01_e_c2_n_01_4.html#60cbbe0b18feb98dfd7a3409ea67f9e4">00100</a>         <a class="code" href="struct_e_c2_n_point.html" title="Elliptic Curve Point.">Element</a> BERDecodeElement(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ec.BERDecodePoint(bt);}<a name="l00101"></a><a class="code" href="class_ec_precomputation_3_01_e_c2_n_01_4.html#ae5d36244eb147ef182e0ab3a3c6f0e1">00101</a>         <span class="keywordtype">void</span> DEREncodeElement(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt, <span class="keyword">const</span> <a class="code" href="struct_e_c2_n_point.html" title="Elliptic Curve Point.">Element</a> &amp;v)<span class="keyword"> const </span>{m_ec.DEREncodePoint(bt, v, <span class="keyword">false</span>);}<a name="l00102"></a>00102 <a name="l00103"></a>00103         <span class="comment">// non-inherited</span><a name="l00104"></a><a class="code" href="class_ec_precomputation_3_01_e_c2_n_01_4.html#409adbeecc3435736d437c5dc6ac4f4b">00104</a>         <span class="keywordtype">void</span> SetCurve(<span class="keyword">const</span> <a class="code" href="class_e_c2_n.html" title="Elliptic Curve over GF(2^n).">EC2N</a> &amp;ec) {m_ec = ec;}<a name="l00105"></a><a class="code" href="class_ec_precomputation_3_01_e_c2_n_01_4.html#a9e890b30c878d4460be110e3727533c">00105</a>         <span class="keyword">const</span> <a class="code" href="class_e_c2_n.html" title="Elliptic Curve over GF(2^n).">EC2N</a> &amp; GetCurve()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_ec;}<a name="l00106"></a>00106 <a name="l00107"></a>00107 <span class="keyword">private</span>:<a name="l00108"></a>00108         <a class="code" href="class_e_c2_n.html" title="Elliptic Curve over GF(2^n).">EC2N</a> m_ec;<a name="l00109"></a>00109 };<a name="l00110"></a>00110 <a name="l00111"></a>00111 NAMESPACE_END<a name="l00112"></a>00112 <a name="l00113"></a>00113 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:20 2007 for Crypto++ by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>

⌨️ 快捷键说明

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