Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > 07dfcfe50d66c9a48a3c5e6c1693f12a > files > 369

cryptopp-doc-5.6.1-0.1.svn479.fc13.i686.rpm

<!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++: DH2 Class 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.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;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 class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>DH2 Class Reference</h1><!-- doxytag: class="DH2" --><!-- doxytag: inherits="AuthenticatedKeyAgreementDomain" -->
<p><a href="http://www.weidai.com/scan-mirror/ka.html#DH2">Unified Diffie-Hellman</a>  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="dh2_8h_source.html">dh2.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for DH2:</div>
<div class="dynsection">
 <div class="center">
  <img src="class_d_h2.gif" usemap="#DH2_map" alt=""/>
  <map id="DH2_map" name="DH2_map">
<area href="class_authenticated_key_agreement_domain.html" alt="AuthenticatedKeyAgreementDomain" shape="rect" coords="0,224,214,248"/>
<area href="class_key_agreement_algorithm.html" alt="KeyAgreementAlgorithm" shape="rect" coords="0,168,214,192"/>
<area href="class_asymmetric_algorithm.html" alt="AsymmetricAlgorithm" shape="rect" coords="0,112,214,136"/>
<area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="0,56,214,80"/>
<area href="class_clonable.html" alt="Clonable" shape="rect" coords="0,0,214,24"/>
</map>
 </div>
</div>

