📄 pubkey_8h-source.html
字号:
00111 <span class="comment">// ********************************************************</span>00112 <span class="comment"></span>00113 <span class="comment">//! .</span><a name="l00114"></a><a class="code" href="class_p_k___padding_algorithm.html">00114</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_p_k___padding_algorithm.html">PK_PaddingAlgorithm</a>00115 {00116 <span class="keyword">public</span>:00117 <span class="keyword">virtual</span> ~<a class="code" href="class_p_k___padding_algorithm.html">PK_PaddingAlgorithm</a>() {}00118 00119 <span class="keyword">virtual</span> <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> =0;00120 00121 <span class="keyword">virtual</span> <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> paddedBitLength) <span class="keyword">const</span> =0;00122 00123 <span class="keyword">virtual</span> <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> paddedBitLength, byte *raw) <span class="keyword">const</span> =0;00124 00125 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsReversible()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}00126 };00127 <span class="comment"></span>00128 <span class="comment">//! .</span><a name="l00129"></a><a class="code" href="class_p_k___nonreversible_padding_algorithm.html">00129</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_p_k___nonreversible_padding_algorithm.html">PK_NonreversiblePaddingAlgorithm</a> : <span class="keyword">public</span> <a class="code" href="class_p_k___padding_algorithm.html">PK_PaddingAlgorithm</a>00130 {00131 <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> paddedBitLength, byte *raw)<span class="keyword"> const </span>{assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <a class="code" href="struct_decoding_result.html">DecodingResult</a>();}00132 <span class="keywordtype">bool</span> IsReversible()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}00133 };00134 00135 <span class="comment">// ********************************************************</span>00136 <span class="comment"></span>00137 <span class="comment">//! .</span>00138 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> TFI><a name="l00139"></a><a class="code" href="class_t_f___base.html">00139</a> <span class="keyword">class </span><a class="code" href="class_t_f___base.html">TF_Base</a>00140 {00141 <span class="keyword">protected</span>:00142 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PaddedBlockByteLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> BitsToBytes(PaddedBlockBitLength());}00143 00144 <span class="keyword">virtual</span> <span class="keyword">const</span> TrapdoorFunctionBounds & GetTrapdoorFunctionBounds() <span class="keyword">const</span> =0;00145 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="class_p_k___padding_algorithm.html">PK_PaddingAlgorithm</a> & GetPaddingAlgorithm() <span class="keyword">const</span> =0;00146 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PaddedBlockBitLength() <span class="keyword">const</span> =0;00147 00148 <span class="keyword">typedef</span> TFI TrapdoorFunctionInterface;00149 <span class="keyword">virtual</span> <span class="keyword">const</span> TrapdoorFunctionInterface & GetTrapdoorFunctionInterface() <span class="keyword">const</span> =0;00150 };00151 00152 <span class="comment">// ********************************************************</span>00153 <span class="comment"></span>00154 <span class="comment">//! .</span>00155 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> INTERFACE, <span class="keyword">class</span> BASE><a name="l00156"></a><a class="code" href="class_t_f___crypto_system_base.html">00156</a> <span class="keyword">class </span><a class="code" href="class_t_f___crypto_system_base.html">TF_CryptoSystemBase</a> : <span class="keyword">public</span> INTERFACE, <span class="keyword">protected</span> BASE00157 {00158 <span class="keyword">public</span>:00159 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FixedMaxPlaintextLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetPaddingAlgorithm().MaxUnpaddedLength(PaddedBlockBitLength());}00160 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FixedCiphertextLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetTrapdoorFunctionBounds().MaxImage().ByteCount();}00161 00162 <span class="keyword">protected</span>:00163 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PaddedBlockBitLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetTrapdoorFunctionBounds().PreimageBound().BitCount()-1;}00164 };00165 <span class="comment"></span>00166 <span class="comment">//! .</span><a name="l00167"></a><a class="code" href="class_t_f___decryptor_base.html">00167</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL TF_DecryptorBase : <span class="keyword">public</span> <a class="code" href="class_t_f___crypto_system_base.html">TF_CryptoSystemBase</a><PK_FixedLengthDecryptor, TF_Base<TrapdoorFunctionInverse> >00168 {00169 <span class="keyword">public</span>:00170 <a class="code" href="struct_decoding_result.html">DecodingResult</a> FixedLengthDecrypt(<span class="keyword">const</span> byte *cipherText, byte *plainText) <span class="keyword">const</span>;00171 };00172 <span class="comment"></span>00173 <span class="comment">//! .</span><a name="l00174"></a><a class="code" href="class_t_f___encryptor_base.html">00174</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL TF_EncryptorBase : <span class="keyword">public</span> <a class="code" href="class_t_f___crypto_system_base.html">TF_CryptoSystemBase</a><PK_FixedLengthEncryptor, TF_Base<RandomizedTrapdoorFunction> >00175 {00176 <span class="keyword">public</span>:00177 <span class="keywordtype">void</span> Encrypt(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <span class="keyword">const</span> byte *plainText, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> plainTextLength, byte *cipherText) <span class="keyword">const</span>;00178 };00179 00180 <span class="comment">// ********************************************************</span>00181 <span class="comment"></span>00182 <span class="comment">//! .</span><a name="l00183"></a><a class="code" href="class_digest_signature_system.html">00183</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_digest_signature_system.html">DigestSignatureSystem</a>00184 {00185 <span class="keyword">public</span>:00186 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxDigestLength() <span class="keyword">const</span> =0;00187 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DigestSignatureLength() <span class="keyword">const</span> =0;00188 };00189 <span class="comment"></span>00190 <span class="comment">//! .</span><a name="l00191"></a><a class="code" href="class_digest_signer.html">00191</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_digest_signer.html">DigestSigner</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="class_digest_signature_system.html">DigestSignatureSystem</a>, <span class="keyword">public</span> <a class="code" href="class_private_key_algorithm.html">PrivateKeyAlgorithm</a>00192 {00193 <span class="keyword">public</span>:00194 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SignDigest(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <span class="keyword">const</span> byte *digest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digestLen, byte *signature) <span class="keyword">const</span> =0;00195 };00196 <span class="comment"></span>00197 <span class="comment">//! .</span><a name="l00198"></a><a class="code" href="class_digest_verifier.html">00198</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="class_digest_verifier.html">DigestVerifier</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="class_digest_signature_system.html">DigestSignatureSystem</a>, <span class="keyword">public</span> <a class="code" href="class_public_key_algorithm.html">PublicKeyAlgorithm</a>00199 {00200 <span class="keyword">public</span>:00201 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> VerifyDigest(<span class="keyword">const</span> byte *digest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> digestLen, <span class="keyword">const</span> byte *sig) <span class="keyword">const</span> =0;00202 };00203 00204 <span class="comment">// ********************************************************</span>00205 <span class="comment"></span>00206 <span class="comment">//! .</span>00207 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> INTERFACE, <span class="keyword">class</span> BASE><a name="l00208"></a><a class="code" href="class_t_f___digest_signature_system_base.html">00208</a> <span class="keyword">class </span><a class="code" href="class_t_f___digest_signature_system_base.html">TF_DigestSignatureSystemBase</a> : <span class="keyword">public</span> INTERFACE, <span class="keyword">protected</span> BASE00209 {00210 <span class="keyword">public</span>:00211 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MaxDigestLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetPaddingAlgorithm().MaxUnpaddedLength(PaddedBlockBitLength());}00212 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> DigestSignatureLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetTrapdoorFunctionBounds().MaxPreimage().ByteCount();}00213 00214 <span class="keyword">protected</span>:00215 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> PaddedBlockBitLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetTrapdoorFunctionBounds().ImageBound().BitCount()-1;}00216 };00217 <span class="comment"></span>00218 <span class="comment">//! .</span><a name="l00219"></a><a class="code" href="class_t_f___digest_signer_base.html">00219</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL TF_DigestSignerBase : <span class="keyword">public</span> <a class="code" href="class_t_f___digest_signature_system_base.html">TF_DigestSignatureSystemBase</a><DigestSigner, TF_Base<RandomizedTrapdoorFunctionInverse> >00220 {00221 <span class="keyword">public</span>:00222 <span class="keywordtype">void</span> SignDigest(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <span class="keyword">const</span> byte *message, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> messageLength, byte *signature) <span class="keyword">const</span>;00223 };00224 <span class="comment"></span>00225 <span class="comment">//! .</span><a name="l00226"></a><a class="code" href="class_t_f___digest_verifier_base.html">00226</a> <span class="comment"></span><span class="keyword">class </span>CRYPTOPP_DLL TF_DigestVerifierBase : <span class="keyword">public</span> <a class="code" href="class_t_f___digest_signature_system_base.html">TF_DigestSignatureSystemBase</a><DigestVerifier, TF_Base<TrapdoorFunction> >00227 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -