Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-updates > by-pkgid > 17f48c047155a7d4c992d6a672acd57f > files > 328

libcryptopp-devel-7.0.0-1.1.mga7.armv7hl.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crypto++: AuthenticatedKeyAgreementDomain Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crypto++
   &#160;<span id="projectnumber">7.0</span>
   </div>
   <div id="projectbrief">Free&nbsp;C&#43;&#43;&nbsp;class&nbsp;library&nbsp;of&nbsp;cryptographic&nbsp;schemes</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_authenticated_key_agreement_domain-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">AuthenticatedKeyAgreementDomain Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Interface for domains of authenticated key agreement protocols.  
 <a href="class_authenticated_key_agreement_domain.html#details">More...</a></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for AuthenticatedKeyAgreementDomain:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
 <div class="center">
  <img src="class_authenticated_key_agreement_domain.png" usemap="#AuthenticatedKeyAgreementDomain_map" alt=""/>
  <map id="AuthenticatedKeyAgreementDomain_map" name="AuthenticatedKeyAgreementDomain_map">
<area href="class_key_agreement_algorithm.html" title="Interface for key agreement algorithms." alt="KeyAgreementAlgorithm" shape="rect" coords="679,168,1122,192"/>
<area href="class_asymmetric_algorithm.html" title="Interface for asymmetric algorithms." alt="AsymmetricAlgorithm" shape="rect" coords="679,112,1122,136"/>
<area href="class_algorithm.html" title="Interface for all crypto algorithms." alt="Algorithm" shape="rect" coords="679,56,1122,80"/>
<area href="class_clonable.html" title="Interface for cloning objects." alt="Clonable" shape="rect" coords="679,0,1122,24"/>
<area href="class_d_h2.html" title="Unified Diffie-Hellman in GF(p)" alt="DH2" shape="rect" coords="0,280,443,304"/>
<area href="class_f_h_m_q_v___domain.html" title="Fully Hashed Menezes-Qu-Vanstone in GF(p)" alt="FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;" shape="rect" coords="453,280,896,304"/>
<area href="class_h_m_q_v___domain.html" title="Hashed Menezes-Qu-Vanstone in GF(p)" alt="HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;" shape="rect" coords="906,280,1349,304"/>
<area href="class_m_q_v___domain.html" title="MQV domain for performing authenticated key agreement." alt="MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;" shape="rect" coords="1359,280,1802,304"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a98ff4ab957b445060f06c95636a098ea"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a98ff4ab957b445060f06c95636a098ea">AgreedValueLength</a> () const =0</td></tr>
<tr class="memdesc:a98ff4ab957b445060f06c95636a098ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the size of the agreed value.  <a href="#a98ff4ab957b445060f06c95636a098ea">More...</a><br /></td></tr>
<tr class="separator:a98ff4ab957b445060f06c95636a098ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ede4e454e74031ec0f0786dc2a14ddf"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a1ede4e454e74031ec0f0786dc2a14ddf">StaticPrivateKeyLength</a> () const =0</td></tr>
<tr class="memdesc:a1ede4e454e74031ec0f0786dc2a14ddf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the size of the static private key.  <a href="#a1ede4e454e74031ec0f0786dc2a14ddf">More...</a><br /></td></tr>
<tr class="separator:a1ede4e454e74031ec0f0786dc2a14ddf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7a7a1a641b21fb55cfec96cbf029795"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#aa7a7a1a641b21fb55cfec96cbf029795">StaticPublicKeyLength</a> () const =0</td></tr>
<tr class="memdesc:aa7a7a1a641b21fb55cfec96cbf029795"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the size of the static public key.  <a href="#aa7a7a1a641b21fb55cfec96cbf029795">More...</a><br /></td></tr>
<tr class="separator:aa7a7a1a641b21fb55cfec96cbf029795"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00d9b12028e9ecb61af6d0f312965c6f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</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 class="memdesc:a00d9b12028e9ecb61af6d0f312965c6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate static private key in this domain.  <a href="#a00d9b12028e9ecb61af6d0f312965c6f">More...</a><br /></td></tr>
<tr class="separator:a00d9b12028e9ecb61af6d0f312965c6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a853885a901ac7c4f8c51fd177df5d96c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</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 class="memdesc:a853885a901ac7c4f8c51fd177df5d96c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a static public key from a private key in this domain.  <a href="#a853885a901ac7c4f8c51fd177df5d96c">More...</a><br /></td></tr>
<tr class="separator:a853885a901ac7c4f8c51fd177df5d96c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec9aa2db0d67020eb381ba0a18b30aed"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#aec9aa2db0d67020eb381ba0a18b30aed">GenerateStaticKeyPair</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey, byte *publicKey) const</td></tr>
<tr class="memdesc:aec9aa2db0d67020eb381ba0a18b30aed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a static private/public key pair.  <a href="#aec9aa2db0d67020eb381ba0a18b30aed">More...</a><br /></td></tr>
<tr class="separator:aec9aa2db0d67020eb381ba0a18b30aed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a449deae54019f6dfc9677e721a193004"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a449deae54019f6dfc9677e721a193004">EphemeralPrivateKeyLength</a> () const =0</td></tr>
<tr class="memdesc:a449deae54019f6dfc9677e721a193004"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the size of ephemeral private key.  <a href="#a449deae54019f6dfc9677e721a193004">More...</a><br /></td></tr>
<tr class="separator:a449deae54019f6dfc9677e721a193004"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3dbef507ea4fd300ad8b2afb4d7afbe9"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#a3dbef507ea4fd300ad8b2afb4d7afbe9">EphemeralPublicKeyLength</a> () const =0</td></tr>
<tr class="memdesc:a3dbef507ea4fd300ad8b2afb4d7afbe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the size of ephemeral public key.  <a href="#a3dbef507ea4fd300ad8b2afb4d7afbe9">More...</a><br /></td></tr>
<tr class="separator:a3dbef507ea4fd300ad8b2afb4d7afbe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6280d3bf8ad1dd2aa976910b81502f8"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</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 class="memdesc:ab6280d3bf8ad1dd2aa976910b81502f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate ephemeral private key.  <a href="#ab6280d3bf8ad1dd2aa976910b81502f8">More...</a><br /></td></tr>
<tr class="separator:ab6280d3bf8ad1dd2aa976910b81502f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d1bc83a77f44af6616da42c33b3bc49"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</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 class="memdesc:a9d1bc83a77f44af6616da42c33b3bc49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate ephemeral public key.  <a href="#a9d1bc83a77f44af6616da42c33b3bc49">More...</a><br /></td></tr>
<tr class="separator:a9d1bc83a77f44af6616da42c33b3bc49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade1b25546d6f8d2572a9a810164360da"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_authenticated_key_agreement_domain.html#ade1b25546d6f8d2572a9a810164360da">GenerateEphemeralKeyPair</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey, byte *publicKey) const</td></tr>
<tr class="memdesc:ade1b25546d6f8d2572a9a810164360da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate private/public key pair.  <a href="#ade1b25546d6f8d2572a9a810164360da">More...</a><br /></td></tr>
<tr class="separator:ade1b25546d6f8d2572a9a810164360da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9808fb56eacee0c08a9bbd22fe2c98e"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</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 class="memdesc:ac9808fb56eacee0c08a9bbd22fe2c98e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derive agreed value.  <a href="#ac9808fb56eacee0c08a9bbd22fe2c98e">More...</a><br /></td></tr>
<tr class="separator:ac9808fb56eacee0c08a9bbd22fe2c98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_key_agreement_algorithm"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_key_agreement_algorithm')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_key_agreement_algorithm.html">KeyAgreementAlgorithm</a></td></tr>
<tr class="memitem:ab9c52198ff0dd877243c9520d96beaaa inherit pub_methods_class_key_agreement_algorithm"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_crypto_material.html">CryptoMaterial</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_key_agreement_algorithm.html#ab9c52198ff0dd877243c9520d96beaaa">AccessMaterial</a> ()</td></tr>
<tr class="memdesc:ab9c52198ff0dd877243c9520d96beaaa inherit pub_methods_class_key_agreement_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a reference to Crypto Parameters.  <a href="class_key_agreement_algorithm.html#ab9c52198ff0dd877243c9520d96beaaa">More...</a><br /></td></tr>
<tr class="separator:ab9c52198ff0dd877243c9520d96beaaa inherit pub_methods_class_key_agreement_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a1eb8e141b2f26a21efed7a1d7744c9 inherit pub_methods_class_key_agreement_algorithm"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="class_crypto_material.html">CryptoMaterial</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_key_agreement_algorithm.html#a3a1eb8e141b2f26a21efed7a1d7744c9">GetMaterial</a> () const</td></tr>
<tr class="memdesc:a3a1eb8e141b2f26a21efed7a1d7744c9 inherit pub_methods_class_key_agreement_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a reference to Crypto Parameters.  <a href="class_key_agreement_algorithm.html#a3a1eb8e141b2f26a21efed7a1d7744c9">More...</a><br /></td></tr>
<tr class="separator:a3a1eb8e141b2f26a21efed7a1d7744c9 inherit pub_methods_class_key_agreement_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbe709ef84c668901d9e6cf09167d9c9 inherit pub_methods_class_key_agreement_algorithm"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_crypto_parameters.html">CryptoParameters</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_key_agreement_algorithm.html#abbe709ef84c668901d9e6cf09167d9c9">AccessCryptoParameters</a> ()=0</td></tr>
<tr class="memdesc:abbe709ef84c668901d9e6cf09167d9c9 inherit pub_methods_class_key_agreement_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a reference to Crypto Parameters.  <a href="class_key_agreement_algorithm.html#abbe709ef84c668901d9e6cf09167d9c9">More...</a><br /></td></tr>
<tr class="separator:abbe709ef84c668901d9e6cf09167d9c9 inherit pub_methods_class_key_agreement_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b0e622b88d0b8d319c23e4aefef414d inherit pub_methods_class_key_agreement_algorithm"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="class_crypto_parameters.html">CryptoParameters</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_key_agreement_algorithm.html#a5b0e622b88d0b8d319c23e4aefef414d">GetCryptoParameters</a> () const</td></tr>
<tr class="memdesc:a5b0e622b88d0b8d319c23e4aefef414d inherit pub_methods_class_key_agreement_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a reference to Crypto Parameters.  <a href="class_key_agreement_algorithm.html#a5b0e622b88d0b8d319c23e4aefef414d">More...</a><br /></td></tr>
<tr class="separator:a5b0e622b88d0b8d319c23e4aefef414d inherit pub_methods_class_key_agreement_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_algorithm"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_algorithm')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_algorithm.html">Algorithm</a></td></tr>
<tr class="memitem:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#a1c77f5117ca2cd881baf26a364cfc606">Algorithm</a> (bool checkSelfTestStatus=true)</td></tr>
<tr class="memdesc:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface for all crypto algorithms.  <a href="class_algorithm.html#a1c77f5117ca2cd881baf26a364cfc606">More...</a><br /></td></tr>
<tr class="separator:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#a4f31510a192d1121856efe8ad0a9b844">AlgorithmName</a> () const</td></tr>
<tr class="memdesc:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the name of this algorithm.  <a href="class_algorithm.html#a4f31510a192d1121856efe8ad0a9b844">More...</a><br /></td></tr>
<tr class="separator:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_clonable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_clonable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_clonable.html">Clonable</a></td></tr>
<tr class="memitem:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_clonable.html">Clonable</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#ad0016ba2d505c23aa85aad49e6c19bb7">Clone</a> () const</td></tr>
<tr class="memdesc:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies this object.  <a href="class_clonable.html#ad0016ba2d505c23aa85aad49e6c19bb7">More...</a><br /></td></tr>
<tr class="separator:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><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><dl class="section since"><dt>Since</dt><dd>Crypto++ 3.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l02900">2900</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a98ff4ab957b445060f06c95636a098ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98ff4ab957b445060f06c95636a098ea">&#9670;&nbsp;</a></span>AgreedValueLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int AuthenticatedKeyAgreementDomain::AgreedValueLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the size of the agreed value. </p>
<dl class="section return"><dt>Returns</dt><dd>size of agreed value produced in this domain </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a6558a699673c7de656379ef801e3bae1">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#a11d24eca06c488213395d7686c7cb9e8">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#ab63c64474cafb81de06b04f59c468e1c">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#a437daa34e67386be339f77fab6290ed2">DH2</a>.</p>

