📄 elgamal_8h-source.html
字号:
00070 m.<a class="code" href="class_integer.html#_integerz39_1">Encode</a>(plainText, plainTextLength);00071 <span class="keywordflow">return</span> <a class="code" href="struct_decoding_result.html">DecodingResult</a>(plainTextLength);00072 }00073 00074 <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="class_d_l___group_parameters___g_f_p.html">DL_GroupParameters_GFP</a> & GetGroupParameters() <span class="keyword">const</span> =0;00075 };00076 00077 <span class="keyword">template</span> <<span class="keyword">class</span> BASE, <span class="keyword">class</span> SCHEME_OPTIONS, <span class="keyword">class</span> KEY>00078 <span class="keyword">class </span>ElGamalObjectImpl : <span class="keyword">public</span> <a class="code" href="class_d_l___object_impl_base.html">DL_ObjectImplBase</a><BASE, SCHEME_OPTIONS, KEY>, <span class="keyword">public</span> ElGamalBase00079 {00080 <span class="keyword">public</span>:00081 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FixedMaxPlaintextLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> MaxPlaintextLength(FixedCiphertextLength());}00082 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> FixedCiphertextLength()<span class="keyword"> const </span>{<span class="keywordflow">return</span> CiphertextLength(0);}00083 00084 <span class="keyword">const</span> <a class="code" href="class_d_l___group_parameters___g_f_p.html">DL_GroupParameters_GFP</a> & GetGroupParameters()<span class="keyword"> const </span>{<span class="keywordflow">return</span> GetKey().GetGroupParameters();}00085 00086 <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>00087 <span class="keyword"> </span>{<span class="keywordflow">return</span> Decrypt(cipherText, FixedCiphertextLength(), plainText);}00088 00089 <span class="keyword">protected</span>:00090 <span class="keyword">const</span> <a class="code" href="class_d_l___key_agreement_algorithm.html">DL_KeyAgreementAlgorithm<Integer></a> & GetKeyAgreementAlgorithm()<span class="keyword"> const </span>{<span class="keywordflow">return</span> *<span class="keyword">this</span>;}00091 <span class="keyword">const</span> <a class="code" href="class_d_l___key_derivation_algorithm.html">DL_KeyDerivationAlgorithm<Integer></a> & GetKeyDerivationAlgorithm()<span class="keyword"> const </span>{<span class="keywordflow">return</span> *<span class="keyword">this</span>;}00092 <span class="keyword">const</span> <a class="code" href="class_d_l___symmetric_encryption_algorithm.html">DL_SymmetricEncryptionAlgorithm</a> & GetSymmetricEncryptionAlgorithm()<span class="keyword"> const </span>{<span class="keywordflow">return</span> *<span class="keyword">this</span>;}00093 };00094 00095 <span class="keyword">struct </span>ElGamalKeys00096 {00097 <span class="keyword">typedef</span> <a class="code" href="class_d_l___group_parameters___g_f_p___default_safe_prime.html">DL_CryptoKeys_GFP::GroupParameters</a> GroupParameters;00098 <span class="keyword">typedef</span> <a class="code" href="class_d_l___private_key___g_f_p___old_format.html">DL_PrivateKey_GFP_OldFormat<DL_CryptoKeys_GFP::PrivateKey></a> <a class="code" href="class_private_key.html">PrivateKey</a>;00099 <span class="keyword">typedef</span> <a class="code" href="class_d_l___public_key___g_f_p___old_format.html">DL_PublicKey_GFP_OldFormat<DL_CryptoKeys_GFP::PublicKey></a> <a class="code" href="class_public_key.html">PublicKey</a>;00100 };00101 <span class="comment"></span>00102 <span class="comment">//! ElGamal encryption scheme with non-standard padding</span><a name="l00103"></a><a class="code" href="struct_el_gamal.html">00103</a> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="struct_el_gamal.html">ElGamal</a>00104 {00105 <span class="keyword">typedef</span> <a class="code" href="struct_d_l___crypto_scheme_options.html">DL_CryptoSchemeOptions<ElGamal, ElGamalKeys, int, int, int></a> <a class="code" href="struct_d_l___crypto_scheme_options.html">SchemeOptions</a>;00106 00107 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * StaticAlgorithmName() {<span class="keywordflow">return</span> <span class="stringliteral">"ElgamalEnc/Crypto++Padding"</span>;}00108 00109 <span class="keyword">class </span>EncryptorImpl : <span class="keyword">public</span> ElGamalObjectImpl<DL_EncryptorBase<Integer, PK_FixedLengthEncryptor>, SchemeOptions, SchemeOptions::PublicKey>, <span class="keyword">public</span> <a class="code" href="class_public_key_copier.html">PublicKeyCopier</a><SchemeOptions>00110 {00111 <span class="keyword">public</span>:00112 <span class="keywordtype">void</span> CopyKeyInto(SchemeOptions::PublicKey &key)<span class="keyword"> const</span>00113 <span class="keyword"> </span>{key = GetKey();}00114 };00115 00116 <span class="keyword">class </span>DecryptorImpl : <span class="keyword">public</span> ElGamalObjectImpl<DL_DecryptorBase<Integer, PK_FixedLengthDecryptor>, SchemeOptions, SchemeOptions::PrivateKey>, <span class="keyword">public</span> <a class="code" href="class_private_key_copier.html">PrivateKeyCopier</a><SchemeOptions>00117 {00118 <span class="keyword">public</span>:00119 <span class="keywordtype">void</span> CopyKeyInto(SchemeOptions::PublicKey &key)<span class="keyword"> const</span>00120 <span class="keyword"> </span>{GetKey().MakePublicKey(key);}00121 <span class="keywordtype">void</span> CopyKeyInto(SchemeOptions::PrivateKey &key)<span class="keyword"> const</span>00122 <span class="keyword"> </span>{key = GetKey();}00123 };00124 00125 <span class="keyword">typedef</span> SchemeOptions::GroupParameters GroupParameters;<span class="comment"></span>00126 <span class="comment"> //! implements PK_Encryptor interface</span><a name="l00127"></a><a class="code" href="struct_el_gamal.html#_el_gamalw2">00127</a> <span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="class_p_k___final_template.html">PK_FinalTemplate<EncryptorImpl></a> <a class="code" href="class_p_k___final_template.html">Encryptor</a>;<span class="comment"></span>00128 <span class="comment"> //! implements PK_Decryptor interface</span><a name="l00129"></a><a class="code" href="struct_el_gamal.html#_el_gamalw3">00129</a> <span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="class_p_k___final_template.html">PK_FinalTemplate<DecryptorImpl></a> <a class="code" href="class_p_k___final_template.html">Decryptor</a>;00130 };00131 00132 <span class="keyword">typedef</span> <a class="code" href="class_p_k___final_template.html">ElGamal::Encryptor</a> <a class="code" href="class_p_k___final_template.html">ElGamalEncryptor</a>;00133 <span class="keyword">typedef</span> <a class="code" href="class_p_k___final_template.html">ElGamal::Decryptor</a> <a class="code" href="class_p_k___final_template.html">ElGamalDecryptor</a>;00134 00135 NAMESPACE_END00136 00137 <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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -