Sophie

Sophie

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

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++: MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt; 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.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>MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt; Class Template Reference</h1><!-- doxytag: class="MQV_Domain" --><!-- doxytag: inherits="AuthenticatedKeyAgreementDomain" -->
<p>_  
<a href="#_details">More...</a></p>

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

<p><a href="class_m_q_v___domain-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cff608458e5959a568d7436fdc3029f"></a><!-- doxytag: member="MQV_Domain::GroupParameters" ref="a4cff608458e5959a568d7436fdc3029f" args="" -->
typedef GROUP_PARAMETERS&nbsp;</td><td class="memItemRight" valign="bottom"><b>GroupParameters</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f5dcde7c2ada9f94e2c67fd07389360"></a><!-- doxytag: member="MQV_Domain::Element" ref="a9f5dcde7c2ada9f94e2c67fd07389360" args="" -->
typedef GroupParameters::Element&nbsp;</td><td class="memItemRight" valign="bottom"><b>Element</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575a65a1e83cbf2981ba727f2a424fcc"></a><!-- doxytag: member="MQV_Domain::Domain" ref="a575a65a1e83cbf2981ba727f2a424fcc" args="" -->
typedef <a class="el" href="class_m_q_v___domain.html">MQV_Domain</a><br class="typebreak"/>
&lt; GROUP_PARAMETERS, <br class="typebreak"/>
COFACTOR_OPTION &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>Domain</b></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89a6c2d98cc463ae0355c9c52d950b18"></a><!-- doxytag: member="MQV_Domain::MQV_Domain" ref="a89a6c2d98cc463ae0355c9c52d950b18" args="(const GroupParameters &amp;params)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>MQV_Domain</b> (const GroupParameters &amp;params)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c64fc7b2e78e07654f4ec77176aa0dd"></a><!-- doxytag: member="MQV_Domain::MQV_Domain" ref="a2c64fc7b2e78e07654f4ec77176aa0dd" args="(BufferedTransformation &amp;bt)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>MQV_Domain</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt)</td></tr>
<tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a13413bb88b2c027a189393a89d3dbcb2"></a><!-- doxytag: member="MQV_Domain::MQV_Domain" ref="a13413bb88b2c027a189393a89d3dbcb2" args="(T1 v1, T2 v2)" -->
template&lt;class T1 , class T2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><b>MQV_Domain</b> (T1 v1, T2 v2)</td></tr>
<tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a21ca678dae86d2418dda040ee67e60cf"></a><!-- doxytag: member="MQV_Domain::MQV_Domain" ref="a21ca678dae86d2418dda040ee67e60cf" args="(T1 v1, T2 v2, T3 v3)" -->
template&lt;class T1 , class T2 , class T3 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><b>MQV_Domain</b> (T1 v1, T2 v2, T3 v3)</td></tr>
<tr><td class="memTemplParams" colspan="2"><a class="anchor" id="af07abe18b592b214e80883cb4065fa2e"></a><!-- doxytag: member="MQV_Domain::MQV_Domain" ref="af07abe18b592b214e80883cb4065fa2e" args="(T1 v1, T2 v2, T3 v3, T4 v4)" -->
template&lt;class T1 , class T2 , class T3 , class T4 &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><b>MQV_Domain</b> (T1 v1, T2 v2, T3 v3, T4 v4)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49b0a85296b1bcfcac68672a10b55d96"></a><!-- doxytag: member="MQV_Domain::GetGroupParameters" ref="a49b0a85296b1bcfcac68672a10b55d96" args="() const " -->
const GroupParameters &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>GetGroupParameters</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2af02b1905ff725e7f8fb379ac64940"></a><!-- doxytag: member="MQV_Domain::AccessGroupParameters" ref="aa2af02b1905ff725e7f8fb379ac64940" args="()" -->
GroupParameters &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>AccessGroupParameters</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4dda134c82bac3cd13bb1b468159cde"></a><!-- doxytag: member="MQV_Domain::AccessCryptoParameters" ref="af4dda134c82bac3cd13bb1b468159cde" 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="ad92db2cb60736ff6d37bc20efabc98ee"></a><!-- doxytag: member="MQV_Domain::AgreedValueLength" ref="ad92db2cb60736ff6d37bc20efabc98ee" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_q_v___domain.html#ad92db2cb60736ff6d37bc20efabc98ee">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="a253afc0b839a2650ec076cb919236245"></a><!-- doxytag: member="MQV_Domain::StaticPrivateKeyLength" ref="a253afc0b839a2650ec076cb919236245" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_q_v___domain.html#a253afc0b839a2650ec076cb919236245">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="a5a50415b5ef733d8f7fca9d89d99266b"></a><!-- doxytag: member="MQV_Domain::StaticPublicKeyLength" ref="a5a50415b5ef733d8f7fca9d89d99266b" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_q_v___domain.html#a5a50415b5ef733d8f7fca9d89d99266b">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_m_q_v___domain.html#a11bfbdb30b9a6776f2827ba200d5af50">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="#a11bfbdb30b9a6776f2827ba200d5af50"></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_m_q_v___domain.html#a61fa5fd2199f8b5ce450002ac61072d2">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="#a61fa5fd2199f8b5ce450002ac61072d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a559eb73d99d87c5bb89720a810e7ad01"></a><!-- doxytag: member="MQV_Domain::EphemeralPrivateKeyLength" ref="a559eb73d99d87c5bb89720a810e7ad01" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_q_v___domain.html#a559eb73d99d87c5bb89720a810e7ad01">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="a78793f5c2ff53d3ca7b63e86dcc05649"></a><!-- doxytag: member="MQV_Domain::EphemeralPublicKeyLength" ref="a78793f5c2ff53d3ca7b63e86dcc05649" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_q_v___domain.html#a78793f5c2ff53d3ca7b63e86dcc05649">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_m_q_v___domain.html#aefc317e9012eea4b7f43b3a72398e34d">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="#aefc317e9012eea4b7f43b3a72398e34d"></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_m_q_v___domain.html#a2cc3ee07353b65ac5f353ef5cb7aad14">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="#a2cc3ee07353b65ac5f353ef5cb7aad14"></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_m_q_v___domain.html#a9a7642a35cdbaca0023629c0477aefc1">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="#a9a7642a35cdbaca0023629c0477aefc1"></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">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"><a class="anchor" id="ab9c52198ff0dd877243c9520d96beaaa"></a><!-- doxytag: member="MQV_Domain::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="MQV_Domain::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="MQV_Domain::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="MQV_Domain::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="MQV_Domain::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="MQV_Domain::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="MQV_Domain::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>
<h3>template&lt;class GROUP_PARAMETERS, class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption&gt;<br/>
 class MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</h3>

