Sophie

Sophie

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

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++: AuthenticatedKeyAgreementDomain 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>AuthenticatedKeyAgreementDomain Class Reference</h1><!-- doxytag: class="AuthenticatedKeyAgreementDomain" --><!-- doxytag: inherits="KeyAgreementAlgorithm" -->
<p>interface for domains of authenticated key agreement protocols  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for AuthenticatedKeyAgreementDomain:</div>
<div class="dynsection">
 <div class="center">
  <img src="class_authenticated_key_agreement_domain.gif" usemap="#AuthenticatedKeyAgreementDomain_map" alt=""/>
  <map id="AuthenticatedKeyAgreementDomain_map" name="AuthenticatedKeyAgreementDomain_map">
<area href="class_key_agreement_algorithm.html" alt="KeyAgreementAlgorithm" shape="rect" coords="196,168,578,192"/>
<area href="class_asymmetric_algorithm.html" alt="AsymmetricAlgorithm" shape="rect" coords="196,112,578,136"/>
<area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="196,56,578,80"/>
<area href="class_clonable.html" alt="Clonable" shape="rect" coords="196,0,578,24"/>
<area href="class_d_h2.html" alt="DH2" shape="rect" coords="0,280,382,304"/>
<area href="class_m_q_v___domain.html" alt="MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;" shape="rect" coords="392,280,774,304"/>
</map>
 </div>
</div>