<p><a href="class_d_h2-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2ee7e416b765879cb9b8066701baca6"></a><!-- doxytag: member="DH2::DH2" ref="ae2ee7e416b765879cb9b8066701baca6" args="(SimpleKeyAgreementDomain &amp;domain)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>DH2</b> (<a class="el" href="class_simple_key_agreement_domain.html">SimpleKeyAgreementDomain</a> &amp;domain)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d28d61071631a9d2d187c01984fa8de"></a><!-- doxytag: member="DH2::DH2" ref="a3d28d61071631a9d2d187c01984fa8de" args="(SimpleKeyAgreementDomain &amp;staticDomain, SimpleKeyAgreementDomain &amp;ephemeralDomain)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>DH2</b> (<a class="el" href="class_simple_key_agreement_domain.html">SimpleKeyAgreementDomain</a> &amp;staticDomain, <a class="el" href="class_simple_key_agreement_domain.html">SimpleKeyAgreementDomain</a> &amp;ephemeralDomain)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8873541aa29f886dc4c38c183e231bac"></a><!-- doxytag: member="DH2::AccessCryptoParameters" ref="a8873541aa29f886dc4c38c183e231bac" args="()" -->
<a class="el" href="class_crypto_parameters.html">CryptoParameters</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>AccessCryptoParameters</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a403d4258cc4c99fb00c921a7e85de660"></a><!-- doxytag: member="DH2::AgreedValueLength" ref="a403d4258cc4c99fb00c921a7e85de660" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#a403d4258cc4c99fb00c921a7e85de660">AgreedValueLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return length of agreed value produced <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed4126a3c1c6dc8c800ca7802e12f8f9"></a><!-- doxytag: member="DH2::StaticPrivateKeyLength" ref="aed4126a3c1c6dc8c800ca7802e12f8f9" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#aed4126a3c1c6dc8c800ca7802e12f8f9">StaticPrivateKeyLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return length of static private keys in this domain <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4f0631532ad65475f53dd3710c6901c"></a><!-- doxytag: member="DH2::StaticPublicKeyLength" ref="ac4f0631532ad65475f53dd3710c6901c" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#ac4f0631532ad65475f53dd3710c6901c">StaticPublicKeyLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return length of static public keys in this domain <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#a05de579e63f552a103208bd7fdd23440">GenerateStaticPrivateKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate static private key  <a href="#a05de579e63f552a103208bd7fdd23440"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#a7151a0d3e0ab520aef0b61c70f59a50a">GenerateStaticPublicKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const byte *privateKey, byte *publicKey) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate static public key  <a href="#a7151a0d3e0ab520aef0b61c70f59a50a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#aa4a447f81fcdcc656fe4fc5b6e99dc2e">GenerateStaticKeyPair</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey, byte *publicKey) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate private/public key pair  <a href="#aa4a447f81fcdcc656fe4fc5b6e99dc2e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf142bd312b462c1fb1c8c2078fae3fc"></a><!-- doxytag: member="DH2::EphemeralPrivateKeyLength" ref="adf142bd312b462c1fb1c8c2078fae3fc" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#adf142bd312b462c1fb1c8c2078fae3fc">EphemeralPrivateKeyLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return length of ephemeral private keys in this domain <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf9a6b522bd06c40254ceffab14e429c"></a><!-- doxytag: member="DH2::EphemeralPublicKeyLength" ref="adf9a6b522bd06c40254ceffab14e429c" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#adf9a6b522bd06c40254ceffab14e429c">EphemeralPublicKeyLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return length of ephemeral public keys in this domain <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#ab0e10e700f4461005b386a53ca37e7f8">GenerateEphemeralPrivateKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate ephemeral private key  <a href="#ab0e10e700f4461005b386a53ca37e7f8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#ab8f69e52f50794ca51774f671cfa45da">GenerateEphemeralPublicKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const byte *privateKey, byte *publicKey) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate ephemeral public key  <a href="#ab8f69e52f50794ca51774f671cfa45da"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#a4b5a84bf47e9a18348521b5a9c752cce">GenerateEphemeralKeyPair</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey, byte *publicKey) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate private/public key pair  <a href="#a4b5a84bf47e9a18348521b5a9c752cce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_d_h2.html#a561ed549ab2f287bd5f72be06e217290">Agree</a> (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">derive agreed value from your private keys and couterparty's public keys, return false in case of failure  <a href="#a561ed549ab2f287bd5f72be06e217290"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9c52198ff0dd877243c9520d96beaaa"></a><!-- doxytag: member="DH2::AccessMaterial" ref="ab9c52198ff0dd877243c9520d96beaaa" args="()" -->
<a class="el" href="class_crypto_material.html">CryptoMaterial</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_key_agreement_algorithm.html#ab9c52198ff0dd877243c9520d96beaaa">AccessMaterial</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns a reference to the crypto material used by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeef052b9f5db7aa72d451c272e578e47"></a><!-- doxytag: member="DH2::GetMaterial" ref="aeef052b9f5db7aa72d451c272e578e47" args="() const " -->
const <a class="el" href="class_crypto_material.html">CryptoMaterial</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_key_agreement_algorithm.html#aeef052b9f5db7aa72d451c272e578e47">GetMaterial</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns a const reference to the crypto material used by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3641afd3786b1fbd50a55c3c69a2389"></a><!-- doxytag: member="DH2::GetCryptoParameters" ref="ad3641afd3786b1fbd50a55c3c69a2389" args="() const " -->
virtual const <a class="el" href="class_crypto_parameters.html">CryptoParameters</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>GetCryptoParameters</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a522dbfcd5c1a46bf1be301cec26d6534"></a><!-- doxytag: member="DH2::BERDecode" ref="a522dbfcd5c1a46bf1be301cec26d6534" args="(BufferedTransformation &amp;bt)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_asymmetric_algorithm.html#a522dbfcd5c1a46bf1be301cec26d6534">BERDecode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for backwards compatibility, calls <a class="el" href="class_asymmetric_algorithm.html#ad99d55413166b69a0a12e10d111926c8" title="returns a reference to the crypto material used by this object">AccessMaterial()</a>.Load(bt) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d704079890783422b0a44653480ab83"></a><!-- doxytag: member="DH2::DEREncode" ref="a2d704079890783422b0a44653480ab83" args="(BufferedTransformation &amp;bt) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_asymmetric_algorithm.html#a2d704079890783422b0a44653480ab83">DEREncode</a> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for backwards compatibility, calls <a class="el" href="class_asymmetric_algorithm.html#adf9cc798c5a2d20ab3436dbad8e6df2d" title="returns a const reference to the crypto material used by this object">GetMaterial()</a>.Save(bt) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd21c6715add4884fa043eaf51655039"></a><!-- doxytag: member="DH2::AlgorithmName" ref="acd21c6715add4884fa043eaf51655039" args="() const " -->
virtual std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#acd21c6715add4884fa043eaf51655039">AlgorithmName</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24b43349a71e1f98508eeb10b31a0a62"></a><!-- doxytag: member="DH2::Clone" ref="a24b43349a71e1f98508eeb10b31a0a62" args="() const " -->
virtual <a class="el" href="class_clonable.html">Clonable</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#a24b43349a71e1f98508eeb10b31a0a62">Clone</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">this is not implemented by most classes yet <br/></td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37d787f31570d6289d6a3bf9aaeaf185"></a><!-- doxytag: member="DH2::d1" ref="a37d787f31570d6289d6a3bf9aaeaf185" args="" -->
<a class="el" href="class_simple_key_agreement_domain.html">SimpleKeyAgreementDomain</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>d1</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6dd273fb685b14e642d272b8a3ea13d4"></a><!-- doxytag: member="DH2::d2" ref="a6dd273fb685b14e642d272b8a3ea13d4" args="" -->
<a class="el" href="class_simple_key_agreement_domain.html">SimpleKeyAgreementDomain</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>d2</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p><a href="http://www.weidai.com/scan-mirror/ka.html#DH2">Unified Diffie-Hellman</a> </p>