<p>_ </p>

<p>Definition at line <a class="el" href="mqv_8h_source.html#l00013">13</a> of file <a class="el" href="mqv_8h_source.html">mqv.h</a>.</p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a11bfbdb30b9a6776f2827ba200d5af50"></a><!-- doxytag: member="MQV_Domain::GenerateStaticPrivateKey" ref="a11bfbdb30b9a6776f2827ba200d5af50" args="(RandomNumberGenerator &amp;rng, byte *privateKey) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_m_q_v___domain.html">MQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;::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="mqv_8h_source.html#l00049">49</a> of file <a class="el" href="mqv_8h_source.html">mqv.h</a>.</p>

<p>References <a class="el" href="integer_8cpp_source.html#l03124">Integer::Encode()</a>, and <a class="el" href="integer_8cpp_source.html#l02879">Integer::One()</a>.</p>

</div>
</div>
<a class="anchor" id="a61fa5fd2199f8b5ce450002ac61072d2"></a><!-- doxytag: member="MQV_Domain::GenerateStaticPublicKey" ref="a61fa5fd2199f8b5ce450002ac61072d2" args="(RandomNumberGenerator &amp;rng, const byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_m_q_v___domain.html">MQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;::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="mqv_8h_source.html#l00055">55</a> of file <a class="el" href="mqv_8h_source.html">mqv.h</a>.</p>

</div>
</div>
<a class="anchor" id="aefc317e9012eea4b7f43b3a72398e34d"></a><!-- doxytag: member="MQV_Domain::GenerateEphemeralPrivateKey" ref="aefc317e9012eea4b7f43b3a72398e34d" args="(RandomNumberGenerator &amp;rng, byte *privateKey) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_m_q_v___domain.html">MQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;::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="mqv_8h_source.html#l00066">66</a> of file <a class="el" href="mqv_8h_source.html">mqv.h</a>.</p>

<p>References <a class="el" href="integer_8cpp_source.html#l02879">Integer::One()</a>.</p>

</div>
</div>
<a class="anchor" id="a2cc3ee07353b65ac5f353ef5cb7aad14"></a><!-- doxytag: member="MQV_Domain::GenerateEphemeralPublicKey" ref="a2cc3ee07353b65ac5f353ef5cb7aad14" args="(RandomNumberGenerator &amp;rng, const byte *privateKey, byte *publicKey) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_m_q_v___domain.html">MQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;::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="mqv_8h_source.html#l00075">75</a> of file <a class="el" href="mqv_8h_source.html">mqv.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9a7642a35cdbaca0023629c0477aefc1"></a><!-- doxytag: member="MQV_Domain::Agree" ref="a9a7642a35cdbaca0023629c0477aefc1" 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">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="class_m_q_v___domain.html">MQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;::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> [inline, 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_m_q_v___domain.html#ad92db2cb60736ff6d37bc20efabc98ee" title="return length of agreed value produced">AgreedValueLength()</a> </dd>
<dd>
length of staticPrivateKey == <a class="el" href="class_m_q_v___domain.html#a253afc0b839a2650ec076cb919236245" title="return length of static private keys in this domain">StaticPrivateKeyLength()</a> </dd>
<dd>
length of ephemeralPrivateKey == <a class="el" href="class_m_q_v___domain.html#a559eb73d99d87c5bb89720a810e7ad01" title="return length of ephemeral private keys in this domain">EphemeralPrivateKeyLength()</a> </dd>
<dd>
length of staticOtherPublicKey == <a class="el" href="class_m_q_v___domain.html#a5a50415b5ef733d8f7fca9d89d99266b" title="return length of static public keys in this domain">StaticPublicKeyLength()</a> </dd>
<dd>
length of ephemeralOtherPublicKey == <a class="el" href="class_m_q_v___domain.html#a78793f5c2ff53d3ca7b63e86dcc05649" 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="mqv_8h_source.html#l00080">80</a> of file <a class="el" href="mqv_8h_source.html">mqv.h</a>.</p>

<p>References <a class="el" href="integer_8cpp_source.html#l03066">Integer::BitCount()</a>, <a class="el" href="integer_8cpp_source.html#l03746">Integer::Divide()</a>, and <a class="el" href="integer_8cpp_source.html#l02858">Integer::Power2()</a>.</p>

</div>
</div>
<a class="anchor" id="ae2c306a6582c6e592ecb2c13abfd7c9f"></a><!-- doxytag: member="MQV_Domain::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, inherited]</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">AuthenticatedKeyAgreementDomain::GenerateStaticPrivateKey()</a>, and <a class="el" href="class_authenticated_key_agreement_domain.html#a853885a901ac7c4f8c51fd177df5d96c">AuthenticatedKeyAgreementDomain::GenerateStaticPublicKey()</a>.</p>

</div>
</div>
<a class="anchor" id="a18f1fc5fa590be704d53759e44fba093"></a><!-- doxytag: member="MQV_Domain::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, inherited]</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">AuthenticatedKeyAgreementDomain::GenerateEphemeralPrivateKey()</a>, and <a class="el" href="class_authenticated_key_agreement_domain.html#a9d1bc83a77f44af6616da42c33b3bc49">AuthenticatedKeyAgreementDomain::GenerateEphemeralPublicKey()</a>.</p>

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