<p><a href="class_authenticated_key_agreement_domain-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="a98ff4ab957b445060f06c95636a098ea"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::AgreedValueLength" ref="a98ff4ab957b445060f06c95636a098ea" args="() const =0" -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a98ff4ab957b445060f06c95636a098ea">AgreedValueLength</a> () const =0</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="a1ede4e454e74031ec0f0786dc2a14ddf"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::StaticPrivateKeyLength" ref="a1ede4e454e74031ec0f0786dc2a14ddf" args="() const =0" -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a1ede4e454e74031ec0f0786dc2a14ddf">StaticPrivateKeyLength</a> () const =0</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="aa7a7a1a641b21fb55cfec96cbf029795"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::StaticPublicKeyLength" ref="aa7a7a1a641b21fb55cfec96cbf029795" args="() const =0" -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#aa7a7a1a641b21fb55cfec96cbf029795">StaticPublicKeyLength</a> () const =0</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">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a00d9b12028e9ecb61af6d0f312965c6f">GenerateStaticPrivateKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey) const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate static private key  <a href="#a00d9b12028e9ecb61af6d0f312965c6f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a853885a901ac7c4f8c51fd177df5d96c">GenerateStaticPublicKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const byte *privateKey, byte *publicKey) const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate static public key  <a href="#a853885a901ac7c4f8c51fd177df5d96c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#ae2c306a6582c6e592ecb2c13abfd7c9f">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="#ae2c306a6582c6e592ecb2c13abfd7c9f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a449deae54019f6dfc9677e721a193004"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::EphemeralPrivateKeyLength" ref="a449deae54019f6dfc9677e721a193004" args="() const =0" -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a449deae54019f6dfc9677e721a193004">EphemeralPrivateKeyLength</a> () const =0</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="a3dbef507ea4fd300ad8b2afb4d7afbe9"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::EphemeralPublicKeyLength" ref="a3dbef507ea4fd300ad8b2afb4d7afbe9" args="() const =0" -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a3dbef507ea4fd300ad8b2afb4d7afbe9">EphemeralPublicKeyLength</a> () const =0</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">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#ab6280d3bf8ad1dd2aa976910b81502f8">GenerateEphemeralPrivateKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey) const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate ephemeral private key  <a href="#ab6280d3bf8ad1dd2aa976910b81502f8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a9d1bc83a77f44af6616da42c33b3bc49">GenerateEphemeralPublicKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const byte *privateKey, byte *publicKey) const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate ephemeral public key  <a href="#a9d1bc83a77f44af6616da42c33b3bc49"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a18f1fc5fa590be704d53759e44fba093">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="#a18f1fc5fa590be704d53759e44fba093"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#ac9808fb56eacee0c08a9bbd22fe2c98e">Agree</a> (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const =0</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="#ac9808fb56eacee0c08a9bbd22fe2c98e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9c52198ff0dd877243c9520d96beaaa"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::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="AuthenticatedKeyAgreementDomain::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="abbe709ef84c668901d9e6cf09167d9c9"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::AccessCryptoParameters" ref="abbe709ef84c668901d9e6cf09167d9c9" args="()=0" -->
virtual <a class="el" href="class_crypto_parameters.html">CryptoParameters</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>AccessCryptoParameters</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3641afd3786b1fbd50a55c3c69a2389"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::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="AuthenticatedKeyAgreementDomain::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="AuthenticatedKeyAgreementDomain::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="AuthenticatedKeyAgreementDomain::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="AuthenticatedKeyAgreementDomain::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>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>interface for domains of authenticated key agreement protocols </p>
<p>In an authenticated key agreement protocol, each party has two key pairs. The long-lived key pair is called the static key pair, and the short-lived key pair is called the ephemeral key pair. </p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l01482">1482</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a00d9b12028e9ecb61af6d0f312965c6f"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::GenerateStaticPrivateKey" ref="a00d9b12028e9ecb61af6d0f312965c6f" args="(RandomNumberGenerator &amp;rng, byte *privateKey) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void AuthenticatedKeyAgreementDomain::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> [pure 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>Implemented in <a class="el" href="class_d_h2.html#a05de579e63f552a103208bd7fdd23440">DH2</a>, and <a class="el" href="class_m_q_v___domain.html#a11bfbdb30b9a6776f2827ba200d5af50">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00807">GenerateStaticKeyPair()</a>.</p>

</div>
</div>
<a class="anchor" id="a853885a901ac7c4f8c51fd177df5d96c"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::GenerateStaticPublicKey" ref="a853885a901ac7c4f8c51fd177df5d96c" args="(RandomNumberGenerator &amp;rng, const byte *privateKey, byte *publicKey) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void AuthenticatedKeyAgreementDomain::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> [pure 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>Implemented in <a class="el" href="class_d_h2.html#a7151a0d3e0ab520aef0b61c70f59a50a">DH2</a>, and <a class="el" href="class_m_q_v___domain.html#a61fa5fd2199f8b5ce450002ac61072d2">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00807">GenerateStaticKeyPair()</a>.</p>

</div>
</div>
<a class="anchor" id="ae2c306a6582c6e592ecb2c13abfd7c9f"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::GenerateStaticKeyPair" ref="ae2c306a6582c6e592ecb2c13abfd7c9f" args="(RandomNumberGenerator &amp;rng, byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void AuthenticatedKeyAgreementDomain::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> [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_authenticated_key_agreement_domain.html#a00d9b12028e9ecb61af6d0f312965c6f" title="generate static private key">GenerateStaticPrivateKey()</a> and then <a class="el" href="class_authenticated_key_agreement_domain.html#a853885a901ac7c4f8c51fd177df5d96c" title="generate static public key">GenerateStaticPublicKey()</a> </dd></dl>

<p>Reimplemented in <a class="el" href="class_d_h2.html#aa4a447f81fcdcc656fe4fc5b6e99dc2e">DH2</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00807">807</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="class_authenticated_key_agreement_domain.html#a00d9b12028e9ecb61af6d0f312965c6f">GenerateStaticPrivateKey()</a>, and <a class="el" href="class_authenticated_key_agreement_domain.html#a853885a901ac7c4f8c51fd177df5d96c">GenerateStaticPublicKey()</a>.</p>

</div>
</div>
<a class="anchor" id="ab6280d3bf8ad1dd2aa976910b81502f8"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::GenerateEphemeralPrivateKey" ref="ab6280d3bf8ad1dd2aa976910b81502f8" args="(RandomNumberGenerator &amp;rng, byte *privateKey) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void AuthenticatedKeyAgreementDomain::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> [pure 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>Implemented in <a class="el" href="class_d_h2.html#ab0e10e700f4461005b386a53ca37e7f8">DH2</a>, and <a class="el" href="class_m_q_v___domain.html#aefc317e9012eea4b7f43b3a72398e34d">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00813">GenerateEphemeralKeyPair()</a>.</p>

</div>
</div>
<a class="anchor" id="a9d1bc83a77f44af6616da42c33b3bc49"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::GenerateEphemeralPublicKey" ref="a9d1bc83a77f44af6616da42c33b3bc49" args="(RandomNumberGenerator &amp;rng, const byte *privateKey, byte *publicKey) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void AuthenticatedKeyAgreementDomain::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> [pure 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>Implemented in <a class="el" href="class_d_h2.html#ab8f69e52f50794ca51774f671cfa45da">DH2</a>, and <a class="el" href="class_m_q_v___domain.html#a2cc3ee07353b65ac5f353ef5cb7aad14">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00813">GenerateEphemeralKeyPair()</a>.</p>

</div>
</div>
<a class="anchor" id="a18f1fc5fa590be704d53759e44fba093"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::GenerateEphemeralKeyPair" ref="a18f1fc5fa590be704d53759e44fba093" args="(RandomNumberGenerator &amp;rng, byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void AuthenticatedKeyAgreementDomain::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> [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_authenticated_key_agreement_domain.html#ab6280d3bf8ad1dd2aa976910b81502f8" title="generate ephemeral private key">GenerateEphemeralPrivateKey()</a> and then <a class="el" href="class_authenticated_key_agreement_domain.html#a9d1bc83a77f44af6616da42c33b3bc49" title="generate ephemeral public key">GenerateEphemeralPublicKey()</a> </dd></dl>

<p>Reimplemented in <a class="el" href="class_d_h2.html#a4b5a84bf47e9a18348521b5a9c752cce">DH2</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00813">813</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="class_authenticated_key_agreement_domain.html#ab6280d3bf8ad1dd2aa976910b81502f8">GenerateEphemeralPrivateKey()</a>, and <a class="el" href="class_authenticated_key_agreement_domain.html#a9d1bc83a77f44af6616da42c33b3bc49">GenerateEphemeralPublicKey()</a>.</p>

</div>
</div>
<a class="anchor" id="ac9808fb56eacee0c08a9bbd22fe2c98e"></a><!-- doxytag: member="AuthenticatedKeyAgreementDomain::Agree" ref="ac9808fb56eacee0c08a9bbd22fe2c98e" args="(byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool AuthenticatedKeyAgreementDomain::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> [pure 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_authenticated_key_agreement_domain.html#a98ff4ab957b445060f06c95636a098ea" title="return length of agreed value produced">AgreedValueLength()</a> </dd>
<dd>
length of staticPrivateKey == <a class="el" href="class_authenticated_key_agreement_domain.html#a1ede4e454e74031ec0f0786dc2a14ddf" title="return length of static private keys in this domain">StaticPrivateKeyLength()</a> </dd>
<dd>
length of ephemeralPrivateKey == <a class="el" href="class_authenticated_key_agreement_domain.html#a449deae54019f6dfc9677e721a193004" title="return length of ephemeral private keys in this domain">EphemeralPrivateKeyLength()</a> </dd>
<dd>
length of staticOtherPublicKey == <a class="el" href="class_authenticated_key_agreement_domain.html#aa7a7a1a641b21fb55cfec96cbf029795" title="return length of static public keys in this domain">StaticPublicKeyLength()</a> </dd>
<dd>
length of ephemeralOtherPublicKey == <a class="el" href="class_authenticated_key_agreement_domain.html#a3dbef507ea4fd300ad8b2afb4d7afbe9" title="return length of ephemeral public keys in this domain">EphemeralPublicKeyLength()</a> </dd></dl>

<p>Implemented in <a class="el" href="class_d_h2.html#a561ed549ab2f287bd5f72be06e217290">DH2</a>, and <a class="el" href="class_m_q_v___domain.html#a9a7642a35cdbaca0023629c0477aefc1">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="cryptlib_8h_source.html">cryptlib.h</a></li>
<li><a class="el" href="cryptlib_8cpp_source.html">cryptlib.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>