</div>
</div>
<a id="a1ede4e454e74031ec0f0786dc2a14ddf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1ede4e454e74031ec0f0786dc2a14ddf">&#9670;&nbsp;</a></span>StaticPrivateKeyLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int AuthenticatedKeyAgreementDomain::StaticPrivateKeyLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the size of the static private key. </p>
<dl class="section return"><dt>Returns</dt><dd>size of static private keys in this domain </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a95a8aed92bc010a5b048902bcc30da37">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#af2191619ae005ee3cbf84c891d4fac38">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#a9ea3d9207cb1bfbd22d1478afdb4ca2b">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#a6010ec3b801a1c203e734330fc7fd2a9">DH2</a>.</p>

</div>
</div>
<a id="aa7a7a1a641b21fb55cfec96cbf029795"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7a7a1a641b21fb55cfec96cbf029795">&#9670;&nbsp;</a></span>StaticPublicKeyLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int AuthenticatedKeyAgreementDomain::StaticPublicKeyLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the size of the static public key. </p>
<dl class="section return"><dt>Returns</dt><dd>size of static public keys in this domain </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#ac2623ab1d98b3de87b35be50bc1e797f">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#afaaa3c4bf769778747054361afa6ce79">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#aca01fa98db1675423953049dc7288fc7">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#ad6ad579222bf0d7a4605b9744738a535">DH2</a>.</p>

</div>
</div>
<a id="a00d9b12028e9ecb61af6d0f312965c6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00d9b12028e9ecb61af6d0f312965c6f">&#9670;&nbsp;</a></span>GenerateStaticPrivateKey()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <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;&#160;</td>
          <td class="paramname"><em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>privateKey</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Generate static private key in this domain. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rng</td><td>a <a class="el" href="class_random_number_generator.html" title="Interface for random number generators.">RandomNumberGenerator</a> derived class </td></tr>
    <tr><td class="paramname">privateKey</td><td>a byte buffer for the generated private key in this domain </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(privateKey)</a> == PrivateStaticKeyLength()</code> </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a39b60e2dbf9ea3028d63f0dfc81d0cfb">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#a9c06f6c4320005050665f9b5bdd95d7c">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#a3c283a1124242a10243d9f2fa55e4ebc">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#ad4545fcb2e363d02110b5aa3dd0fd7cf">DH2</a>.</p>

</div>
</div>
<a id="a853885a901ac7c4f8c51fd177df5d96c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a853885a901ac7c4f8c51fd177df5d96c">&#9670;&nbsp;</a></span>GenerateStaticPublicKey()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <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;&#160;</td>
          <td class="paramname"><em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>publicKey</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Generate a static public key from a private key in this domain. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rng</td><td>a <a class="el" href="class_random_number_generator.html" title="Interface for random number generators.">RandomNumberGenerator</a> derived class </td></tr>
    <tr><td class="paramname">privateKey</td><td>a byte buffer with the previously generated private key </td></tr>
    <tr><td class="paramname">publicKey</td><td>a byte buffer for the generated public key in this domain </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(publicKey)</a> == PublicStaticKeyLength()</code> </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a5ce4df4bf76fe67038393e53e6dfe84d">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#a6197320d8cff11a581ba6dc63f56135e">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#ac89aea97b86688d190ce29a638e80c5c">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#a0678e8fd7c99762fde9495f5d6db0c1e">DH2</a>.</p>

</div>
</div>
<a id="aec9aa2db0d67020eb381ba0a18b30aed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec9aa2db0d67020eb381ba0a18b30aed">&#9670;&nbsp;</a></span>GenerateStaticKeyPair()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <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;&#160;</td>
          <td class="paramname"><em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>publicKey</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Generate a static private/public key pair. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rng</td><td>a <a class="el" href="class_random_number_generator.html" title="Interface for random number generators.">RandomNumberGenerator</a> derived class </td></tr>
    <tr><td class="paramname">privateKey</td><td>a byte buffer for the generated private key in this domain </td></tr>
    <tr><td class="paramname">publicKey</td><td>a byte buffer for the generated public key in this domain</td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="class_authenticated_key_agreement_domain.html#aec9aa2db0d67020eb381ba0a18b30aed" title="Generate a static private/public key pair.">GenerateStaticKeyPair()</a> is equivalent to calling <a class="el" href="class_authenticated_key_agreement_domain.html#a00d9b12028e9ecb61af6d0f312965c6f" title="Generate static private key in this domain.">GenerateStaticPrivateKey()</a> and then <a class="el" href="class_authenticated_key_agreement_domain.html#a853885a901ac7c4f8c51fd177df5d96c" title="Generate a static public key from a private key in this domain.">GenerateStaticPublicKey()</a>. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(privateKey)</a> == PrivateStaticKeyLength()</code> </dd>