<p>Definition at line <a class="el" href="dh2_8h_source.html#l00012">12</a> of file <a class="el" href="dh2_8h_source.html">dh2.h</a>.</p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a05de579e63f552a103208bd7fdd23440"></a><!-- doxytag: member="DH2::GenerateStaticPrivateKey" ref="a05de579e63f552a103208bd7fdd23440" args="(RandomNumberGenerator &amp;rng, byte *privateKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void DH2::GenerateStaticPrivateKey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>privateKey</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>generate static private key </p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>size of privateKey == PrivateStaticKeyLength() </dd></dl>

<p>Implements <a class="el" href="class_authenticated_key_agreement_domain.html#a00d9b12028e9ecb61af6d0f312965c6f">AuthenticatedKeyAgreementDomain</a>.</p>

<p>Definition at line <a class="el" href="dh2_8h_source.html#l00029">29</a> of file <a class="el" href="dh2_8h_source.html">dh2.h</a>.</p>

</div>
</div>
<a class="anchor" id="a7151a0d3e0ab520aef0b61c70f59a50a"></a><!-- doxytag: member="DH2::GenerateStaticPublicKey" ref="a7151a0d3e0ab520aef0b61c70f59a50a" args="(RandomNumberGenerator &amp;rng, const byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void DH2::GenerateStaticPublicKey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>publicKey</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>generate static public key </p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>size of publicKey == PublicStaticKeyLength() </dd></dl>

<p>Implements <a class="el" href="class_authenticated_key_agreement_domain.html#a853885a901ac7c4f8c51fd177df5d96c">AuthenticatedKeyAgreementDomain</a>.</p>

<p>Definition at line <a class="el" href="dh2_8h_source.html#l00031">31</a> of file <a class="el" href="dh2_8h_source.html">dh2.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa4a447f81fcdcc656fe4fc5b6e99dc2e"></a><!-- doxytag: member="DH2::GenerateStaticKeyPair" ref="aa4a447f81fcdcc656fe4fc5b6e99dc2e" args="(RandomNumberGenerator &amp;rng, byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void DH2::GenerateStaticKeyPair </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>publicKey</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>generate private/public key pair </p>
<dl class="note"><dt><b>Note:</b></dt><dd>equivalent to calling <a class="el" href="class_d_h2.html#a05de579e63f552a103208bd7fdd23440" title="generate static private key">GenerateStaticPrivateKey()</a> and then <a class="el" href="class_d_h2.html#a7151a0d3e0ab520aef0b61c70f59a50a" title="generate static public key">GenerateStaticPublicKey()</a> </dd></dl>

<p>Reimplemented from <a class="el" href="class_authenticated_key_agreement_domain.html#ae2c306a6582c6e592ecb2c13abfd7c9f">AuthenticatedKeyAgreementDomain</a>.</p>

<p>Definition at line <a class="el" href="dh2_8h_source.html#l00033">33</a> of file <a class="el" href="dh2_8h_source.html">dh2.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab0e10e700f4461005b386a53ca37e7f8"></a><!-- doxytag: member="DH2::GenerateEphemeralPrivateKey" ref="ab0e10e700f4461005b386a53ca37e7f8" args="(RandomNumberGenerator &amp;rng, byte *privateKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void DH2::GenerateEphemeralPrivateKey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>privateKey</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>generate ephemeral private key </p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>size of privateKey == PrivateEphemeralKeyLength() </dd></dl>

<p>Implements <a class="el" href="class_authenticated_key_agreement_domain.html#ab6280d3bf8ad1dd2aa976910b81502f8">AuthenticatedKeyAgreementDomain</a>.</p>

<p>Definition at line <a class="el" href="dh2_8h_source.html#l00040">40</a> of file <a class="el" href="dh2_8h_source.html">dh2.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab8f69e52f50794ca51774f671cfa45da"></a><!-- doxytag: member="DH2::GenerateEphemeralPublicKey" ref="ab8f69e52f50794ca51774f671cfa45da" args="(RandomNumberGenerator &amp;rng, const byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void DH2::GenerateEphemeralPublicKey </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>publicKey</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>generate ephemeral public key </p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>size of publicKey == PublicEphemeralKeyLength() </dd></dl>

<p>Implements <a class="el" href="class_authenticated_key_agreement_domain.html#a9d1bc83a77f44af6616da42c33b3bc49">AuthenticatedKeyAgreementDomain</a>.</p>

<p>Definition at line <a class="el" href="dh2_8h_source.html#l00042">42</a> of file <a class="el" href="dh2_8h_source.html">dh2.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4b5a84bf47e9a18348521b5a9c752cce"></a><!-- doxytag: member="DH2::GenerateEphemeralKeyPair" ref="a4b5a84bf47e9a18348521b5a9c752cce" args="(RandomNumberGenerator &amp;rng, byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void DH2::GenerateEphemeralKeyPair </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>publicKey</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>generate private/public key pair </p>
<dl class="note"><dt><b>Note:</b></dt><dd>equivalent to calling <a class="el" href="class_d_h2.html#ab0e10e700f4461005b386a53ca37e7f8" title="generate ephemeral private key">GenerateEphemeralPrivateKey()</a> and then <a class="el" href="class_d_h2.html#ab8f69e52f50794ca51774f671cfa45da" title="generate ephemeral public key">GenerateEphemeralPublicKey()</a> </dd></dl>

<p>Reimplemented from <a class="el" href="class_authenticated_key_agreement_domain.html#a18f1fc5fa590be704d53759e44fba093">AuthenticatedKeyAgreementDomain</a>.</p>

<p>Definition at line <a class="el" href="dh2_8h_source.html#l00044">44</a> of file <a class="el" href="dh2_8h_source.html">dh2.h</a>.</p>

</div>
</div>
<a class="anchor" id="a561ed549ab2f287bd5f72be06e217290"></a><!-- doxytag: member="DH2::Agree" ref="a561ed549ab2f287bd5f72be06e217290" args="(byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool DH2::Agree </td>
          <td>(</td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>agreedValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>staticPrivateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>ephemeralPrivateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>staticOtherPublicKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>ephemeralOtherPublicKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>validateStaticOtherPublicKey</em> = <code>true</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>derive agreed value from your private keys and couterparty's public keys, return false in case of failure </p>
<dl class="note"><dt><b>Note:</b></dt><dd>The ephemeral public key will always be validated. If you have previously validated the static public key, use validateStaticOtherPublicKey=false to save time. </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>size of agreedValue == <a class="el" href="class_d_h2.html#a403d4258cc4c99fb00c921a7e85de660" title="return length of agreed value produced">AgreedValueLength()</a> </dd>
<dd>
length of staticPrivateKey == <a class="el" href="class_d_h2.html#aed4126a3c1c6dc8c800ca7802e12f8f9" title="return length of static private keys in this domain">StaticPrivateKeyLength()</a> </dd>
<dd>
length of ephemeralPrivateKey == <a class="el" href="class_d_h2.html#adf142bd312b462c1fb1c8c2078fae3fc" title="return length of ephemeral private keys in this domain">EphemeralPrivateKeyLength()</a> </dd>
<dd>
length of staticOtherPublicKey == <a class="el" href="class_d_h2.html#ac4f0631532ad65475f53dd3710c6901c" title="return length of static public keys in this domain">StaticPublicKeyLength()</a> </dd>
<dd>
length of ephemeralOtherPublicKey == <a class="el" href="class_d_h2.html#adf9a6b522bd06c40254ceffab14e429c" title="return length of ephemeral public keys in this domain">EphemeralPublicKeyLength()</a> </dd></dl>

<p>Implements <a class="el" href="class_authenticated_key_agreement_domain.html#ac9808fb56eacee0c08a9bbd22fe2c98e">AuthenticatedKeyAgreementDomain</a>.</p>

<p>Definition at line <a class="el" href="dh2_8cpp_source.html#l00013">13</a> of file <a class="el" href="dh2_8cpp_source.html">dh2.cpp</a>.</p>

<p>References <a class="el" href="class_simple_key_agreement_domain.html#a732339ca730408cca7b1191fc32eb39e">SimpleKeyAgreementDomain::Agree()</a>, and <a class="el" href="class_simple_key_agreement_domain.html#aedb873e4aa6fc15ac5245b7af04e4946">SimpleKeyAgreementDomain::AgreedValueLength()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="dh2_8h_source.html">dh2.h</a></li>
<li><a class="el" href="dh2_8cpp_source.html">dh2.cpp</a></li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on 9 Dec 2009 for Crypto++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>