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> <<span class="keyword">class</span> STANDARD>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><STANDARD, LUC>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> <<span class="keyword">class</span> H, <span class="keyword">class</span> STANDARD = PKCS1v15>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><STANDARD, H, LUC>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<OAEP<SHA></a> >::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<OAEP<SHA></a> >::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<SHA></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<SHA></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<Integer>00111 {00112 <span class="keyword">public</span>:00113 <span class="keyword">const</span> <a class="code" href="class_abstract_group.html">AbstractGroup<Element></a> & 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> &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> &bt, <span class="keyword">const</span> Element &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> &v) {m_p = v;}00119 <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> & 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<Integer>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<Element> &group, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &base) {m_g = base;}00132 <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> & GetBase(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &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<Element> &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<Element> &group, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &storedPrecomputation) {}00135 <span class="keywordtype">void</span> Save(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group, <a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &storedPrecomputation)<span class="keyword"> const </span>{}00136 <a class="code" href="class_integer.html">Integer</a> Exponentiate(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &exponent) <span class="keyword">const</span>;00137 <a class="code" href="class_integer.html">Integer</a> CascadeExponentiate(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &exponent, <span class="keyword">const</span> DL_FixedBasePrecomputation<Integer> &pc2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &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><DL_GroupPrecomputation_LUC, DL_BasePrecomputation_LUC>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> &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 &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 &a, <span class="keyword">const</span> Element &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 &element1, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &exponent1, <span class="keyword">const</span> Element &element2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &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 &valueType, <span class="keywordtype">void</span> *pValue)<span class="keyword"> const</span>00158 <span class="keyword"> </span>{00159 <span class="keywordflow">return</span> GetValueHelper<DL_GroupParameters_IntegerBased>(<span class="keyword">this</span>, name, valueType, pValue).Assignable();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?