luc_8h-source.html

来自「Crypto++是一个非常强大的密码学库,主要是功能全」· HTML 代码 · 共 248 行 · 第 1/3 页

HTML
248
字号
00077 <span class="keyword">protected</span>:00078         <a class="code" href="class_integer.html">Integer</a> m_p, m_q, m_u;00079 };00080 00081 <span class="keyword">struct </span>LUC00082 {00083         <span class="keyword">static</span> std::string StaticAlgorithmName() {<span class="keywordflow">return</span> <span class="stringliteral">"LUC"</span>;}00084         <span class="keyword">typedef</span> <a class="code" href="class_l_u_c_function.html">LUCFunction</a> <a class="code" href="class_public_key.html">PublicKey</a>;00085         <span class="keyword">typedef</span> <a class="code" href="class_invertible_l_u_c_function.html">InvertibleLUCFunction</a> <a class="code" href="class_private_key.html">PrivateKey</a>;00086 };00087 <span class="comment"></span>00088 <span class="comment">//! LUC cryptosystem</span><a name="l00089"></a><a class="code" href="struct_l_u_c_e_s.html">00089</a> <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> STANDARD&gt;00090 <span class="keyword">struct </span><a class="code" href="struct_l_u_c_e_s.html">LUCES</a> : <span class="keyword">public</span> <a class="code" href="class_t_f___e_s.html">TF_ES</a>&lt;STANDARD, LUC&gt;00091 {00092 };00093 <span class="comment"></span>00094 <span class="comment">//! LUC signature scheme with appendix</span><a name="l00095"></a><a class="code" href="struct_l_u_c_s_s_a.html">00095</a> <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> H, <span class="keyword">class</span> STANDARD = PKCS1v15&gt;00096 <span class="keyword">struct </span><a class="code" href="struct_l_u_c_s_s_a.html">LUCSSA</a> : <span class="keyword">public</span> <a class="code" href="class_t_f___s_s_a.html">TF_SSA</a>&lt;STANDARD, H, LUC&gt;00097 {00098 };00099 00100 <span class="comment">// analagous to the RSA schemes defined in PKCS #1 v2.0</span>00101 <span class="keyword">typedef</span> <a class="code" href="struct_l_u_c_e_s.html">LUCES&lt;OAEP&lt;SHA&gt;</a> &gt;::Decryptor <a class="code" href="struct_l_u_c_e_s.html">LUCES_OAEP_SHA_Decryptor</a>;00102 <span class="keyword">typedef</span> <a class="code" href="struct_l_u_c_e_s.html">LUCES&lt;OAEP&lt;SHA&gt;</a> &gt;::Encryptor <a class="code" href="struct_l_u_c_e_s.html">LUCES_OAEP_SHA_Encryptor</a>;00103 00104 <span class="keyword">typedef</span> <a class="code" href="struct_l_u_c_s_s_a.html">LUCSSA&lt;SHA&gt;</a>::Signer <a class="code" href="struct_l_u_c_s_s_a.html">LUCSSA_PKCS1v15_SHA_Signer</a>;00105 <span class="keyword">typedef</span> <a class="code" href="struct_l_u_c_s_s_a.html">LUCSSA&lt;SHA&gt;</a>::Verifier <a class="code" href="struct_l_u_c_s_s_a.html">LUCSSA_PKCS1v15_SHA_Verifier</a>;00106 00107 <span class="comment">// ********************************************************</span>00108 00109 <span class="comment">// no actual precomputation</span>00110 <span class="keyword">class </span>DL_GroupPrecomputation_LUC : <span class="keyword">public</span> DL_GroupPrecomputation&lt;Integer&gt;00111 {00112 <span class="keyword">public</span>:00113         <span class="keyword">const</span> <a class="code" href="class_abstract_group.html">AbstractGroup&lt;Element&gt;</a> &amp; GetGroup()<span class="keyword"> const </span>{assert(<span class="keyword">false</span>); <span class="keywordflow">throw</span> 0;}00114         Element BERDecodeElement(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="class_integer.html">Integer</a>(bt);}00115         <span class="keywordtype">void</span> DEREncodeElement(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, <span class="keyword">const</span> Element &amp;v)<span class="keyword"> const </span>{v.DEREncode(bt);}00116 00117         <span class="comment">// non-inherited</span>00118         <span class="keywordtype">void</span> SetModulus(<span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;v) {m_p = v;}00119         <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp; GetModulus()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_p;}00120 00121 <span class="keyword">private</span>:00122         <a class="code" href="class_integer.html">Integer</a> m_p;00123 };00124 <span class="comment"></span><a name="l00125"></a><a class="code" href="class_d_l___base_precomputation___l_u_c.html">00125</a> <span class="comment">//! .</span>00126 <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_d_l___base_precomputation___l_u_c.html">DL_BasePrecomputation_LUC</a> : <span class="keyword">public</span> DL_FixedBasePrecomputation&lt;Integer&gt;00127 {00128 <span class="keyword">public</span>:00129         <span class="comment">// DL_FixedBasePrecomputation</span>00130         <span class="keywordtype">bool</span> IsInitialized()<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_g.<a class="code" href="class_integer.html#_integerz41_9">NotZero</a>();}00131         <span class="keywordtype">void</span> SetBase(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;group, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;base) {m_g = base;}00132         <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp; GetBase(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;group)<span class="keyword"> const </span>{<span class="keywordflow">return</span> m_g;}00133         <span class="keywordtype">void</span> Precompute(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;group, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxExpBits, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> storage) {}00134         <span class="keywordtype">void</span> Load(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;group, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;storedPrecomputation) {}00135         <span class="keywordtype">void</span> Save(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;group, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;storedPrecomputation)<span class="keyword"> const </span>{}00136         <a class="code" href="class_integer.html">Integer</a> Exponentiate(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;group, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;exponent) <span class="keyword">const</span>;00137         <a class="code" href="class_integer.html">Integer</a> CascadeExponentiate(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;group, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;exponent, <span class="keyword">const</span> DL_FixedBasePrecomputation&lt;Integer&gt; &amp;pc2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;exponent2)<span class="keyword"> const</span>00138 <span class="keyword">                </span>{<span class="keywordflow">throw</span> <a class="code" href="class_not_implemented.html">NotImplemented</a>(<span class="stringliteral">"DL_BasePrecomputation_LUC: CascadeExponentiate not implemented"</span>);}       <span class="comment">// shouldn't be called</span>00139 00140 <span class="keyword">private</span>:00141         <a class="code" href="class_integer.html">Integer</a> m_g;00142 };00143 <span class="comment"></span><a name="l00144"></a><a class="code" href="class_d_l___group_parameters___l_u_c.html">00144</a> <span class="comment">//! .</span>00145 <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_d_l___group_parameters___l_u_c.html">DL_GroupParameters_LUC</a> : <span class="keyword">public</span> <a class="code" href="class_d_l___group_parameters___integer_based_impl.html">DL_GroupParameters_IntegerBasedImpl</a>&lt;DL_GroupPrecomputation_LUC, DL_BasePrecomputation_LUC&gt;00146 {00147 <span class="keyword">public</span>:00148         <span class="comment">// DL_GroupParameters</span>00149         <span class="keywordtype">bool</span> IsIdentity(<span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;element)<span class="keyword"> const </span>{<span class="keywordflow">return</span> element == <a class="code" href="class_integer.html#_integerz37_12">Integer::Two</a>();}00150         <span class="keywordtype">void</span> SimultaneousExponentiate(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>;00151         Element MultiplyElements(<span class="keyword">const</span> Element &amp;a, <span class="keyword">const</span> Element &amp;b)<span class="keyword"> const</span>00152 <span class="keyword">                </span>{<span class="keywordflow">throw</span> <a class="code" href="class_not_implemented.html">NotImplemented</a>(<span class="stringliteral">"LUC_GroupParameters: MultiplyElements can not be implemented"</span>);}00153         Element CascadeExponentiate(<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>00154 <span class="keyword">                </span>{<span class="keywordflow">throw</span> <a class="code" href="class_not_implemented.html">NotImplemented</a>(<span class="stringliteral">"LUC_GroupParameters: MultiplyElements can not be implemented"</span>);}00155 <a name="l00156"></a><a class="code" href="class_d_l___group_parameters___l_u_c.html#_d_l___group_parameters___l_u_c___default_safe_primea5">00156</a>         <span class="comment">// NameValuePairs interface</span>00157         <span class="keywordtype">bool</span> <a class="code" href="class_d_l___group_parameters___l_u_c.html#_d_l___group_parameters___l_u_c___default_safe_primea5">GetVoidValue</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> std::type_info &amp;valueType, <span class="keywordtype">void</span> *pValue)<span class="keyword"> const</span>00158 <span class="keyword">        </span>{00159                 <span class="keywordflow">return</span> GetValueHelper&lt;DL_GroupParameters_IntegerBased&gt;(<span class="keyword">this</span>, name, valueType, pValue).Assignable();

⌨️ 快捷键说明

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