pkcspad_8h-source.html

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

HTML
119
字号
<!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++: pkcspad.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>pkcspad.h</h1><div class="fragment"><pre>00001 <span class="preprocessor">#ifndef CRYPTOPP_PKCSPAD_H</span>00002 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_PKCSPAD_H</span>00003 <span class="preprocessor"></span>00004 <span class="preprocessor">#include "<a class="code" href="cryptlib_8h.html">cryptlib.h</a>"</span>00005 <span class="preprocessor">#include "<a class="code" href="pubkey_8h.html">pubkey.h</a>"</span>00006 00007 <span class="preprocessor">#ifdef CRYPTOPP_IS_DLL</span>00008 <span class="preprocessor"></span><span class="preprocessor">#include "sha.h"</span>00009 <span class="preprocessor">#endif</span>00010 <span class="preprocessor"></span>00011 NAMESPACE_BEGIN(CryptoPP)00012 00013 <span class="comment">/// &lt;a href="http://www.weidai.com/scan-mirror/ca.html#cem_PKCS1-1.5"&gt;EME-PKCS1-v1_5&lt;/a&gt;</span><a name="l00014"></a><a class="code" href="class_p_k_c_s___encryption_padding_scheme.html">00014</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_p_k_c_s___encryption_padding_scheme.html">PKCS_EncryptionPaddingScheme</a> : <span class="keyword">public</span> <a class="code" href="class_p_k___padding_algorithm.html">PK_PaddingAlgorithm</a>00015 {00016 <span class="keyword">public</span>:00017         <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * StaticAlgorithmName() {<span class="keywordflow">return</span> <span class="stringliteral">"EME-PKCS1-v1_5"</span>;}00018 00019         <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>;00020         <span class="keywordtype">void</span> Pad(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;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>;00021         <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>;00022 };00023 <span class="comment"></span>00024 <span class="comment">/// &lt;a href="http://www.weidai.com/scan-mirror/sig.html#sem_PKCS1-1.5"&gt;EMSA-PKCS1-v1_5&lt;/a&gt;</span><a name="l00025"></a><a class="code" href="class_p_k_c_s___signature_padding_scheme.html">00025</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL PKCS_SignaturePaddingScheme : <span class="keyword">public</span> <a class="code" href="class_p_k___padding_algorithm.html">PK_PaddingAlgorithm</a>00026 {00027 <span class="keyword">public</span>:00028         <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * StaticAlgorithmName() {<span class="keywordflow">return</span> <span class="stringliteral">"EMSA-PKCS1-v1_5"</span>;}00029 00030         <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>;00031         <span class="keywordtype">void</span> Pad(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;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>;00032         <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>;00033 };00034 <span class="comment"></span>00035 <span class="comment">/// &lt;a href="http://www.weidai.com/scan-mirror/sig.html#sem_PKCS1-1.5"&gt;EMSA-PKCS1-v1_5&lt;/a&gt;</span>00036 <span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">class</span> H&gt;<a name="l00037"></a><a class="code" href="class_p_k_c_s___decorated_hash_module.html">00037</a> <span class="keyword">class </span><a class="code" href="class_p_k_c_s___decorated_hash_module.html">PKCS_DecoratedHashModule</a> : <span class="keyword">public</span> HashTransformationWithDefaultTruncation00038 {00039 <span class="keyword">public</span>:00040         <span class="keyword">static</span> std::string StaticAlgorithmName() {<span class="keywordflow">return</span> std::string(<span class="stringliteral">"EMSA-PKCS1-v1_5("</span>) + H::StaticAlgorithmName() + <span class="stringliteral">")"</span>;}00041 <a name="l00042"></a><a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea0">00042</a>         <span class="keywordtype">void</span> <a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea0">Update</a>(<span class="keyword">const</span> byte *input, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length)00043                 {h.Update(input, length);}00044         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea1">DigestSize</a>() <span class="keyword">const</span>;00045         <span class="keywordtype">void</span> <a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea2">Final</a>(byte *digest);<a name="l00046"></a><a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea3">00046</a>         <span class="keywordtype">void</span> <a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea3">Restart</a>() {h.Restart();}00047 00048 <span class="keyword">private</span>:00049         H h;00050 };00051 00052 <span class="preprocessor">#ifdef CRYPTOPP_IS_DLL</span>00053 <span class="preprocessor"></span>CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_p_k_c_s___decorated_hash_module.html">PKCS_DecoratedHashModule&lt;SHA&gt;</a>;00054 <span class="preprocessor">#endif</span>00055 <span class="preprocessor"></span><span class="comment"></span>00056 <span class="comment">//! PKCS #1 version 1.5, for use with RSAES and RSASSA</span>00057 <span class="comment"></span><span class="comment">/*! The following hash functions are supported for signature: SHA, MD2, MD5, RIPEMD160, SHA256, SHA384, SHA512. */</span><a name="l00058"></a><a class="code" href="struct_p_k_c_s1v15.html">00058</a> <span class="keyword">struct </span><a class="code" href="struct_p_k_c_s1v15.html">PKCS1v15</a> : <span class="keyword">public</span> <a class="code" href="struct_signature_standard.html">SignatureStandard</a>, <span class="keyword">public</span> <a class="code" href="struct_encryption_standard.html">EncryptionStandard</a>00059 {00060         <span class="keyword">typedef</span> <a class="code" href="class_p_k_c_s___encryption_padding_scheme.html">PKCS_EncryptionPaddingScheme</a> <a class="code" href="class_p_k_c_s___encryption_padding_scheme.html">EncryptionPaddingAlgorithm</a>;00061 00062         <span class="keyword">template</span> &lt;<span class="keyword">class</span> H&gt; <span class="keyword">struct </span>SignaturePaddingAlgorithm {<span class="keyword">typedef</span> PKCS_SignaturePaddingScheme <a class="code" href="class_p_k_c_s___decorated_hash_module.html">type</a>;};00063         <span class="keyword">template</span> &lt;<span class="keyword">class</span> H&gt; <span class="keyword">struct </span>DecoratedHashingAlgorithm {<span class="keyword">typedef</span> <a class="code" href="class_p_k_c_s___decorated_hash_module.html">PKCS_DecoratedHashModule&lt;H&gt;</a> <a class="code" href="class_p_k_c_s___decorated_hash_module.html">type</a>;};00064 };00065 00066 <span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span>CryptoStandardTraits&lt;PKCS1v15&gt; : <span class="keyword">public</span> PKCS1v15 {};00067 00068 <span class="keyword">template</span> &lt;<span class="keyword">class</span> H&gt; <span class="keyword">class </span>PKCS_DigestDecoration00069 {00070 <span class="keyword">public</span>:00071         <span class="keyword">static</span> <span class="keyword">const</span> byte decoration[];00072         <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length;00073 };00074 00075 <span class="preprocessor">#ifdef CRYPTOPP_IS_DLL</span>00076 <span class="preprocessor"></span>CRYPTOPP_DLL_TEMPLATE_CLASS PKCS_DigestDecoration&lt;SHA&gt;;00077 <span class="preprocessor">#endif</span>00078 <span class="preprocessor"></span>00079 <span class="comment">// PKCS_DecoratedHashModule can be instantiated with the following</span>00080 <span class="comment">// classes as specified in PKCS#1 v2.0 and P1363a</span>00081 <span class="keyword">class </span><a class="code" href="class_s_h_a.html">SHA</a>;00082 <span class="keyword">class </span><a class="code" href="class_m_d2.html">MD2</a>;00083 <span class="keyword">class </span><a class="code" href="class_m_d5.html">MD5</a>;00084 <span class="keyword">class </span><a class="code" href="class_r_i_p_e_m_d160.html">RIPEMD160</a>;00085 <span class="keyword">class </span><a class="code" href="class_s_h_a256.html">SHA256</a>;00086 <span class="keyword">class </span><a class="code" href="class_s_h_a384.html">SHA384</a>;00087 <span class="keyword">class </span><a class="code" href="class_s_h_a512.html">SHA512</a>;00088 00089 <span class="keyword">template</span> &lt;<span class="keyword">class</span> H&gt;<a name="l00090"></a><a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea2">00090</a> <span class="keywordtype">void</span> <a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea2">PKCS_DecoratedHashModule&lt;H&gt;::Final</a>(byte *digest)00091 {00092         <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> decorationLen = PKCS_DigestDecoration&lt;H&gt;::length;00093         memcpy(digest, PKCS_DigestDecoration&lt;H&gt;::decoration, decorationLen);00094         h.Final(digest+decorationLen);00095 }00096 00097 <span class="keyword">template</span> &lt;<span class="keyword">class</span> H&gt;<a name="l00098"></a><a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea1">00098</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_p_k_c_s___decorated_hash_module.html#_p_k_c_s___decorated_hash_modulea1">PKCS_DecoratedHashModule&lt;H&gt;::DigestSize</a>()<span class="keyword"> const</span>00099 <span class="keyword"></span>{00100         <span class="keywordflow">return</span> h.DigestSize() + PKCS_DigestDecoration&lt;H&gt;::length; <span class="comment">// PKCS_DigestDecoration&lt;H&gt;::length;</span>00101 }00102 00103 NAMESPACE_END00104 00105 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:21 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 + -
显示快捷键?