<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Crypto++: ElGamalObjectImpl< BASE, SCHEME_OPTIONS, KEY > Class Template Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.4 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Crypto++</div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> </div> <div class="headertitle"> <div class="title">ElGamalObjectImpl< BASE, SCHEME_OPTIONS, KEY > Class Template Reference</div> </div> </div> <div class="contents"> <!-- doxytag: class="ElGamalObjectImpl" --><!-- doxytag: inherits="DL_ObjectImplBase,ElGamalBase" --><div class="dynheader"> Inheritance diagram for ElGamalObjectImpl< BASE, SCHEME_OPTIONS, KEY >:</div> <div class="dyncontent"> <div class="center"> <img src="class_el_gamal_object_impl.png" usemap="#ElGamalObjectImpl< BASE, SCHEME_OPTIONS, KEY >_map" alt=""/> <map id="ElGamalObjectImpl< BASE, SCHEME_OPTIONS, KEY >_map" name="ElGamalObjectImpl< BASE, SCHEME_OPTIONS, KEY >_map"> <area href="class_d_l___object_impl_base.html" title="_" alt="DL_ObjectImplBase< BASE, SCHEME_OPTIONS, KEY >" shape="rect" coords="0,112,407,136"/> <area href="class_el_gamal_base.html" alt="ElGamalBase" shape="rect" coords="834,112,1241,136"/> <area href="class_algorithm_impl.html" alt="AlgorithmImpl< BASE, SCHEME_OPTIONS::AlgorithmInfo >" shape="rect" coords="0,56,407,80"/> <area href="class_d_l___key_agreement_algorithm___d_h.html" alt="DL_KeyAgreementAlgorithm_DH< Integer, NoCofactorMultiplication >" shape="rect" coords="417,56,824,80"/> <area href="class_d_l___key_derivation_algorithm.html" alt="DL_KeyDerivationAlgorithm< Integer >" shape="rect" coords="834,56,1241,80"/> <area href="class_d_l___symmetric_encryption_algorithm.html" title="interface for symmetric encryption algorithms used in DL cryptosystems" alt="DL_SymmetricEncryptionAlgorithm" shape="rect" coords="1251,56,1658,80"/> <area href="class_b_a_s_e.html" alt="BASE" shape="rect" coords="0,0,407,24"/> <area href="class_d_l___key_agreement_algorithm.html" alt="DL_KeyAgreementAlgorithm< Integer >" shape="rect" coords="417,0,824,24"/> </map> </div></div> <p><a href="class_el_gamal_object_impl-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6f5ed674de19651ef59f5ffca06c1d3"></a><!-- doxytag: member="ElGamalObjectImpl::SchemeOptions" ref="ac6f5ed674de19651ef59f5ffca06c1d3" args="" --> typedef SCHEME_OPTIONS </td><td class="memItemRight" valign="bottom"><b>SchemeOptions</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab752cc22846eb3dffe4a9a16ca668e42"></a><!-- doxytag: member="ElGamalObjectImpl::Element" ref="ab752cc22846eb3dffe4a9a16ca668e42" args="" --> typedef KEY::Element </td><td class="memItemRight" valign="bottom"><b>Element</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7826da86d51bf2074368604372f101f8"></a><!-- doxytag: member="ElGamalObjectImpl::Element" ref="a7826da86d51bf2074368604372f101f8" args="" --> typedef <a class="el" href="class_integer.html">Integer</a> </td><td class="memItemRight" valign="bottom"><b>Element</b></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1121364b14aad73f0e21c98945da987b"></a><!-- doxytag: member="ElGamalObjectImpl::FixedMaxPlaintextLength" ref="a1121364b14aad73f0e21c98945da987b" args="() const " --> size_t </td><td class="memItemRight" valign="bottom"><b>FixedMaxPlaintextLength</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48920f42c4fbd2daa3f1239d2e3d67ef"></a><!-- doxytag: member="ElGamalObjectImpl::FixedCiphertextLength" ref="a48920f42c4fbd2daa3f1239d2e3d67ef" args="() const " --> size_t </td><td class="memItemRight" valign="bottom"><b>FixedCiphertextLength</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d231f1f248c5101c3db33b1b323dfd9"></a><!-- doxytag: member="ElGamalObjectImpl::GetGroupParameters" ref="a2d231f1f248c5101c3db33b1b323dfd9" args="() const " --> const <a class="el" href="class_d_l___group_parameters___g_f_p.html">DL_GroupParameters_GFP</a> & </td><td class="memItemRight" valign="bottom"><b>GetGroupParameters</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa05597da937255a2685e870eceeeb35"></a><!-- doxytag: member="ElGamalObjectImpl::FixedLengthDecrypt" ref="aaa05597da937255a2685e870eceeeb35" args="(RandomNumberGenerator &rng, const byte *cipherText, byte *plainText) const " --> <a class="el" href="struct_decoding_result.html">DecodingResult</a> </td><td class="memItemRight" valign="bottom"><b>FixedLengthDecrypt</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const byte *cipherText, byte *plainText) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf6b42d2625531e2a687315ed8a6ce3f"></a><!-- doxytag: member="ElGamalObjectImpl::AccessPrivateKey" ref="acf6b42d2625531e2a687315ed8a6ce3f" args="()" --> <a class="el" href="class_private_key.html">PrivateKey</a> & </td><td class="memItemRight" valign="bottom"><b>AccessPrivateKey</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0752de1b25d033c60f10dec6a73a087c"></a><!-- doxytag: member="ElGamalObjectImpl::AccessPublicKey" ref="a0752de1b25d033c60f10dec6a73a087c" args="()" --> <a class="el" href="class_public_key.html">PublicKey</a> & </td><td class="memItemRight" valign="bottom"><b>AccessPublicKey</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c5dfaa1d89456b201a0f0431ad42e7c"></a><!-- doxytag: member="ElGamalObjectImpl::GetKey" ref="a7c5dfaa1d89456b201a0f0431ad42e7c" args="() const " --> const KEY & </td><td class="memItemRight" valign="bottom"><b>GetKey</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add3080d45df60168f02e2a0a894f1bea"></a><!-- doxytag: member="ElGamalObjectImpl::AccessKey" ref="add3080d45df60168f02e2a0a894f1bea" args="()" --> KEY & </td><td class="memItemRight" valign="bottom"><b>AccessKey</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d6e3714fc32c36789147d9f3b627eeb"></a><!-- doxytag: member="ElGamalObjectImpl::AlgorithmName" ref="a9d6e3714fc32c36789147d9f3b627eeb" args="() const" --> std::string </td><td class="memItemRight" valign="bottom"><b>AlgorithmName</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeac8cd47a26c15417fe6cb30af8ae0f"></a><!-- doxytag: member="ElGamalObjectImpl::Derive" ref="aaeac8cd47a26c15417fe6cb30af8ae0f" args="(const DL_GroupParameters< Integer > &groupParams, byte *derivedKey, size_t derivedLength, const Integer &agreedElement, const Integer &ephemeralPublicKey, const NameValuePairs &derivationParams) const " --> void </td><td class="memItemRight" valign="bottom"><b>Derive</b> (const <a class="el" href="class_d_l___group_parameters.html">DL_GroupParameters</a>< <a class="el" href="class_integer.html">Integer</a> > &groupParams, byte *derivedKey, size_t derivedLength, const <a class="el" href="class_integer.html">Integer</a> &agreedElement, const <a class="el" href="class_integer.html">Integer</a> &ephemeralPublicKey, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &derivationParams) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14ac7ac4ccb1d1bf5221e679ab24c28d"></a><!-- doxytag: member="ElGamalObjectImpl::GetSymmetricKeyLength" ref="a14ac7ac4ccb1d1bf5221e679ab24c28d" args="(size_t plainTextLength) const " --> size_t </td><td class="memItemRight" valign="bottom"><b>GetSymmetricKeyLength</b> (size_t plainTextLength) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8598d1ce1f20423ae10dd8ff80e2cfd3"></a><!-- doxytag: member="ElGamalObjectImpl::GetSymmetricCiphertextLength" ref="a8598d1ce1f20423ae10dd8ff80e2cfd3" args="(size_t plainTextLength) const " --> size_t </td><td class="memItemRight" valign="bottom"><b>GetSymmetricCiphertextLength</b> (size_t plainTextLength) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acab5ed17e036c9be22d3c7db612cd51e"></a><!-- doxytag: member="ElGamalObjectImpl::GetMaxSymmetricPlaintextLength" ref="acab5ed17e036c9be22d3c7db612cd51e" args="(size_t cipherTextLength) const " --> size_t </td><td class="memItemRight" valign="bottom"><b>GetMaxSymmetricPlaintextLength</b> (size_t cipherTextLength) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8bfe7f4e11f39c014699c755d0d8be6"></a><!-- doxytag: member="ElGamalObjectImpl::SymmetricEncrypt" ref="aa8bfe7f4e11f39c014699c755d0d8be6" args="(RandomNumberGenerator &rng, const byte *key, const byte *plainText, size_t plainTextLength, byte *cipherText, const NameValuePairs &parameters) const " --> void </td><td class="memItemRight" valign="bottom"><b>SymmetricEncrypt</b> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const byte *key, const byte *plainText, size_t plainTextLength, byte *cipherText, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &parameters) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab88d21d5c3d4e7400bf8083b271e2923"></a><!-- doxytag: member="ElGamalObjectImpl::SymmetricDecrypt" ref="ab88d21d5c3d4e7400bf8083b271e2923" args="(const byte *key, const byte *cipherText, size_t cipherTextLength, byte *plainText, const NameValuePairs &parameters) const " --> <a class="el" href="struct_decoding_result.html">DecodingResult</a> </td><td class="memItemRight" valign="bottom"><b>SymmetricDecrypt</b> (const byte *key, const byte *cipherText, size_t cipherTextLength, byte *plainText, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &parameters) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55279caeebb64b68b5925a77abcb336b"></a><!-- doxytag: member="ElGamalObjectImpl::AgreeWithEphemeralPrivateKey" ref="a55279caeebb64b68b5925a77abcb336b" args="(const DL_GroupParameters< Element > &params, const DL_FixedBasePrecomputation< Element > &publicPrecomputation, const Integer &privateExponent) const" --> Element </td><td class="memItemRight" valign="bottom"><b>AgreeWithEphemeralPrivateKey</b> (const <a class="el" href="class_d_l___group_parameters.html">DL_GroupParameters</a>< Element > &params, const <a class="el" href="class_d_l___fixed_base_precomputation.html">DL_FixedBasePrecomputation</a>< Element > &publicPrecomputation, const <a class="el" href="class_integer.html">Integer</a> &privateExponent) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10e3e05ac2cf6158270f4a45abdd0517"></a><!-- doxytag: member="ElGamalObjectImpl::AgreeWithStaticPrivateKey" ref="a10e3e05ac2cf6158270f4a45abdd0517" args="(const DL_GroupParameters< Element > &params, const Element &publicElement, bool validateOtherPublicKey, const Integer &privateExponent) const" --> Element </td><td class="memItemRight" valign="bottom"><b>AgreeWithStaticPrivateKey</b> (const <a class="el" href="class_d_l___group_parameters.html">DL_GroupParameters</a>< Element > &params, const Element &publicElement, bool validateOtherPublicKey, const <a class="el" href="class_integer.html">Integer</a> &privateExponent) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cc409b63f8d026d8671c631e354e672"></a><!-- doxytag: member="ElGamalObjectImpl::ParameterSupported" ref="a4cc409b63f8d026d8671c631e354e672" args="(const char *name) const" --> virtual bool </td><td class="memItemRight" valign="bottom"><b>ParameterSupported</b> (const char *name) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adeaf9c95829451d891ac709f147206df"></a><!-- doxytag: member="ElGamalObjectImpl::ParameterSupported" ref="adeaf9c95829451d891ac709f147206df" args="(const char *name) const " --> virtual bool </td><td class="memItemRight" valign="bottom"><b>ParameterSupported</b> (const char *name) const </td></tr> <tr><td colspan="2"><h2><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b388176a0c4853b2a3e747c5e637b95"></a><!-- doxytag: member="ElGamalObjectImpl::StaticAlgorithmName" ref="a4b388176a0c4853b2a3e747c5e637b95" args="()" --> static std::string </td><td class="memItemRight" valign="bottom"><b>StaticAlgorithmName</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2221e8b644e1dddd2030de59f3d09ed5"></a><!-- doxytag: member="ElGamalObjectImpl::StaticAlgorithmName" ref="a2221e8b644e1dddd2030de59f3d09ed5" args="()" --> static const char * </td><td class="memItemRight" valign="bottom"><b>StaticAlgorithmName</b> ()</td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a995dd0d1eb231599d66736308718b0"></a><!-- doxytag: member="ElGamalObjectImpl::GetKeyAgreementAlgorithm" ref="a5a995dd0d1eb231599d66736308718b0" args="() const " --> const <a class="el" href="class_d_l___key_agreement_algorithm.html">DL_KeyAgreementAlgorithm</a><br class="typebreak"/> < <a class="el" href="class_integer.html">Integer</a> > & </td><td class="memItemRight" valign="bottom"><b>GetKeyAgreementAlgorithm</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5c3cc4e22d2b52585700ac4df1086c4"></a><!-- doxytag: member="ElGamalObjectImpl::GetKeyDerivationAlgorithm" ref="ac5c3cc4e22d2b52585700ac4df1086c4" args="() const " --> const <br class="typebreak"/> <a class="el" href="class_d_l___key_derivation_algorithm.html">DL_KeyDerivationAlgorithm</a><br class="typebreak"/> < <a class="el" href="class_integer.html">Integer</a> > & </td><td class="memItemRight" valign="bottom"><b>GetKeyDerivationAlgorithm</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84c2429968e74060383233fd494f1356"></a><!-- doxytag: member="ElGamalObjectImpl::GetSymmetricEncryptionAlgorithm" ref="a84c2429968e74060383233fd494f1356" args="() const " --> const <br class="typebreak"/> <a class="el" href="class_d_l___symmetric_encryption_algorithm.html">DL_SymmetricEncryptionAlgorithm</a> & </td><td class="memItemRight" valign="bottom"><b>GetSymmetricEncryptionAlgorithm</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4e61281fd0ea2b6097915d330566c00"></a><!-- doxytag: member="ElGamalObjectImpl::AccessKeyInterface" ref="af4e61281fd0ea2b6097915d330566c00" args="()" --> BASE::KeyInterface & </td><td class="memItemRight" valign="bottom"><b>AccessKeyInterface</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d7af27b16078118b401f04adada8977"></a><!-- doxytag: member="ElGamalObjectImpl::GetKeyInterface" ref="a0d7af27b16078118b401f04adada8977" args="() const " --> const BASE::KeyInterface & </td><td class="memItemRight" valign="bottom"><b>GetKeyInterface</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9467b962b5be20e0e358aad0ade7cc18"></a><!-- doxytag: member="ElGamalObjectImpl::GetHashIdentifier" ref="a9467b962b5be20e0e358aad0ade7cc18" args="() const " --> HashIdentifier </td><td class="memItemRight" valign="bottom"><b>GetHashIdentifier</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d0d6de472834351e262bcc1887b214f"></a><!-- doxytag: member="ElGamalObjectImpl::GetDigestSize" ref="a7d0d6de472834351e262bcc1887b214f" args="() const " --> size_t </td><td class="memItemRight" valign="bottom"><b>GetDigestSize</b> () const </td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><h3>template<class BASE, class SCHEME_OPTIONS, class KEY><br/> class ElGamalObjectImpl< BASE, SCHEME_OPTIONS, KEY ></h3> <p>Definition at line <a class="el" href="elgamal_8h_source.html#l00078">78</a> of file <a class="el" href="elgamal_8h_source.html">elgamal.h</a>.</p> </div><hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="elgamal_8h_source.html">elgamal.h</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Sun Oct 16 2011 for Crypto++ by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> </body> </html>