Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-release > by-pkgid > 0a67b807a02637f2cae68649d519a89d > files > 1012

libcryptopp-devel-7.0.0-1.mga7.armv7hl.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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crypto++: HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt; Class Template 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.14 -->
<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-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_h_m_q_v___domain-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Hashed Menezes-Qu-Vanstone in GF(p)  
 <a href="class_h_m_q_v___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 HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;:</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_h_m_q_v___domain.png" usemap="#HMQV_5FDomain_3C_20GROUP_5FPARAMETERS_2C_20COFACTOR_5FOPTION_2C_20HASH_20_3E_map" alt=""/>
  <map id="HMQV_5FDomain_3C_20GROUP_5FPARAMETERS_2C_20COFACTOR_5FOPTION_2C_20HASH_20_3E_map" name="HMQV_5FDomain_3C_20GROUP_5FPARAMETERS_2C_20COFACTOR_5FOPTION_2C_20HASH_20_3E_map">
<area href="class_authenticated_key_agreement_domain.html" title="Interface for domains of authenticated key agreement protocols. " alt="AuthenticatedKeyAgreementDomain" shape="rect" coords="0,224,435,248"/>
<area href="class_key_agreement_algorithm.html" title="Interface for key agreement algorithms. " alt="KeyAgreementAlgorithm" shape="rect" coords="0,168,435,192"/>
<area href="class_asymmetric_algorithm.html" title="Interface for asymmetric algorithms. " alt="AsymmetricAlgorithm" shape="rect" coords="0,112,435,136"/>
<area href="class_algorithm.html" title="Interface for all crypto algorithms. " alt="Algorithm" shape="rect" coords="0,56,435,80"/>
<area href="class_clonable.html" title="Interface for cloning objects. " alt="Clonable" shape="rect" coords="0,0,435,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a4f6d42f98187dab02ad03eedf3a4aa3e"><td class="memItemLeft" align="right" valign="top"><a id="a4f6d42f98187dab02ad03eedf3a4aa3e"></a>
typedef GROUP_PARAMETERS&#160;</td><td class="memItemRight" valign="bottom"><b>GroupParameters</b></td></tr>
<tr class="separator:a4f6d42f98187dab02ad03eedf3a4aa3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b3f9d5fcb29140c721cf2ba163a3f2e"><td class="memItemLeft" align="right" valign="top"><a id="a1b3f9d5fcb29140c721cf2ba163a3f2e"></a>
typedef GroupParameters::Element&#160;</td><td class="memItemRight" valign="bottom"><b>Element</b></td></tr>
<tr class="separator:a1b3f9d5fcb29140c721cf2ba163a3f2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a74b45fc0bcb42bd4b88a0382ee452b"><td class="memItemLeft" align="right" valign="top"><a id="a1a74b45fc0bcb42bd4b88a0382ee452b"></a>
typedef <a class="el" href="class_h_m_q_v___domain.html">HMQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Domain</b></td></tr>
<tr class="separator:a1a74b45fc0bcb42bd4b88a0382ee452b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:a8f44ef6378bda8971337329f8859fa77"><td class="memItemLeft" align="right" valign="top"><a id="a8f44ef6378bda8971337329f8859fa77"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>HMQV_Domain</b> (bool clientRole=true)</td></tr>
<tr class="separator:a8f44ef6378bda8971337329f8859fa77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5dd16e895257b3e400553f6dd3187cf"><td class="memItemLeft" align="right" valign="top"><a id="ad5dd16e895257b3e400553f6dd3187cf"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>HMQV_Domain</b> (const GroupParameters &amp;params, bool clientRole=true)</td></tr>
<tr class="separator:ad5dd16e895257b3e400553f6dd3187cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78d392cd299f09328554b71de974b52b"><td class="memItemLeft" align="right" valign="top"><a id="a78d392cd299f09328554b71de974b52b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>HMQV_Domain</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &amp;bt, bool clientRole=true)</td></tr>
<tr class="separator:a78d392cd299f09328554b71de974b52b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41e13d6d047362a5f4b0e74b1d46b8ed"><td class="memTemplParams" colspan="2"><a id="a41e13d6d047362a5f4b0e74b1d46b8ed"></a>
template&lt;class T1 &gt; </td></tr>
<tr class="memitem:a41e13d6d047362a5f4b0e74b1d46b8ed"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><b>HMQV_Domain</b> (T1 v1, bool clientRole=true)</td></tr>
<tr class="separator:a41e13d6d047362a5f4b0e74b1d46b8ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1bb02370f2b3acf2538257cdccc46e0"><td class="memTemplParams" colspan="2"><a id="ac1bb02370f2b3acf2538257cdccc46e0"></a>
template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:ac1bb02370f2b3acf2538257cdccc46e0"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><b>HMQV_Domain</b> (T1 v1, T2 v2, bool clientRole=true)</td></tr>
<tr class="separator:ac1bb02370f2b3acf2538257cdccc46e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9caae174839922281fdaf8097da477d2"><td class="memTemplParams" colspan="2"><a id="a9caae174839922281fdaf8097da477d2"></a>
template&lt;class T1 , class T2 , class T3 &gt; </td></tr>
<tr class="memitem:a9caae174839922281fdaf8097da477d2"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><b>HMQV_Domain</b> (T1 v1, T2 v2, T3 v3, bool clientRole=true)</td></tr>
<tr class="separator:a9caae174839922281fdaf8097da477d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af22ccca971c6d09b44d6b26c34789dd5"><td class="memTemplParams" colspan="2"><a id="af22ccca971c6d09b44d6b26c34789dd5"></a>
template&lt;class T1 , class T2 , class T3 , class T4 &gt; </td></tr>
<tr class="memitem:af22ccca971c6d09b44d6b26c34789dd5"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><b>HMQV_Domain</b> (T1 v1, T2 v2, T3 v3, T4 v4, bool clientRole=true)</td></tr>
<tr class="separator:af22ccca971c6d09b44d6b26c34789dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83426aa83d57671083afeef058d366f5"><td class="memItemLeft" align="right" valign="top"><a id="a83426aa83d57671083afeef058d366f5"></a>
const GroupParameters &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetGroupParameters</b> () const</td></tr>
<tr class="separator:a83426aa83d57671083afeef058d366f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c35042de70666ff0739569ec7dfe623"><td class="memItemLeft" align="right" valign="top"><a id="a1c35042de70666ff0739569ec7dfe623"></a>
GroupParameters &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>AccessGroupParameters</b> ()</td></tr>
<tr class="separator:a1c35042de70666ff0739569ec7dfe623"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e17a9bd0f489294987a891902b2a68e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_crypto_parameters.html">CryptoParameters</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#a6e17a9bd0f489294987a891902b2a68e">AccessCryptoParameters</a> ()</td></tr>
<tr class="memdesc:a6e17a9bd0f489294987a891902b2a68e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves a reference to Crypto Parameters.  <a href="#a6e17a9bd0f489294987a891902b2a68e">More...</a><br /></td></tr>
<tr class="separator:a6e17a9bd0f489294987a891902b2a68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab63c64474cafb81de06b04f59c468e1c"><td class="memItemLeft" align="right" valign="top"><a id="ab63c64474cafb81de06b04f59c468e1c"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#ab63c64474cafb81de06b04f59c468e1c">AgreedValueLength</a> () const</td></tr>
<tr class="memdesc:ab63c64474cafb81de06b04f59c468e1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">return length of agreed value produced <br /></td></tr>
<tr class="separator:ab63c64474cafb81de06b04f59c468e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ea3d9207cb1bfbd22d1478afdb4ca2b"><td class="memItemLeft" align="right" valign="top"><a id="a9ea3d9207cb1bfbd22d1478afdb4ca2b"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#a9ea3d9207cb1bfbd22d1478afdb4ca2b">StaticPrivateKeyLength</a> () const</td></tr>
<tr class="memdesc:a9ea3d9207cb1bfbd22d1478afdb4ca2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">return length of static private keys in this domain <br /></td></tr>
<tr class="separator:a9ea3d9207cb1bfbd22d1478afdb4ca2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca01fa98db1675423953049dc7288fc7"><td class="memItemLeft" align="right" valign="top"><a id="aca01fa98db1675423953049dc7288fc7"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#aca01fa98db1675423953049dc7288fc7">StaticPublicKeyLength</a> () const</td></tr>
<tr class="memdesc:aca01fa98db1675423953049dc7288fc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">return length of static public keys in this domain <br /></td></tr>
<tr class="separator:aca01fa98db1675423953049dc7288fc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c283a1124242a10243d9f2fa55e4ebc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#a3c283a1124242a10243d9f2fa55e4ebc">GenerateStaticPrivateKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey) const</td></tr>
<tr class="memdesc:a3c283a1124242a10243d9f2fa55e4ebc"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate static private key  <a href="#a3c283a1124242a10243d9f2fa55e4ebc">More...</a><br /></td></tr>
<tr class="separator:a3c283a1124242a10243d9f2fa55e4ebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac89aea97b86688d190ce29a638e80c5c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#ac89aea97b86688d190ce29a638e80c5c">GenerateStaticPublicKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const byte *privateKey, byte *publicKey) const</td></tr>
<tr class="memdesc:ac89aea97b86688d190ce29a638e80c5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">generate static public key  <a href="#ac89aea97b86688d190ce29a638e80c5c">More...</a><br /></td></tr>
<tr class="separator:ac89aea97b86688d190ce29a638e80c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac288ec5ed6e6f793fdc44af246358727"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#ac288ec5ed6e6f793fdc44af246358727">EphemeralPrivateKeyLength</a> () const</td></tr>
<tr class="memdesc:ac288ec5ed6e6f793fdc44af246358727"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the size of ephemeral private key.  <a href="#ac288ec5ed6e6f793fdc44af246358727">More...</a><br /></td></tr>
<tr class="separator:ac288ec5ed6e6f793fdc44af246358727"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad26c33a539bdc3b31718f6cfe26bf9ea"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#ad26c33a539bdc3b31718f6cfe26bf9ea">EphemeralPublicKeyLength</a> () const</td></tr>
<tr class="memdesc:ad26c33a539bdc3b31718f6cfe26bf9ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the size of ephemeral public key.  <a href="#ad26c33a539bdc3b31718f6cfe26bf9ea">More...</a><br /></td></tr>
<tr class="separator:ad26c33a539bdc3b31718f6cfe26bf9ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37b468af095df8fd85ee7dad8ff07b09"><td class="memItemLeft" align="right" valign="top"><a id="a37b468af095df8fd85ee7dad8ff07b09"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#a37b468af095df8fd85ee7dad8ff07b09">GenerateEphemeralPrivateKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *privateKey) const</td></tr>
<tr class="memdesc:a37b468af095df8fd85ee7dad8ff07b09"><td class="mdescLeft">&#160;</td><td class="mdescRight">return length of ephemeral private keys in this domain <br /></td></tr>
<tr class="separator:a37b468af095df8fd85ee7dad8ff07b09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a555c19cf2475e0afc4a911f16d65375c"><td class="memItemLeft" align="right" valign="top"><a id="a555c19cf2475e0afc4a911f16d65375c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#a555c19cf2475e0afc4a911f16d65375c">GenerateEphemeralPublicKey</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, const byte *privateKey, byte *publicKey) const</td></tr>
<tr class="memdesc:a555c19cf2475e0afc4a911f16d65375c"><td class="mdescLeft">&#160;</td><td class="mdescRight">return length of ephemeral public keys in this domain <br /></td></tr>
<tr class="separator:a555c19cf2475e0afc4a911f16d65375c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab162ce29c3f9e76a10bf04230a0960ca"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_q_v___domain.html#ab162ce29c3f9e76a10bf04230a0960ca">Agree</a> (byte *agreedValue, const byte *staticPrivateKey, const byte *ephemeralPrivateKey, const byte *staticOtherPublicKey, const byte *ephemeralOtherPublicKey, bool validateStaticOtherPublicKey=true) const</td></tr>
<tr class="memdesc:ab162ce29c3f9e76a10bf04230a0960ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">derive agreed value from your private keys and couterparty's public keys, return false in case of failure  <a href="#ab162ce29c3f9e76a10bf04230a0960ca">More...</a><br /></td></tr>
<tr class="separator:ab162ce29c3f9e76a10bf04230a0960ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_authenticated_key_agreement_domain"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_authenticated_key_agreement_domain')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_authenticated_key_agreement_domain.html">AuthenticatedKeyAgreementDomain</a></td></tr>
<tr class="memitem:aec9aa2db0d67020eb381ba0a18b30aed inherit pub_methods_class_authenticated_key_agreement_domain"><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 inherit pub_methods_class_authenticated_key_agreement_domain"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a static private/public key pair.  <a href="class_authenticated_key_agreement_domain.html#aec9aa2db0d67020eb381ba0a18b30aed">More...</a><br /></td></tr>
<tr class="separator:aec9aa2db0d67020eb381ba0a18b30aed inherit pub_methods_class_authenticated_key_agreement_domain"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade1b25546d6f8d2572a9a810164360da inherit pub_methods_class_authenticated_key_agreement_domain"><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 inherit pub_methods_class_authenticated_key_agreement_domain"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate private/public key pair.  <a href="class_authenticated_key_agreement_domain.html#ade1b25546d6f8d2572a9a810164360da">More...</a><br /></td></tr>
<tr class="separator:ade1b25546d6f8d2572a9a810164360da inherit pub_methods_class_authenticated_key_agreement_domain"><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: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"><h3>template&lt;class GROUP_PARAMETERS, class COFACTOR_OPTION = typename GROUP_PARAMETERS::DefaultCofactorOption, class HASH = SHA512&gt;<br />
class HMQV_Domain&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;</h3>

<p>Hashed Menezes-Qu-Vanstone in GF(p) </p>
<p>This implementation follows Hugo Krawczyk's <a href="http://eprint.iacr.org/2005/176">HMQV: A High-Performance Secure Diffie-Hellman Protocol</a>. Note: this implements HMQV only. HMQV-C with Key Confirmation is not provided. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="mqv_8h.html#a55efec2ab777263bc0d165afa0c3fe3b" title="Menezes-Qu-Vanstone in GF(p) with key validation, AKA MQV ">MQV</a>, <a class="el" href="hmqv_8h.html#a7e819fbd915da58cb3391be3a0c96bf7" title="Hashed Menezes-Qu-Vanstone in GF(p) ">HMQV</a>, <a class="el" href="fhmqv_8h.html#a7cdbb4ab473eb13fab56921103f833df" title="Fully Hashed Menezes-Qu-Vanstone in GF(p) ">FHMQV</a>, and <a class="el" href="class_authenticated_key_agreement_domain.html" title="Interface for domains of authenticated key agreement protocols. ">AuthenticatedKeyAgreementDomain</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 5.6.4 </dd></dl>

<p class="definition">Definition at line <a class="el" href="hmqv_8h_source.html#l00023">23</a> of file <a class="el" href="hmqv_8h_source.html">hmqv.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a6e17a9bd0f489294987a891902b2a68e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e17a9bd0f489294987a891902b2a68e">&#9670;&nbsp;</a></span>AccessCryptoParameters()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption, class HASH  = SHA512&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_crypto_parameters.html">CryptoParameters</a>&amp; <a class="el" href="class_h_m_q_v___domain.html">HMQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;::AccessCryptoParameters </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Retrieves a reference to Crypto Parameters. </p>
<dl class="section return"><dt>Returns</dt><dd>a reference the crypto parameters </dd></dl>

<p>Implements <a class="el" href="class_key_agreement_algorithm.html#abbe709ef84c668901d9e6cf09167d9c9">KeyAgreementAlgorithm</a>.</p>

<p class="definition">Definition at line <a class="el" href="hmqv_8h_source.html#l00066">66</a> of file <a class="el" href="hmqv_8h_source.html">hmqv.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption, class HASH  = SHA512&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_h_m_q_v___domain.html">HMQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;::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">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>generate static private key </p>
<dl class="section pre"><dt>Precondition</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 class="definition">Definition at line <a class="el" href="hmqv_8h_source.html#l00077">77</a> of file <a class="el" href="hmqv_8h_source.html">hmqv.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption, class HASH  = SHA512&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_h_m_q_v___domain.html">HMQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;::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">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>generate static public key </p>
<dl class="section pre"><dt>Precondition</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 class="definition">Definition at line <a class="el" href="hmqv_8h_source.html#l00085">85</a> of file <a class="el" href="hmqv_8h_source.html">hmqv.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption, class HASH  = SHA512&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="class_h_m_q_v___domain.html">HMQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;::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">inline</span><span class="mlabel">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>Implements <a class="el" href="class_authenticated_key_agreement_domain.html#a449deae54019f6dfc9677e721a193004">AuthenticatedKeyAgreementDomain</a>.</p>

