<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Crypto++: TemplateDL_SimpleKeyAgreementDomainBase< T > class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.7 --> <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">Class 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">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div> <h1>DL_SimpleKeyAgreementDomainBase< T > Class Template Reference</h1><code>#include <<a class="el" href="pubkey_8h-source.html">pubkey.h</a>></code> <p> <p>Inheritance diagram for DL_SimpleKeyAgreementDomainBase< T >: <p><center><img src="class_d_l___simple_key_agreement_domain_base.png" usemap="#DL_SimpleKeyAgreementDomainBase< T >_map" border="0" alt=""></center> <map name="DL_SimpleKeyAgreementDomainBase< T >_map"> <area href="class_simple_key_agreement_domain.html" alt="SimpleKeyAgreementDomain" shape="rect" coords="0,224,256,248"> <area href="class_key_agreement_algorithm.html" alt="KeyAgreementAlgorithm" shape="rect" coords="0,168,256,192"> <area href="class_asymmetric_algorithm.html" alt="AsymmetricAlgorithm" shape="rect" coords="0,112,256,136"> <area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="0,56,256,80"> <area href="class_clonable.html" alt="Clonable" shape="rect" coords="0,0,256,24"> </map> <a href="class_d_l___simple_key_agreement_domain_base-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2> <h3>template<class T><br> class DL_SimpleKeyAgreementDomainBase< T ></h3> _ <p> <p> Definition at line <a class="el" href="pubkey_8h-source.html#l01400">1400</a> of file <a class="el" href="pubkey_8h-source.html">pubkey.h</a>.<table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>Public Types</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_basew0" doxytag="DL_SimpleKeyAgreementDomainBase::Element" ></a> typedef T </td><td class="memItemRight" valign=bottom><b>Element</b></td></tr> <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_basea0" doxytag="DL_SimpleKeyAgreementDomainBase::AccessCryptoParameters" ></a> <a class="el" href="class_crypto_parameters.html">CryptoParameters</a> & </td><td class="memItemRight" valign=bottom><b>AccessCryptoParameters</b> ()</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_basea1" doxytag="DL_SimpleKeyAgreementDomainBase::AgreedValueLength" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_d_l___simple_key_agreement_domain_base.html#_d_l___simple_key_agreement_domain_basea1">AgreedValueLength</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return length of agreed value produced <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_basea2" doxytag="DL_SimpleKeyAgreementDomainBase::PrivateKeyLength" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_d_l___simple_key_agreement_domain_base.html#_d_l___simple_key_agreement_domain_basea2">PrivateKeyLength</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return length of private keys in this domain <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_basea3" doxytag="DL_SimpleKeyAgreementDomainBase::PublicKeyLength" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_d_l___simple_key_agreement_domain_base.html#_d_l___simple_key_agreement_domain_basea3">PublicKeyLength</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return length of public keys in this domain <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_d_l___simple_key_agreement_domain_base.html#_d_l___simple_key_agreement_domain_basea4">GeneratePrivateKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, byte *privateKey) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">generate private key <a href="#_d_l___simple_key_agreement_domain_basea4"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_d_l___simple_key_agreement_domain_base.html#_d_l___simple_key_agreement_domain_basea5">GeneratePublicKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, const byte *privateKey, byte *publicKey) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">generate public key <a href="#_d_l___simple_key_agreement_domain_basea5"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_d_l___simple_key_agreement_domain_base.html#_d_l___simple_key_agreement_domain_basea6">Agree</a> (byte *agreedValue, const byte *privateKey, const byte *otherPublicKey, bool validateOtherPublicKey=true) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">derive agreed value from your private key and couterparty's public key, return false in case of failure <a href="#_d_l___simple_key_agreement_domain_basea6"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_basea7" doxytag="DL_SimpleKeyAgreementDomainBase::GetGenerator" ></a> const Element & </td><td class="memItemRight" valign=bottom><b>GetGenerator</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_key_agreement_domain.html#_x_t_r___d_ha20">GenerateKeyPair</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, byte *privateKey, byte *publicKey) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">generate private/public key pair <a href="#_x_t_r___d_ha20"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha21" doxytag="DL_SimpleKeyAgreementDomainBase::AccessMaterial" ></a> <a class="el" href="class_crypto_material.html">CryptoMaterial</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="class_key_agreement_algorithm.html#_x_t_r___d_ha21">AccessMaterial</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns a reference to the crypto material used by this object <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha22" doxytag="DL_SimpleKeyAgreementDomainBase::GetMaterial" ></a> const <a class="el" href="class_crypto_material.html">CryptoMaterial</a> & </td><td class="memItemRight" valign=bottom><a class="el" href="class_key_agreement_algorithm.html#_x_t_r___d_ha22">GetMaterial</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns a const reference to the crypto material used by this object <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha23" doxytag="DL_SimpleKeyAgreementDomainBase::GetCryptoParameters" ></a> virtual const <a class="el" href="class_crypto_parameters.html">CryptoParameters</a> & </td><td class="memItemRight" valign=bottom><b>GetCryptoParameters</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_t_r___d_ha24" doxytag="DL_SimpleKeyAgreementDomainBase::BERDecode" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_asymmetric_algorithm.html#_x_t_r___d_ha24">BERDecode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">for backwards compatibility, calls <a class="el" href="class_asymmetric_algorithm.html#_asymmetric_algorithma0">AccessMaterial()</a>.Load(bt) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a21" doxytag="DL_SimpleKeyAgreementDomainBase::DEREncode" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_asymmetric_algorithm.html#_two_bases_3_01_t_f___verifier_base_00_01_public_key_copier_3_01_s_c_h_e_m_e___o_p_t_i_o_n_s_1_1_keys_01_4_01_4a21">DEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">for backwards compatibility, calls GetMaterial().Save(bt) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_zlib_decompressora17" doxytag="DL_SimpleKeyAgreementDomainBase::AlgorithmName" ></a> virtual std::string </td><td class="memItemRight" valign=bottom><a class="el" href="class_algorithm.html#_zlib_decompressora17">AlgorithmName</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_zlib_decompressora18" doxytag="DL_SimpleKeyAgreementDomainBase::Clone" ></a> virtual <a class="el" href="class_clonable.html">Clonable</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="class_clonable.html#_zlib_decompressora18">Clone</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">this is not implemented by most classes yet <br><br></td></tr> <tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_baseb0" doxytag="DL_SimpleKeyAgreementDomainBase::GetKeyAgreementAlgorithm" ></a> virtual const <a class="el" href="class_d_l___key_agreement_algorithm.html">DL_KeyAgreementAlgorithm</a><<br> Element > & </td><td class="memItemRight" valign=bottom><b>GetKeyAgreementAlgorithm</b> () const =0</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_baseb1" doxytag="DL_SimpleKeyAgreementDomainBase::AccessAbstractGroupParameters" ></a> virtual <a class="el" href="class_d_l___group_parameters.html">DL_GroupParameters</a><<br> Element > & </td><td class="memItemRight" valign=bottom><b>AccessAbstractGroupParameters</b> ()=0</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_d_l___simple_key_agreement_domain_baseb2" doxytag="DL_SimpleKeyAgreementDomainBase::GetAbstractGroupParameters" ></a> const <a class="el" href="class_d_l___group_parameters.html">DL_GroupParameters</a><<br> Element > & </td><td class="memItemRight" valign=bottom><b>GetAbstractGroupParameters</b> () const</td></tr> </table> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="_d_l___simple_key_agreement_domain_basea4" doxytag="DL_SimpleKeyAgreementDomainBase::GeneratePrivateKey" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" colspan="4"> template<class T> </td> </tr> <tr> <td class="md" nowrap valign="top"> void <a class="el" href="class_d_l___simple_key_agreement_domain_base.html">DL_SimpleKeyAgreementDomainBase</a>< T >::GeneratePrivateKey </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="mdname" nowrap> <em>rng</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>privateKey</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [inline, virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> generate private key <p> <dl compact><dt><b>Precondition:</b></dt><dd>size of privateKey == PrivateKeyLength() </dd></dl> <p> Implements <a class="el" href="class_simple_key_agreement_domain.html#_simple_key_agreement_domaina3">SimpleKeyAgreementDomain</a>. <p> Definition at line <a class="el" href="pubkey_8h-source.html#l01410">1410</a> of file <a class="el" href="pubkey_8h-source.html">pubkey.h</a>. </td> </tr> </table> <a class="anchor" name="_d_l___simple_key_agreement_domain_basea5" doxytag="DL_SimpleKeyAgreementDomainBase::GeneratePublicKey" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" colspan="4"> template<class T> </td> </tr> <tr> <td class="md" nowrap valign="top"> void <a class="el" href="class_d_l___simple_key_agreement_domain_base.html">DL_SimpleKeyAgreementDomainBase</a>< T >::GeneratePublicKey </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="mdname" nowrap> <em>rng</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const byte * </td> <td class="mdname" nowrap> <em>privateKey</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>publicKey</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [inline, virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> generate public key <p> <dl compact><dt><b>Precondition:</b></dt><dd>size of publicKey == PublicKeyLength() </dd></dl> <p> Implements <a class="el" href="class_simple_key_agreement_domain.html#_simple_key_agreement_domaina4">SimpleKeyAgreementDomain</a>. <p> Reimplemented in <a class="el" href="class_d_h___domain.html#_d_h___domaina11">DH_Domain< GROUP_PARAMETERS, COFACTOR_OPTION ></a>. <p> Definition at line <a class="el" href="pubkey_8h-source.html#l01416">1416</a> of file <a class="el" href="pubkey_8h-source.html">pubkey.h</a>. </td> </tr> </table> <a class="anchor" name="_d_l___simple_key_agreement_domain_basea6" doxytag="DL_SimpleKeyAgreementDomainBase::Agree" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" colspan="4"> template<class T> </td> </tr> <tr> <td class="md" nowrap valign="top"> bool <a class="el" href="class_d_l___simple_key_agreement_domain_base.html">DL_SimpleKeyAgreementDomainBase</a>< T >::Agree </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">byte * </td> <td class="mdname" nowrap> <em>agreedValue</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const byte * </td> <td class="mdname" nowrap> <em>privateKey</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>const byte * </td> <td class="mdname" nowrap> <em>otherPublicKey</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>bool </td> <td class="mdname" nowrap> <em>validateOtherPublicKey</em> = <code>true</code></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [inline, virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> derive agreed value from your private key and couterparty's public key, return false in case of failure <p> <dl compact><dt><b>Note:</b></dt><dd>If you have previously validated the public key, use validateOtherPublicKey=false to save time. </dd></dl> <dl compact><dt><b>Precondition:</b></dt><dd>size of agreedValue == AgreedValueLength() <p> length of privateKey == PrivateKeyLength() <p> length of otherPublicKey == PublicKeyLength()</dd></dl> <p> Implements <a class="el" href="class_simple_key_agreement_domain.html#_simple_key_agreement_domaina6">SimpleKeyAgreementDomain</a>. <p> Definition at line <a class="el" href="pubkey_8h-source.html#l01424">1424</a> of file <a class="el" href="pubkey_8h-source.html">pubkey.h</a>. </td> </tr> </table> <a class="anchor" name="_x_t_r___d_ha20" doxytag="DL_SimpleKeyAgreementDomainBase::GenerateKeyPair" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void SimpleKeyAgreementDomain::GenerateKeyPair </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> & </td> <td class="mdname" nowrap> <em>rng</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>privateKey</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td></td> <td class="md" nowrap>byte * </td> <td class="mdname" nowrap> <em>publicKey</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> generate private/public key pair <p> <dl compact><dt><b>Note:</b></dt><dd>equivalent to calling GeneratePrivateKey() and then GeneratePublicKey() </dd></dl> <p> Definition at line <a class="el" href="cryptlib_8cpp-source.html#l00667">667</a> of file <a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a>. <p> References <a class="el" href="cryptlib_8cpp-source.html#l00667">SimpleKeyAgreementDomain::GenerateKeyPair()</a>, <a class="el" href="class_simple_key_agreement_domain.html#_simple_key_agreement_domaina3">SimpleKeyAgreementDomain::GeneratePrivateKey()</a>, and <a class="el" href="class_simple_key_agreement_domain.html#_simple_key_agreement_domaina4">SimpleKeyAgreementDomain::GeneratePublicKey()</a>. <p> Referenced by <a class="el" href="cryptlib_8cpp-source.html#l00667">SimpleKeyAgreementDomain::GenerateKeyPair()</a>. </td> </tr> </table> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="pubkey_8h-source.html">pubkey.h</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:24:03 2004 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address> </body> </html>