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 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>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">/// <a href="http://www.weidai.com/scan-mirror/ca.html#cem_PKCS1-1.5">EME-PKCS1-v1_5</a></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> &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">/// <a href="http://www.weidai.com/scan-mirror/sig.html#sem_PKCS1-1.5">EMSA-PKCS1-v1_5</a></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> &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">/// <a href="http://www.weidai.com/scan-mirror/sig.html#sem_PKCS1-1.5">EMSA-PKCS1-v1_5</a></span>00036 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> H><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<SHA></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> <<span class="keyword">class</span> H> <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> <<span class="keyword">class</span> H> <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<H></a> <a class="code" href="class_p_k_c_s___decorated_hash_module.html">type</a>;};00064 };00065 00066 <span class="keyword">template</span><> <span class="keyword">struct </span>CryptoStandardTraits<PKCS1v15> : <span class="keyword">public</span> PKCS1v15 {};00067 00068 <span class="keyword">template</span> <<span class="keyword">class</span> H> <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<SHA>;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> <<span class="keyword">class</span> H><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<H>::Final</a>(byte *digest)00091 {00092 <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> decorationLen = PKCS_DigestDecoration<H>::length;00093 memcpy(digest, PKCS_DigestDecoration<H>::decoration, decorationLen);00094 h.Final(digest+decorationLen);00095 }00096 00097 <span class="keyword">template</span> <<span class="keyword">class</span> H><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<H>::DigestSize</a>()<span class="keyword"> const</span>00099 <span class="keyword"></span>{00100 <span class="keywordflow">return</span> h.DigestSize() + PKCS_DigestDecoration<H>::length; <span class="comment">// PKCS_DigestDecoration<H>::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 + -
显示快捷键?