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

📄 eccrypto_8h-source.html

📁 著名的密码库Crypto++的文档 C++语言的杰作。程序员必备。
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<a name="l00134"></a><a class="code" href="class_d_l___group_parameters___e_c.html#566488b1e9819188a22ad1aa528faa6b">00134</a>         <a class="code" href="class_o_i_d.html" title="Object Identifier.">OID</a> m_oid;                      <span class="comment">// set if parameters loaded from a recommended curve</span><a name="l00135"></a><a class="code" href="class_d_l___group_parameters___e_c.html#3cd786ca6b672329ed2ba33088504c65">00135</a>         <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> m_n;            <span class="comment">// order of base point</span><a name="l00136"></a><a class="code" href="class_d_l___group_parameters___e_c.html#6066c6c2af490c0c13367854dc4751bf">00136</a>         <span class="keywordtype">bool</span> m_compress, m_encodeAsOID;<a name="l00137"></a><a class="code" href="class_d_l___group_parameters___e_c.html#10fa06efdc59e48f437807c7445a8b0f">00137</a>         <span class="keyword">mutable</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> m_k;            <span class="comment">// cofactor</span><a name="l00138"></a>00138 };<a name="l00139"></a>00139 <span class="comment"></span><a name="l00140"></a>00140 <span class="comment">//! EC public key</span><a name="l00141"></a>00141 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;<a name="l00142"></a><a class="code" href="class_d_l___public_key___e_c.html">00142</a> <span class="keyword">class </span><a class="code" href="class_d_l___public_key___e_c.html" title="EC public key.">DL_PublicKey_EC</a> : <span class="keyword">public</span> <a class="code" href="class_d_l___public_key_impl.html" title="_">DL_PublicKeyImpl</a>&lt;DL_GroupParameters_EC&lt;EC&gt; &gt;<a name="l00143"></a>00143 {<a name="l00144"></a>00144 <span class="keyword">public</span>:<a name="l00145"></a><a class="code" href="class_d_l___public_key___e_c.html#3477cdcee6c742ae06fa1a5b899bf13d">00145</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> EC::Point Element;<a name="l00146"></a>00146 <a name="l00147"></a><a class="code" href="class_d_l___public_key___e_c.html#b4b56ecf99dd7e273ebe586ccc2a0b74">00147</a>         <span class="keywordtype">void</span> <a class="code" href="class_d_l___public_key___e_c.html#b4b56ecf99dd7e273ebe586ccc2a0b74">Initialize</a>(<span class="keyword">const</span> <a class="code" href="class_d_l___group_parameters___e_c.html" title="Elliptic Curve Parameters.">DL_GroupParameters_EC&lt;EC&gt;</a> &amp;params, <span class="keyword">const</span> Element &amp;Q)<a name="l00148"></a>00148                 {this-&gt;<a class="code" href="class_d_l___key_impl.html#2ec144a5bedd2151b4bd0bb5118f1a8f">AccessGroupParameters</a>() = params; <a class="code" href="class_d_l___public_key.html#86cac45fc0ddaf07c057061b93cd8ce1">SetPublicElement</a>(Q);}<a name="l00149"></a><a class="code" href="class_d_l___public_key___e_c.html#8d03b8c7cba896822f5410f6ccc8a71f">00149</a>         <span class="keywordtype">void</span> <a class="code" href="class_d_l___public_key___e_c.html#b4b56ecf99dd7e273ebe586ccc2a0b74">Initialize</a>(<span class="keyword">const</span> EC &amp;ec, <span class="keyword">const</span> Element &amp;G, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;n, <span class="keyword">const</span> Element &amp;Q)<a name="l00150"></a>00150                 {this-&gt;<a class="code" href="class_d_l___key_impl.html#2ec144a5bedd2151b4bd0bb5118f1a8f">AccessGroupParameters</a>().Initialize(ec, G, n); <a class="code" href="class_d_l___public_key.html#86cac45fc0ddaf07c057061b93cd8ce1">SetPublicElement</a>(Q);}<a name="l00151"></a>00151 <a name="l00152"></a>00152         <span class="comment">// X509PublicKey</span><a name="l00153"></a>00153         <span class="keywordtype">void</span> <a class="code" href="class_d_l___public_key___e_c.html#b436957725e2d94340f3de56b1260109" title="decode subjectPublicKey part of subjectPublicKeyInfo, without the BIT STRING header...">BERDecodePublicKey</a>(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt, <span class="keywordtype">bool</span> parametersPresent, <span class="keywordtype">size_t</span> size);<a name="l00154"></a>00154         <span class="keywordtype">void</span> <a class="code" href="class_d_l___public_key___e_c.html#8ab4bc2bb34c0572cbba3e5830bd64a7" title="encode subjectPublicKey part of subjectPublicKeyInfo, without the BIT STRING header...">DEREncodePublicKey</a>(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt) <span class="keyword">const</span>;<a name="l00155"></a>00155 };<a name="l00156"></a>00156 <span class="comment"></span><a name="l00157"></a>00157 <span class="comment">//! EC private key</span><a name="l00158"></a>00158 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;<a name="l00159"></a><a class="code" href="class_d_l___private_key___e_c.html">00159</a> <span class="keyword">class </span><a class="code" href="class_d_l___private_key___e_c.html" title="EC private key.">DL_PrivateKey_EC</a> : <span class="keyword">public</span> <a class="code" href="class_d_l___private_key_impl.html" title="_">DL_PrivateKeyImpl</a>&lt;DL_GroupParameters_EC&lt;EC&gt; &gt;<a name="l00160"></a>00160 {<a name="l00161"></a>00161 <span class="keyword">public</span>:<a name="l00162"></a><a class="code" href="class_d_l___private_key___e_c.html#6529b6bc88cf2e528106f22930492dce">00162</a>         <span class="keyword">typedef</span> <span class="keyword">typename</span> EC::Point Element;<a name="l00163"></a>00163 <a name="l00164"></a><a class="code" href="class_d_l___private_key___e_c.html#86c70f0ac9f1a4ce29aba6943a1007f3">00164</a>         <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html#86c70f0ac9f1a4ce29aba6943a1007f3">Initialize</a>(<span class="keyword">const</span> <a class="code" href="class_d_l___group_parameters___e_c.html" title="Elliptic Curve Parameters.">DL_GroupParameters_EC&lt;EC&gt;</a> &amp;params, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;x)<a name="l00165"></a>00165                 {this-&gt;<a class="code" href="class_d_l___key_impl.html#2ec144a5bedd2151b4bd0bb5118f1a8f">AccessGroupParameters</a>() = params; this-&gt;<a class="code" href="class_d_l___private_key_impl.html#d2756b046f9ee7f3c254c9fc2bb8be5d">SetPrivateExponent</a>(x);}<a name="l00166"></a><a class="code" href="class_d_l___private_key___e_c.html#bd6fda0f2ec2f011e4214b9c70e4440c">00166</a>         <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html#86c70f0ac9f1a4ce29aba6943a1007f3">Initialize</a>(<span class="keyword">const</span> EC &amp;ec, <span class="keyword">const</span> Element &amp;G, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;n, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;x)<a name="l00167"></a>00167                 {this-&gt;<a class="code" href="class_d_l___key_impl.html#2ec144a5bedd2151b4bd0bb5118f1a8f">AccessGroupParameters</a>().Initialize(ec, G, n); this-&gt;<a class="code" href="class_d_l___private_key_impl.html#d2756b046f9ee7f3c254c9fc2bb8be5d">SetPrivateExponent</a>(x);}<a name="l00168"></a><a class="code" href="class_d_l___private_key___e_c.html#853fce4b1b169096e2769d07f542deb1">00168</a>         <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html#86c70f0ac9f1a4ce29aba6943a1007f3">Initialize</a>(<a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a> &amp;rng, <span class="keyword">const</span> <a class="code" href="class_d_l___group_parameters___e_c.html" title="Elliptic Curve Parameters.">DL_GroupParameters_EC&lt;EC&gt;</a> &amp;params)<a name="l00169"></a>00169                 {<a class="code" href="class_d_l___private_key_impl.html#b80a3771a5ef623677775f7c5dddb1e0" title="generate a random key or crypto parameters">GenerateRandom</a>(rng, params);}<a name="l00170"></a><a class="code" href="class_d_l___private_key___e_c.html#e83ecf84ebe689dab4be74df61c5593d">00170</a>         <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html#86c70f0ac9f1a4ce29aba6943a1007f3">Initialize</a>(<a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a> &amp;rng, <span class="keyword">const</span> EC &amp;ec, <span class="keyword">const</span> Element &amp;G, <span class="keyword">const</span> <a class="code" href="class_integer.html" title="multiple precision integer and basic arithmetics">Integer</a> &amp;n)<a name="l00171"></a>00171                 {<a class="code" href="class_d_l___private_key_impl.html#b80a3771a5ef623677775f7c5dddb1e0" title="generate a random key or crypto parameters">GenerateRandom</a>(rng, <a class="code" href="class_d_l___group_parameters___e_c.html" title="Elliptic Curve Parameters.">DL_GroupParameters_EC&lt;EC&gt;</a>(ec, G, n));}<a name="l00172"></a>00172 <a name="l00173"></a>00173         <span class="comment">// PKCS8PrivateKey</span><a name="l00174"></a>00174         <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html#790483afe21298af518603dd50fff6cd" title="decode privateKey part of privateKeyInfo, without the OCTET STRING header">BERDecodePrivateKey</a>(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt, <span class="keywordtype">bool</span> parametersPresent, <span class="keywordtype">size_t</span> size);<a name="l00175"></a>00175         <span class="keywordtype">void</span> <a class="code" href="class_d_l___private_key___e_c.html#fc281492defbf652c0cdb1af4a9f3df7" title="encode privateKey part of privateKeyInfo, without the OCTET STRING header">DEREncodePrivateKey</a>(<a class="code" href="class_buffered_transformation.html" title="interface for buffered transformations">BufferedTransformation</a> &amp;bt) <span class="keyword">const</span>;<a name="l00176"></a>00176 };<a name="l00177"></a>00177 <span class="comment"></span><a name="l00178"></a>00178 <span class="comment">//! Elliptic Curve Diffie-Hellman, AKA &lt;a href="http://www.weidai.com/scan-mirror/ka.html#ECDH"&gt;ECDH&lt;/a&gt;</span><a name="l00179"></a>00179 <span class="comment"></span>template &lt;class EC, class COFACTOR_OPTION = CPP_TYPENAME DL_GroupParameters_EC&lt;EC&gt;::DefaultCofactorOption&gt;<a name="l00180"></a><a class="code" href="struct_e_c_d_h.html">00180</a> <span class="keyword">struct </span><a class="code" href="struct_e_c_d_h.html" title="Elliptic Curve Diffie-Hellman, AKA ECDH.">ECDH</a><a name="l00181"></a>00181 {<a name="l00182"></a><a class="code" href="struct_e_c_d_h.html#abca05c217c844df9b23ded4488b02a2">00182</a>         <span class="keyword">typedef</span> <a class="code" href="class_d_h___domain.html" title=",">DH_Domain&lt;DL_GroupParameters_EC&lt;EC&gt;</a>, COFACTOR_OPTION&gt; <a class="code" href="class_d_h___domain.html" title=",">Domain</a>;<a name="l00183"></a>00183 };<a name="l00184"></a>00184 <span class="comment"></span><a name="l00185"></a>00185 <span class="comment">/// Elliptic Curve Menezes-Qu-Vanstone, AKA &lt;a href="http://www.weidai.com/scan-mirror/ka.html#ECMQV"&gt;ECMQV&lt;/a&gt;</span><a name="l00186"></a>00186 <span class="comment"></span>template &lt;class EC, class COFACTOR_OPTION = CPP_TYPENAME DL_GroupParameters_EC&lt;EC&gt;::DefaultCofactorOption&gt;<a name="l00187"></a><a class="code" href="struct_e_c_m_q_v.html">00187</a> <span class="keyword">struct </span><a class="code" href="struct_e_c_m_q_v.html" title="Elliptic Curve Menezes-Qu-Vanstone, AKA ECMQV.">ECMQV</a><a name="l00188"></a>00188 {<a name="l00189"></a><a class="code" href="struct_e_c_m_q_v.html#dc1a8fd81ed344d576fc3386c64b5419">00189</a>         <span class="keyword">typedef</span> <a class="code" href="class_m_q_v___domain.html" title="_">MQV_Domain&lt;DL_GroupParameters_EC&lt;EC&gt;</a>, COFACTOR_OPTION&gt; <a class="code" href="class_m_q_v___domain.html" title="_">Domain</a>;<a name="l00190"></a>00190 };<a name="l00191"></a>00191 <span class="comment"></span><a name="l00192"></a>00192 <span class="comment">//! EC keys</span><a name="l00193"></a>00193 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;<a name="l00194"></a><a class="code" href="struct_d_l___keys___e_c.html">00194</a> <span class="keyword">struct </span><a class="code" href="struct_d_l___keys___e_c.html" title="EC keys.">DL_Keys_EC</a><a name="l00195"></a>00195 {<a name="l00196"></a><a class="code" href="struct_d_l___keys___e_c.html#f8913318d514cfd89da1842bc7ce8860">00196</a>         <span class="keyword">typedef</span> <a class="code" href="class_d_l___public_key___e_c.html" title="EC public key.">DL_PublicKey_EC&lt;EC&gt;</a> <a class="code" href="class_d_l___public_key___e_c.html" title="EC public key.">PublicKey</a>;<a name="l00197"></a><a class="code" href="struct_d_l___keys___e_c.html#a925085adaf95d880795255932b7382f">00197</a>         <span class="keyword">typedef</span> <a class="code" href="class_d_l___private_key___e_c.html" title="EC private key.">DL_PrivateKey_EC&lt;EC&gt;</a> <a class="code" href="class_d_l___private_key___e_c.html" title="EC private key.">PrivateKey</a>;<a name="l00198"></a>00198 };<a name="l00199"></a>00199 <a name="l00200"></a>00200 <span class="keyword">template</span> &lt;<span class="keyword">class</span> EC, <span class="keyword">class</span> H = SHA&gt;<a name="l00201"></a>00201 <span class="keyword">struct </span><a class="code" href="struct_e_c_d_s_a.html" title="ECDSA">ECDSA</a>;<a name="l00202"></a>00202 <span class="comment"></span><a name="l00203"></a>00203 <span class="comment">//! ECDSA keys</span><a name="l00204"></a>00204 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> EC&gt;<a name="l00205"></a><a class="code" href="struct_d_l___keys___e_c_d_s_a.html">00205</a> <span class="keyword">struct </span><a class="code" href="struct_d_l___keys___e_c_d_s_a.html" title="ECDSA keys.">DL_Keys_ECDSA</a><a name="l00206"></a>00206 {<a name="l00207"></a><a class="code" href="struct_d_l___keys___e_c_d_s_a.html#252dccfdc6cf04a6cf9bb1af052d4b53">00207</a>         <span class="keyword">typedef</span> <a class="code" href="class_d_l___public_key___e_c.html" title="EC public key.">DL_PublicKey_EC&lt;EC&gt;</a> <a class="code" href="class_d_l___public_key___e_c.html" title="EC public key.">PublicKey</a>;<a name="l00208"></a><a class="code" href="struct_d_l___keys___e_c_d_s_a.html#4699a43403af1f2899c1e040a7cbd9f0">00208</a>         <span class="keyword">typedef</span> <a class="code" href="class_d_l___private_key___with_signature_pairwise_consistency_test.html" title="_">DL_PrivateKey_WithSignaturePairwiseConsistencyTest&lt;DL_PrivateKey_EC&lt;EC&gt;</a>, <a class="code" href="struct_e_c_d_s_a.html" title="ECDSA">ECDSA&lt;EC&gt;</a> &gt; <a class="code" href="class_d_l___private_key___with_signature_pairwise_consistency_test.html" title="_">PrivateKey</a>;<a name="l00209"></a>00209 };<a name="l00210"></a>00210 <span class="comment"></span>

⌨️ 快捷键说明

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