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&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;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 &lt;vector&gt;</span>00007 00008 NAMESPACE_BEGIN(CryptoPP)00009 00010 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;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 &amp;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 &amp;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&lt;Element&gt;</a> &amp; 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> &amp;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> &amp;bt, <span class="keyword">const</span> Element &amp;P) <span class="keyword">const</span> =0;00022 };00023 00024 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;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&lt;Element&gt; &amp;group, <span class="keyword">const</span> Element &amp;base) =0;00032         <span class="keyword">virtual</span> <span class="keyword">const</span> Element &amp; GetBase(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;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&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) =0;00034         <span class="keyword">virtual</span> <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) =0;00035         <span class="keyword">virtual</span> <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> =0;00036         <span class="keyword">virtual</span> Element 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> =0;00037         <span class="keyword">virtual</span> Element 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;Element&gt; &amp;pc2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;exponent2) <span class="keyword">const</span> =0;00038 };00039 00040 <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;00041 <span class="keyword">class </span>DL_FixedBasePrecomputationImpl : <span class="keyword">public</span> DL_FixedBasePrecomputation&lt;T&gt;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&lt;Element&gt; &amp;group, <span class="keyword">const</span> Element &amp;base);00050         <span class="keyword">const</span> Element &amp; GetBase(<span class="keyword">const</span> DL_GroupPrecomputation&lt;Element&gt; &amp;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&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);00053         <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);00054         <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>;00055         Element 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>;00056         Element 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;Element&gt; &amp;pc2, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;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&lt;Element&gt; &amp;group, std::vector&lt;<a class="code" href="struct_base_and_exponent.html">BaseAndExponent&lt;Element&gt;</a> &gt; &amp;eb, <span class="keyword">const</span> <a class="code" href="class_integer.html">Integer</a> &amp;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&lt;Element&gt; 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 + -
显示快捷键?