eprecomp_8h-source.html
来自「Crypto++是一个非常强大的密码学库,主要是功能全」· HTML 代码 · 共 83 行
HTML
83 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: eprecomp.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>eprecomp.h</h1><div class="fragment"><pre>00001 <span class="preprocessor">#ifndef CRYPTOPP_EPRECOMP_H</span>00002 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_EPRECOMP_H</span>00003 <span class="preprocessor"></span>00004 <span class="preprocessor">#include "<a class="code" href="integer_8h.html">integer.h</a>"</span>00005 <span class="preprocessor">#include "algebra.h"</span>00006 <span class="preprocessor">#include <vector></span>00007 00008 NAMESPACE_BEGIN(CryptoPP)00009 00010 <span class="keyword">template</span> <<span class="keyword">class</span> T>00011 <span class="keyword">class </span>DL_GroupPrecomputation00012 {00013 <span class="keyword">public</span>:00014 <span class="keyword">typedef</span> T Element;00015 00016 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> NeedConversions()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}00017 <span class="keyword">virtual</span> Element ConvertIn(<span class="keyword">const</span> Element &v)<span class="keyword"> const </span>{<span class="keywordflow">return</span> v;}00018 <span class="keyword">virtual</span> Element ConvertOut(<span class="keyword">const</span> Element &v)<span class="keyword"> const </span>{<span class="keywordflow">return</span> v;}00019 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="class_abstract_group.html">AbstractGroup<Element></a> & GetGroup() <span class="keyword">const</span> =0;00020 <span class="keyword">virtual</span> Element BERDecodeElement(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) <span class="keyword">const</span> =0;00021 <span class="keyword">virtual</span> <span class="keywordtype">void</span> DEREncodeElement(<a class="code" href="class_buffered_transformation.html">BufferedTransformation</a> &bt, <span class="keyword">const</span> Element &P) <span class="keyword">const</span> =0;00022 };00023 00024 <span class="keyword">template</span> <<span class="keyword">class</span> T>00025 <span class="keyword">class </span>DL_FixedBasePrecomputation00026 {00027 <span class="keyword">public</span>:00028 <span class="keyword">typedef</span> T Element;00029 00030 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsInitialized() <span class="keyword">const</span> =0;00031 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetBase(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group, <span class="keyword">const</span> Element &base) =0;00032 <span class="keyword">virtual</span> <span class="keyword">const</span> Element & GetBase(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group) <span class="keyword">const</span> =0;00033 <span class="keyword">virtual</span> <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) =0;00034 <span class="keyword">virtual</span> <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) =0;00035 <span class="keyword">virtual</span> <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> =0;00036 <span class="keyword">virtual</span> Element 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> =0;00037 <span class="keyword">virtual</span> Element 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<Element> &pc2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &exponent2) <span class="keyword">const</span> =0;00038 };00039 00040 <span class="keyword">template</span> <<span class="keyword">class</span> T>00041 <span class="keyword">class </span>DL_FixedBasePrecomputationImpl : <span class="keyword">public</span> DL_FixedBasePrecomputation<T>00042 {00043 <span class="keyword">public</span>:00044 <span class="keyword">typedef</span> T Element;00045 00046 <span class="comment">// DL_FixedBasePrecomputation</span>00047 <span class="keywordtype">bool</span> IsInitialized()<span class="keyword"> const</span>00048 <span class="keyword"> </span>{<span class="keywordflow">return</span> !m_bases.empty();}00049 <span class="keywordtype">void</span> SetBase(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group, <span class="keyword">const</span> Element &base);00050 <span class="keyword">const</span> Element & GetBase(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group)<span class="keyword"> const</span>00051 <span class="keyword"> </span>{<span class="keywordflow">return</span> group.NeedConversions() ? m_base : m_bases[0];}00052 <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);00053 <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);00054 <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>;00055 Element 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>;00056 Element 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<Element> &pc2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &exponent2) <span class="keyword">const</span>;00057 00058 <span class="keyword">private</span>:00059 <span class="keywordtype">void</span> PrepareCascade(<span class="keyword">const</span> DL_GroupPrecomputation<Element> &group, std::vector<<a class="code" href="struct_base_and_exponent.html">BaseAndExponent<Element></a> > &eb, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &exponent) <span class="keyword">const</span>;00060 00061 Element m_base;00062 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m_windowSize;00063 <a class="code" href="class_integer.html">Integer</a> m_exponentBase; <span class="comment">// what base to represent the exponent in</span>00064 std::vector<Element> m_bases; <span class="comment">// precalculated bases</span>00065 };00066 00067 NAMESPACE_END00068 00069 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:14 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 + =
减小字号Ctrl + -
显示快捷键?