<dd>
<code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(publicKey)</a> == PublicStaticKeyLength()</code> </dd></dl>

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

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

</div>
</div>
<a id="a449deae54019f6dfc9677e721a193004"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a449deae54019f6dfc9677e721a193004">&#9670;&nbsp;</a></span>EphemeralPrivateKeyLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int AuthenticatedKeyAgreementDomain::EphemeralPrivateKeyLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the size of ephemeral private key. </p>
<dl class="section return"><dt>Returns</dt><dd>the size of ephemeral private key in this domain </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a2e8c585ba17f8eb0ddf10cb2c6c4b0dc">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#a6ed4416001a5274c53dd464357921773">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#ac288ec5ed6e6f793fdc44af246358727">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#a88a83b16397f2048cb71a20327b189c9">DH2</a>.</p>

</div>
</div>
<a id="a3dbef507ea4fd300ad8b2afb4d7afbe9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3dbef507ea4fd300ad8b2afb4d7afbe9">&#9670;&nbsp;</a></span>EphemeralPublicKeyLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int AuthenticatedKeyAgreementDomain::EphemeralPublicKeyLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the size of ephemeral public key. </p>
<dl class="section return"><dt>Returns</dt><dd>the size of ephemeral public key in this domain </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a071369fe7462d070cbdf0521b8fb5edd">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#a32be4fa94a76cf9db42256c67e86596b">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#ad26c33a539bdc3b31718f6cfe26bf9ea">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#ab0e942c0a0291484f5d07071613be6d9">DH2</a>.</p>

</div>
</div>
<a id="ab6280d3bf8ad1dd2aa976910b81502f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6280d3bf8ad1dd2aa976910b81502f8">&#9670;&nbsp;</a></span>GenerateEphemeralPrivateKey()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <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;&#160;</td>
          <td class="paramname"><em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>privateKey</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Generate ephemeral private key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rng</td><td>a <a class="el" href="class_random_number_generator.html" title="Interface for random number generators.">RandomNumberGenerator</a> derived class </td></tr>
    <tr><td class="paramname">privateKey</td><td>a byte buffer for the generated private key in this domain </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(privateKey)</a> == PrivateEphemeralKeyLength()</code> </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a6b07e1e10bf1d8b9f1a4644eef74ea43">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#ac2253b9d410426082f84b8511f5023a5">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#a37b468af095df8fd85ee7dad8ff07b09">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#ac42bd7794dad72824d6bc2dc7ac4f55b">DH2</a>.</p>

</div>
</div>
<a id="a9d1bc83a77f44af6616da42c33b3bc49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d1bc83a77f44af6616da42c33b3bc49">&#9670;&nbsp;</a></span>GenerateEphemeralPublicKey()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <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;&#160;</td>
          <td class="paramname"><em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>publicKey</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Generate ephemeral public key. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rng</td><td>a <a class="el" href="class_random_number_generator.html" title="Interface for random number generators.">RandomNumberGenerator</a> derived class </td></tr>
    <tr><td class="paramname">privateKey</td><td>a byte buffer for the generated private key in this domain </td></tr>
    <tr><td class="paramname">publicKey</td><td>a byte buffer for the generated public key in this domain </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(publicKey)</a> == PublicEphemeralKeyLength()</code> </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a2dd74c07dd93b000b48e689b30809373">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#a8ef9a5116ee04935ab0a7ac298388039">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#a555c19cf2475e0afc4a911f16d65375c">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#ad4626fcaa8844603dd1525a1879296c0">DH2</a>.</p>

