rw_8h-source.html
来自「Crypto++是一个非常强大的密码学库,主要是功能全」· HTML 代码 · 共 176 行 · 第 1/2 页
HTML
176 行
00082 <span class="comment">//! .</span><a name="l00083"></a><a class="code" href="class_e_m_s_a2_pad.html">00083</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_e_m_s_a2_pad.html">EMSA2Pad</a> : <span class="keyword">public</span> <a class="code" href="class_p_k___padding_algorithm.html">PK_PaddingAlgorithm</a>00084 {00085 <span class="keyword">public</span>:00086 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *StaticAlgorithmName() {<span class="keywordflow">return</span> <span class="stringliteral">"EMSA2"</span>;}00087 00088 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxUnpaddedLength(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddedLength)<span class="keyword"> const </span>{<span class="keywordflow">return</span> (paddedLength+1)/8-2;}00089 00090 <span class="keywordtype">void</span> Pad(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <span class="keyword">const</span> byte *raw, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputLength, byte *padded, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddedLength) <span class="keyword">const</span>;00091 <a class="code" href="struct_decoding_result.html">DecodingResult</a> Unpad(<span class="keyword">const</span> byte *padded, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddedLength, byte *raw) <span class="keyword">const</span>;00092 };00093 <span class="comment"></span>00094 <span class="comment">//! .</span>00095 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> H><a name="l00096"></a><a class="code" href="class_e_m_s_a2_decorated_hash_module.html">00096</a> <span class="keyword">class </span><a class="code" href="class_e_m_s_a2_decorated_hash_module.html">EMSA2DecoratedHashModule</a> : <span class="keyword">public</span> HashTransformationWithDefaultTruncation00097 {00098 <span class="keyword">public</span>:00099 <a class="code" href="class_e_m_s_a2_decorated_hash_module.html">EMSA2DecoratedHashModule</a>() : empty(<span class="keyword">true</span>) {}<a name="l00100"></a><a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea1">00100</a> <span class="keywordtype">void</span> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea1">Update</a>(<span class="keyword">const</span> byte *input, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)00101 {h.Update(input, length); empty = empty && length==0;}00102 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea2">DigestSize</a>() <span class="keyword">const</span>;00103 <span class="keywordtype">void</span> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea3">Final</a>(byte *digest);<a name="l00104"></a><a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea4">00104</a> <span class="keywordtype">void</span> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea4">Restart</a>() {h.Restart(); empty=<span class="keyword">true</span>;}00105 00106 <span class="keyword">private</span>:00107 H h;00108 <span class="keywordtype">bool</span> empty;00109 };00110 00111 <span class="keyword">template</span> <<span class="keyword">class</span> H> <span class="keyword">struct </span>EMSA2DigestDecoration00112 {00113 <span class="keyword">static</span> <span class="keyword">const</span> byte decoration;00114 };00115 <span class="comment"></span>00116 <span class="comment">//! EMSA2, for use with RW</span>00117 <span class="comment"></span><span class="comment">/*! The following hash functions are supported: SHA, RIPEMD160. */</span><a name="l00118"></a><a class="code" href="struct_p1363___e_m_s_a2.html">00118</a> <span class="keyword">struct </span><a class="code" href="struct_p1363___e_m_s_a2.html">P1363_EMSA2</a> : <span class="keyword">public</span> <a class="code" href="struct_signature_standard.html">SignatureStandard</a>00119 {00120 <span class="keyword">template</span> <<span class="keyword">class</span> H> <span class="keyword">struct </span>SignaturePaddingAlgorithm {<span class="keyword">typedef</span> <a class="code" href="class_e_m_s_a2_pad.html">EMSA2Pad</a> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html">type</a>;};00121 <span class="keyword">template</span> <<span class="keyword">class</span> H> <span class="keyword">struct </span>DecoratedHashingAlgorithm {<span class="keyword">typedef</span> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html">EMSA2DecoratedHashModule<H></a> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html">type</a>;};00122 };00123 00124 <span class="keyword">template</span><> <span class="keyword">struct </span>CryptoStandardTraits<P1363_EMSA2> : <span class="keyword">public</span> P1363_EMSA2 {};00125 00126 <span class="comment">// EMSA2DecoratedHashModule can be instantiated with the following two classes.</span>00127 <span class="keyword">class </span><a class="code" href="class_s_h_a.html">SHA</a>;00128 <span class="keyword">class </span><a class="code" href="class_r_i_p_e_m_d160.html">RIPEMD160</a>;00129 00130 <span class="keyword">template</span> <<span class="keyword">class</span> H><a name="l00131"></a><a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea3">00131</a> <span class="keywordtype">void</span> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea3">EMSA2DecoratedHashModule<H>::Final</a>(byte *digest)00132 {00133 digest[0] = empty ? 0x4b : 0x6b;00134 h.Final(digest+1);00135 digest[<a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea2">DigestSize</a>()-1] = EMSA2DigestDecoration<H>::decoration;00136 empty=<span class="keyword">true</span>;00137 }00138 00139 <span class="keyword">template</span> <<span class="keyword">class</span> H><a name="l00140"></a><a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea2">00140</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_e_m_s_a2_decorated_hash_module.html#_e_m_s_a2_decorated_hash_modulea2">EMSA2DecoratedHashModule<H>::DigestSize</a>()<span class="keyword"> const</span>00141 <span class="keyword"></span>{00142 <span class="keywordflow">return</span> h.DigestSize() + 2;00143 }00144 <span class="comment"></span>00145 <span class="comment">//! .</span>00146 <span class="comment"></span><span class="keyword">template</span> <word r><a name="l00147"></a><a class="code" href="struct_r_w.html">00147</a> <span class="keyword">struct </span><a class="code" href="struct_r_w.html">RW</a>00148 {00149 <span class="keyword">static</span> std::string StaticAlgorithmName() {<span class="keywordflow">return</span> <span class="stringliteral">"RW"</span>;}00150 <span class="keyword">typedef</span> <a class="code" href="class_r_w_function.html">RWFunction<r></a> <a class="code" href="class_r_w_function.html">PublicKey</a>;00151 <span class="keyword">typedef</span> <a class="code" href="class_invertible_r_w_function.html">InvertibleRWFunction<r></a> <a class="code" href="class_invertible_r_w_function.html">PrivateKey</a>;00152 };00153 <span class="comment"></span>00154 <span class="comment">//! RW</span><a name="l00155"></a><a class="code" href="struct_r_w_s_s_a.html">00155</a> <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> H, <span class="keyword">class</span> STANDARD = P1363_EMSA2>00156 <span class="keyword">struct </span><a class="code" href="struct_r_w_s_s_a.html">RWSSA</a> : <span class="keyword">public</span> <a class="code" href="class_t_f___s_s_a.html">TF_SSA</a><STANDARD, H, RW<IFSSA_R> >00157 {00158 };00159 00160 NAMESPACE_END00161 00162 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:24 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 + -
显示快捷键?