<p class="definition">Definition at line <a class="el" href="hmqv_8h_source.html#l00094">94</a> of file <a class="el" href="hmqv_8h_source.html">hmqv.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption, class HASH  = SHA512&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="class_h_m_q_v___domain.html">HMQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;::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">inline</span><span class="mlabel">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>Implements <a class="el" href="class_authenticated_key_agreement_domain.html#a3dbef507ea4fd300ad8b2afb4d7afbe9">AuthenticatedKeyAgreementDomain</a>.</p>

<p class="definition">Definition at line <a class="el" href="hmqv_8h_source.html#l00095">95</a> of file <a class="el" href="hmqv_8h_source.html">hmqv.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class GROUP_PARAMETERS , class COFACTOR_OPTION  = typename GROUP_PARAMETERS::DefaultCofactorOption, class HASH  = SHA512&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="class_h_m_q_v___domain.html">HMQV_Domain</a>&lt; GROUP_PARAMETERS, COFACTOR_OPTION, HASH &gt;::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">inline</span><span class="mlabel">virtual</span></span>  </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="section note"><dt>Note</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="section pre"><dt>Precondition</dt><dd>size of agreedValue == <a class="el" href="class_h_m_q_v___domain.html#ab63c64474cafb81de06b04f59c468e1c" title="return length of agreed value produced ">AgreedValueLength()</a> </dd>
<dd>
length of staticPrivateKey == <a class="el" href="class_h_m_q_v___domain.html#a9ea3d9207cb1bfbd22d1478afdb4ca2b" title="return length of static private keys in this domain ">StaticPrivateKeyLength()</a> </dd>
<dd>
length of ephemeralPrivateKey == <a class="el" href="class_h_m_q_v___domain.html#ac288ec5ed6e6f793fdc44af246358727" title="Provides the size of ephemeral private key. ">EphemeralPrivateKeyLength()</a> </dd>
<dd>
length of staticOtherPublicKey == <a class="el" href="class_h_m_q_v___domain.html#aca01fa98db1675423953049dc7288fc7" title="return length of static public keys in this domain ">StaticPublicKeyLength()</a> </dd>
<dd>
length of ephemeralOtherPublicKey == <a class="el" href="class_h_m_q_v___domain.html#ad26c33a539bdc3b31718f6cfe26bf9ea" title="Provides the size of ephemeral public key. ">EphemeralPublicKeyLength()</a> </dd></dl>

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

<p class="definition">Definition at line <a class="el" href="hmqv_8h_source.html#l00123">123</a> of file <a class="el" href="hmqv_8h_source.html">hmqv.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="hmqv_8h_source.html">hmqv.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 16 2018 07:58:38 for Crypto++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>