</div>
</div>
<a id="ade1b25546d6f8d2572a9a810164360da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade1b25546d6f8d2572a9a810164360da">&#9670;&nbsp;</a></span>GenerateEphemeralKeyPair()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <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;&#160;</td>
          <td class="paramname"><em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>privateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>publicKey</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Generate private/public key pair. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rng</td><td>a <a class="el" href="class_random_number_generator.html" title="Interface for random number generators.">RandomNumberGenerator</a> derived class </td></tr>
    <tr><td class="paramname">privateKey</td><td>a byte buffer for the generated private key in this domain </td></tr>
    <tr><td class="paramname">publicKey</td><td>a byte buffer for the generated public key in this domain</td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="class_authenticated_key_agreement_domain.html#ade1b25546d6f8d2572a9a810164360da" title="Generate private/public key pair.">GenerateEphemeralKeyPair()</a> is 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> </p>

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

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

</div>
</div>
<a id="ac9808fb56eacee0c08a9bbd22fe2c98e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9808fb56eacee0c08a9bbd22fe2c98e">&#9670;&nbsp;</a></span>Agree()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool AuthenticatedKeyAgreementDomain::Agree </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>agreedValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>staticPrivateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>ephemeralPrivateKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>staticOtherPublicKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>ephemeralOtherPublicKey</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>validateStaticOtherPublicKey</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Derive agreed value. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">agreedValue</td><td>a byte buffer for the shared secret </td></tr>
    <tr><td class="paramname">staticPrivateKey</td><td>a byte buffer with your static private key in this domain </td></tr>
    <tr><td class="paramname">ephemeralPrivateKey</td><td>a byte buffer with your ephemeral private key in this domain </td></tr>
    <tr><td class="paramname">staticOtherPublicKey</td><td>a byte buffer with the other party's static public key in this domain </td></tr>
    <tr><td class="paramname">ephemeralOtherPublicKey</td><td>a byte buffer with the other party's ephemeral public key in this domain </td></tr>
    <tr><td class="paramname">validateStaticOtherPublicKey</td><td>a flag indicating if the other party's public key should be validated </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true upon success, false in case of failure</dd></dl>
<p><a class="el" href="class_authenticated_key_agreement_domain.html#ac9808fb56eacee0c08a9bbd22fe2c98e" title="Derive agreed value.">Agree()</a> derives an agreed value from your private keys and couterparty's public keys.</p>
<p>The other party's ephemeral public key is validated by default. If you have previously validated the static public key, use <code>validateStaticOtherPublicKey=false</code> to save time. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(agreedValue)</a> == <a class="el" href="class_authenticated_key_agreement_domain.html#a98ff4ab957b445060f06c95636a098ea" title="Provides the size of the agreed value.">AgreedValueLength()</a></code> </dd>
<dd>
<code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(staticPrivateKey)</a> == <a class="el" href="class_authenticated_key_agreement_domain.html#a1ede4e454e74031ec0f0786dc2a14ddf" title="Provides the size of the static private key.">StaticPrivateKeyLength()</a></code> </dd>
<dd>
<code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(ephemeralPrivateKey)</a> == <a class="el" href="class_authenticated_key_agreement_domain.html#a449deae54019f6dfc9677e721a193004" title="Provides the size of ephemeral private key.">EphemeralPrivateKeyLength()</a></code> </dd>
<dd>
<code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(staticOtherPublicKey)</a> == <a class="el" href="class_authenticated_key_agreement_domain.html#aa7a7a1a641b21fb55cfec96cbf029795" title="Provides the size of the static public key.">StaticPublicKeyLength()</a></code> </dd>
<dd>
<code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array.">COUNTOF(ephemeralOtherPublicKey)</a> == <a class="el" href="class_authenticated_key_agreement_domain.html#a3dbef507ea4fd300ad8b2afb4d7afbe9" title="Provides the size of ephemeral public key.">EphemeralPublicKeyLength()</a></code> </dd></dl>

<p>Implemented in <a class="el" href="class_m_q_v___domain.html#a818955f5764130bb4e00f5c061d39be2">MQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION &gt;</a>, <a class="el" href="class_f_h_m_q_v___domain.html#aab2c86f806dcfee228a50b5b15a12037">FHMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, <a class="el" href="class_h_m_q_v___domain.html#ab162ce29c3f9e76a10bf04230a0960ca">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</a>, and <a class="el" href="class_d_h2.html#a792d681ae9a94f4a15f27efefcc172dc">DH2</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><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Nov 27 2019 15:03:54 for Crypto++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</body>
</html>