classsecurity__ecc.html 73.5 KB
Newer Older
garciay's avatar
garciay committed
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ETSI STF525 / Internal Testing test suite: security_ecc 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.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">ETSI STF525 / Internal Testing test suite
   </div>
   <div id="projectbrief">This project provides an internal testing test suite and its associated Test Adapter/Codec</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classsecurity__ecc-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">security_ecc Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This class implements the generation of a key pair private/public.  
 <a href="classsecurity__ecc.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="security__ecc_8hh_source.html">security_ecc.hh</a>&gt;</code></p>
<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:ac5e311b8c0f0ad8f9d4b46b81182ce34"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#ac5e311b8c0f0ad8f9d4b46b81182ce34">security_ecc</a> (const <a class="el" href="security__ecc_8hh.html#a8011d93a764c8dfafc727b8114014911">ec_elliptic_curves</a> p_elliptic_curve)</td></tr>
<tr class="memdesc:ac5e311b8c0f0ad8f9d4b46b81182ce34"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor.  <a href="#ac5e311b8c0f0ad8f9d4b46b81182ce34">More...</a><br /></td></tr>
<tr class="separator:ac5e311b8c0f0ad8f9d4b46b81182ce34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0737fbeee4f6c194c9c35ae73aae01f6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a0737fbeee4f6c194c9c35ae73aae01f6">security_ecc</a> (const <a class="el" href="security__ecc_8hh.html#a8011d93a764c8dfafc727b8114014911">ec_elliptic_curves</a> p_elliptic_curve, const std::vector&lt; unsigned char &gt; &amp;p_private_key)</td></tr>
<tr class="memdesc:a0737fbeee4f6c194c9c35ae73aae01f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor based on the private key only.  <a href="#a0737fbeee4f6c194c9c35ae73aae01f6">More...</a><br /></td></tr>
<tr class="separator:a0737fbeee4f6c194c9c35ae73aae01f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c94addc84994a80dd45bdba98c7e492"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a7c94addc84994a80dd45bdba98c7e492">security_ecc</a> (const <a class="el" href="security__ecc_8hh.html#a8011d93a764c8dfafc727b8114014911">ec_elliptic_curves</a> p_elliptic_curve, const std::vector&lt; unsigned char &gt; &amp;p_public_key_x, const std::vector&lt; unsigned char &gt; &amp;p_public_key_y)</td></tr>
<tr class="memdesc:a7c94addc84994a80dd45bdba98c7e492"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor based on the public keys only.  <a href="#a7c94addc84994a80dd45bdba98c7e492">More...</a><br /></td></tr>
<tr class="separator:a7c94addc84994a80dd45bdba98c7e492"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33b2fde2cd6d089f87b15cdb023a644c"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a33b2fde2cd6d089f87b15cdb023a644c">~security_ecc</a> ()</td></tr>
<tr class="memdesc:a33b2fde2cd6d089f87b15cdb023a644c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#a33b2fde2cd6d089f87b15cdb023a644c">More...</a><br /></td></tr>
<tr class="separator:a33b2fde2cd6d089f87b15cdb023a644c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f0661384c1dbdec010fecbc5f887431"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a6f0661384c1dbdec010fecbc5f887431">generate</a> ()</td></tr>
<tr class="memdesc:a6f0661384c1dbdec010fecbc5f887431"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a pair (PrivateK, PublicK) of keys for signature or encryption.  <a href="#a6f0661384c1dbdec010fecbc5f887431">More...</a><br /></td></tr>
<tr class="separator:a6f0661384c1dbdec010fecbc5f887431"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c3b1f5592b12d3993160360e84aafc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a60c3b1f5592b12d3993160360e84aafc">sign</a> (const std::vector&lt; unsigned char &gt; &amp;p_data, std::vector&lt; unsigned char &gt; &amp;p_r_sig, std::vector&lt; unsigned char &gt; &amp;p_s_sig)</td></tr>
<tr class="memdesc:a60c3b1f5592b12d3993160360e84aafc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signed the data using ECDSA algorithm.  <a href="#a60c3b1f5592b12d3993160360e84aafc">More...</a><br /></td></tr>
<tr class="separator:a60c3b1f5592b12d3993160360e84aafc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ed90b6a2d0c4e8822692422d8a89d4d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a6ed90b6a2d0c4e8822692422d8a89d4d">sign_verif</a> (const std::vector&lt; unsigned char &gt; &amp;p_data, const std::vector&lt; unsigned char &gt; &amp;p_signature)</td></tr>
<tr class="memdesc:a6ed90b6a2d0c4e8822692422d8a89d4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifiy an ECDSA signature.  <a href="#a6ed90b6a2d0c4e8822692422d8a89d4d">More...</a><br /></td></tr>
<tr class="separator:a6ed90b6a2d0c4e8822692422d8a89d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a034aa4f86fc04d101b003a16ba2cf151"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a034aa4f86fc04d101b003a16ba2cf151">generate_and_derive_ephemeral_key</a> (const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a> p_enc_algorithm, const std::vector&lt; unsigned char &gt; &amp;p_recipients_public_key_x, const std::vector&lt; unsigned char &gt; &amp;p_recipients_public_key_y)</td></tr>
<tr class="memdesc:a034aa4f86fc04d101b003a16ba2cf151"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a shared secret key and derive it using KDF2 algorithm. This method shall be used by the sender. Fresh keys will be genrated for each cyphering operation.  <a href="#a034aa4f86fc04d101b003a16ba2cf151">More...</a><br /></td></tr>
<tr class="separator:a034aa4f86fc04d101b003a16ba2cf151"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a2335ed379588d06c9290838d80a317"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a5a2335ed379588d06c9290838d80a317">generate_and_derive_ephemeral_key</a> (const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a> p_enc_algorithm, const std::vector&lt; unsigned char &gt; &amp;p_private_enc_key, const std::vector&lt; unsigned char &gt; &amp;p_ephemeral_public_key_x, const std::vector&lt; unsigned char &gt; &amp;p_ephemeral_public_key_y, const std::vector&lt; unsigned char &gt; &amp;p_enc_sym_key, const std::vector&lt; unsigned char &gt; &amp;p_expected_nonce, const std::vector&lt; unsigned char &gt; &amp;p_authentication_vector)</td></tr>
<tr class="separator:a5a2335ed379588d06c9290838d80a317"><td class="memSeparator" colspan="2">&#160;</td></tr>
garciay's avatar
garciay committed
<tr class="memitem:aeefe3b4e8e32d50ce66d97887492fefc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#aeefe3b4e8e32d50ce66d97887492fefc">encrypt</a> (const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a> p_enc_algorithm, const std::vector&lt; unsigned char &gt; &amp;p_message, std::vector&lt; unsigned char &gt; &amp;p_enc_message)</td></tr>
<tr class="memdesc:aeefe3b4e8e32d50ce66d97887492fefc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encryption using the specified algorithm, the encryption parameters are generated automatically.  <a href="#aeefe3b4e8e32d50ce66d97887492fefc">More...</a><br /></td></tr>
garciay's avatar
garciay committed
<tr class="separator:aeefe3b4e8e32d50ce66d97887492fefc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b472e3ebb41460b69a7826000d91174"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a1b472e3ebb41460b69a7826000d91174">encrypt</a> (const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a> p_enc_algorithm, const std::vector&lt; unsigned char &gt; &amp;p_symmetric_key, const std::vector&lt; unsigned char &gt; &amp;p_nonce, const std::vector&lt; unsigned char &gt; &amp;p_message, std::vector&lt; unsigned char &gt; &amp;p_enc_message)</td></tr>
<tr class="memdesc:a1b472e3ebb41460b69a7826000d91174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encryption using the specified algorithm. The encryption parameters are provided by the caller (e.g. ECIES encryption).  <a href="#a1b472e3ebb41460b69a7826000d91174">More...</a><br /></td></tr>
garciay's avatar
garciay committed
<tr class="separator:a1b472e3ebb41460b69a7826000d91174"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae625cd653a434170fa3ac9267062496"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#aae625cd653a434170fa3ac9267062496">decrypt</a> (const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a> p_enc_algorithm, const std::vector&lt; unsigned char &gt; &amp;p_symmetric_key, const std::vector&lt; unsigned char &gt; &amp;p_nonce, const std::vector&lt; unsigned char &gt; &amp;p_tag, const std::vector&lt; unsigned char &gt; &amp;p_enc_message, std::vector&lt; unsigned char &gt; &amp;p_message)</td></tr>
<tr class="memdesc:aae625cd653a434170fa3ac9267062496"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decryption using the specified parameters.  <a href="#aae625cd653a434170fa3ac9267062496">More...</a><br /></td></tr>
<tr class="separator:aae625cd653a434170fa3ac9267062496"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca0688b9449fa731048f6c72d544af9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a4ca0688b9449fa731048f6c72d544af9">decrypt</a> (const std::vector&lt; unsigned char &gt; &amp;p_tag, const std::vector&lt; unsigned char &gt; &amp;p_enc_message, std::vector&lt; unsigned char &gt; &amp;p_message)</td></tr>
<tr class="separator:a4ca0688b9449fa731048f6c72d544af9"><td class="memSeparator" colspan="2">&#160;</td></tr>
garciay's avatar
garciay committed
<tr class="memitem:a1b71f812aa4770ae8aa0bde5edb5bcae"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a1b71f812aa4770ae8aa0bde5edb5bcae">private_key</a> () const</td></tr>
<tr class="separator:a1b71f812aa4770ae8aa0bde5edb5bcae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77babdd3c3b6e39002248171a52ced01"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a77babdd3c3b6e39002248171a52ced01">public_key_x</a> () const</td></tr>
<tr class="separator:a77babdd3c3b6e39002248171a52ced01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8353a14cd2612b11f60bb15f3af0ad21"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a8353a14cd2612b11f60bb15f3af0ad21">public_key_y</a> () const</td></tr>
<tr class="separator:a8353a14cd2612b11f60bb15f3af0ad21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2656bd8881f6c652772b94d311a3db4"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#af2656bd8881f6c652772b94d311a3db4">secret_key</a> () const</td></tr>
<tr class="separator:af2656bd8881f6c652772b94d311a3db4"><td class="memSeparator" colspan="2">&#160;</td></tr>
garciay's avatar
garciay committed
<tr class="memitem:ac715d036e7d23456ecc02f8967857fc2"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#ac715d036e7d23456ecc02f8967857fc2">encryption_key_x</a> () const</td></tr>
<tr class="separator:ac715d036e7d23456ecc02f8967857fc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a057d1a9a4ba45099651d8f05c25bbe"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a5a057d1a9a4ba45099651d8f05c25bbe">encryption_key_y</a> () const</td></tr>
<tr class="separator:a5a057d1a9a4ba45099651d8f05c25bbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4675c257d58453a0366a1eff82beff2"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#aa4675c257d58453a0366a1eff82beff2">encrypted_symmetric_key</a> () const</td></tr>
<tr class="separator:aa4675c257d58453a0366a1eff82beff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
garciay's avatar
garciay committed
<tr class="memitem:a04cf05a5ae24c2cd19ffff450f4ec98e"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a04cf05a5ae24c2cd19ffff450f4ec98e">symmetric_encryption_key</a> () const</td></tr>
<tr class="separator:a04cf05a5ae24c2cd19ffff450f4ec98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08267249c9d2a940b3c333a6362e8468"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a08267249c9d2a940b3c333a6362e8468">nonce</a> () const</td></tr>
<tr class="separator:a08267249c9d2a940b3c333a6362e8468"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b3f044a3c5da61fa85faafe9d211c7f"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; unsigned char &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a2b3f044a3c5da61fa85faafe9d211c7f">tag</a> () const</td></tr>
<tr class="separator:a2b3f044a3c5da61fa85faafe9d211c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a4f3f4feb1840f3df955e980aaddce094"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a4f3f4feb1840f3df955e980aaddce094">init</a> ()</td></tr>
<tr class="memdesc:a4f3f4feb1840f3df955e980aaddce094"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by the constructors to set up encryption environment.  <a href="#a4f3f4feb1840f3df955e980aaddce094">More...</a><br /></td></tr>
<tr class="separator:a4f3f4feb1840f3df955e980aaddce094"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaaa200190e458d72d8124c1a85a8b1ae"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#aaaa200190e458d72d8124c1a85a8b1ae">bin_to_ec_point</a> (const std::vector&lt; unsigned char &gt; &amp;p_public_key_x, const std::vector&lt; unsigned char &gt; &amp;p_public_key_y, EC_POINT **p_ec_point)</td></tr>
<tr class="memdesc:aaaa200190e458d72d8124c1a85a8b1ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a big number object into a public key.  <a href="#aaaa200190e458d72d8124c1a85a8b1ae">More...</a><br /></td></tr>
<tr class="separator:aaaa200190e458d72d8124c1a85a8b1ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3313f906282c9ee1339ba791dda92384"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a3313f906282c9ee1339ba791dda92384">public_key_to_bin</a> (std::vector&lt; unsigned char &gt; &amp;p_bin_key)</td></tr>
<tr class="memdesc:a3313f906282c9ee1339ba791dda92384"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a public key into a big number object.  <a href="#a3313f906282c9ee1339ba791dda92384">More...</a><br /></td></tr>
<tr class="separator:a3313f906282c9ee1339ba791dda92384"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ad555c9958969c556973bca735f1b72e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="security__ecc_8hh.html#a8011d93a764c8dfafc727b8114014911">ec_elliptic_curves</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#ad555c9958969c556973bca735f1b72e4">_elliptic_curve</a></td></tr>
<tr class="separator:ad555c9958969c556973bca735f1b72e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bb684502ba00630563fb8fe7c748b80"><td class="memItemLeft" align="right" valign="top"><a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a6bb684502ba00630563fb8fe7c748b80">_encryption_algotithm</a></td></tr>
<tr class="separator:a6bb684502ba00630563fb8fe7c748b80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d22c189776dba9b7e49920b058d1ceb"><td class="memItemLeft" align="right" valign="top">EC_KEY *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a1d22c189776dba9b7e49920b058d1ceb">_ec_key</a></td></tr>
<tr class="separator:a1d22c189776dba9b7e49920b058d1ceb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a0bce2ec01fcd09e7a6ebcea2566294"><td class="memItemLeft" align="right" valign="top">const EC_GROUP *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a9a0bce2ec01fcd09e7a6ebcea2566294">_ec_group</a></td></tr>
<tr class="separator:a9a0bce2ec01fcd09e7a6ebcea2566294"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2688b4c8efa4bb027b510fe75cba984"><td class="memItemLeft" align="right" valign="top">BN_CTX *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#aa2688b4c8efa4bb027b510fe75cba984">_bn_ctx</a></td></tr>
<tr class="separator:aa2688b4c8efa4bb027b510fe75cba984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d3d3117435cb7d015ed041c151217bd"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a5d3d3117435cb7d015ed041c151217bd">_pri_key</a></td></tr>
<tr class="separator:a5d3d3117435cb7d015ed041c151217bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a434077033f465959edabf359659478d0"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a434077033f465959edabf359659478d0">_pub_key_x</a></td></tr>
<tr class="separator:a434077033f465959edabf359659478d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64ec88c1fd069849fa09de115dd20fb5"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a64ec88c1fd069849fa09de115dd20fb5">_pub_key_y</a></td></tr>
<tr class="separator:a64ec88c1fd069849fa09de115dd20fb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a869bde1b4ebc3fecd32cb26590cd2972"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a869bde1b4ebc3fecd32cb26590cd2972">_secret_key</a></td></tr>
<tr class="separator:a869bde1b4ebc3fecd32cb26590cd2972"><td class="memSeparator" colspan="2">&#160;</td></tr>
garciay's avatar
garciay committed
<tr class="memitem:a84919cc8278cef32aabb6deab3588478"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a84919cc8278cef32aabb6deab3588478">_enc_key_x</a></td></tr>
<tr class="separator:a84919cc8278cef32aabb6deab3588478"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b874353ffaf19e0bafd73d674e0f096"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a6b874353ffaf19e0bafd73d674e0f096">_enc_key_y</a></td></tr>
<tr class="separator:a6b874353ffaf19e0bafd73d674e0f096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abebc61002e46dd319092079e81fbe3f8"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#abebc61002e46dd319092079e81fbe3f8">_sym_key</a></td></tr>
<tr class="separator:abebc61002e46dd319092079e81fbe3f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68d1b6a265598ed5b26b40f99a482cef"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a68d1b6a265598ed5b26b40f99a482cef">_enc_sym_key</a></td></tr>
<tr class="separator:a68d1b6a265598ed5b26b40f99a482cef"><td class="memSeparator" colspan="2">&#160;</td></tr>
garciay's avatar
garciay committed
<tr class="memitem:a32c42bcf2ec0cb2ac4f6320cfe97d384"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a32c42bcf2ec0cb2ac4f6320cfe97d384">_nonce</a></td></tr>
<tr class="separator:a32c42bcf2ec0cb2ac4f6320cfe97d384"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d72d07fc30fe12381b4457605f56be0"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned char &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsecurity__ecc.html#a6d72d07fc30fe12381b4457605f56be0">_tag</a></td></tr>
<tr class="separator:a6d72d07fc30fe12381b4457605f56be0"><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>This class implements the generation of a key pair private/public. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ac5e311b8c0f0ad8f9d4b46b81182ce34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5e311b8c0f0ad8f9d4b46b81182ce34">&#9670;&nbsp;</a></span>security_ecc() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">security_ecc::security_ecc </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a8011d93a764c8dfafc727b8114014911">ec_elliptic_curves</a>&#160;</td>
          <td class="paramname"><em>p_elliptic_curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Default constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_elliptic_curve</td><td>The ECDSA curve family to be used </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>Call the method <a class="el" href="classsecurity__ecc.html#a6f0661384c1dbdec010fecbc5f887431" title="Generate a pair (PrivateK, PublicK) of keys for signature or encryption. ">security_ecc::generate()</a> to initialise the private/public key pair </dd></dl>

</div>
</div>
<a id="a0737fbeee4f6c194c9c35ae73aae01f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0737fbeee4f6c194c9c35ae73aae01f6">&#9670;&nbsp;</a></span>security_ecc() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">security_ecc::security_ecc </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a8011d93a764c8dfafc727b8114014911">ec_elliptic_curves</a>&#160;</td>
          <td class="paramname"><em>p_elliptic_curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_private_key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor based on the private key only. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_elliptic_curve</td><td>The ECDSA curve family to be used </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_private_key</td><td>The private key </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>Some public key are created based on the provided private keys </dd></dl>

</div>
</div>
<a id="a7c94addc84994a80dd45bdba98c7e492"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c94addc84994a80dd45bdba98c7e492">&#9670;&nbsp;</a></span>security_ecc() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">security_ecc::security_ecc </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a8011d93a764c8dfafc727b8114014911">ec_elliptic_curves</a>&#160;</td>
          <td class="paramname"><em>p_elliptic_curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_public_key_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_public_key_y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor based on the public keys only. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_elliptic_curve</td><td>The ECDSA curve family to be used </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>The call to the method <a class="el" href="classsecurity__ecc.html#a60c3b1f5592b12d3993160360e84aafc" title="Signed the data using ECDSA algorithm. ">security_ecc::sign()</a> will failed </dd>
<dd>
The call to the method <a class="el" href="classsecurity__ecc.html#a6f0661384c1dbdec010fecbc5f887431" title="Generate a pair (PrivateK, PublicK) of keys for signature or encryption. ">security_ecc::generate()</a> will overwrite the provided public keys </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">security_ecc::~security_ecc </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></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>Destructor. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aaaa200190e458d72d8124c1a85a8b1ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaaa200190e458d72d8124c1a85a8b1ae">&#9670;&nbsp;</a></span>bin_to_ec_point()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::bin_to_ec_point </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_public_key_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_public_key_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">EC_POINT **&#160;</td>
          <td class="paramname"><em>p_ec_point</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Convert a big number object into a public key. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>

</div>
</div>
<a id="aae625cd653a434170fa3ac9267062496"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae625cd653a434170fa3ac9267062496">&#9670;&nbsp;</a></span>decrypt() <span class="overload">[1/2]</span></h2>
garciay's avatar
garciay committed

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::decrypt </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a>&#160;</td>
          <td class="paramname"><em>p_enc_algorithm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_nonce</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_enc_message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_message</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Decryption using the specified parameters. </p>
<p>Decryption using default parameters.</p>
garciay's avatar
garciay committed
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_enc_algorithm</td><td>The algorithm to use for the decryption </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_nonce</td><td>The algorithm to use for the encryption </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_tag</td><td>The algorithm to use for the encryption </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_enc_message</td><td>The message to be decrypted </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">p_message</td><td>The decrypted message </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated symmetric encryption key, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a04cf05a5ae24c2cd19ffff450f4ec98e">symmetric_encryption_key</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated nonce vector, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a08267249c9d2a940b3c333a6362e8468">nonce</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated tag, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a2b3f044a3c5da61fa85faafe9d211c7f">tag</a> method </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_tag</td><td>The algorithm to use for the encryption </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_enc_message</td><td>The message to be decrypted </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">p_message</td><td>The decrypted message </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated symmetric encryption key, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a04cf05a5ae24c2cd19ffff450f4ec98e">symmetric_encryption_key</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated nonce vector, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a08267249c9d2a940b3c333a6362e8468">nonce</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated tag, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a2b3f044a3c5da61fa85faafe9d211c7f">tag</a> method </dd></dl>
garciay's avatar
garciay committed
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>

</div>
</div>
<a id="a4ca0688b9449fa731048f6c72d544af9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ca0688b9449fa731048f6c72d544af9">&#9670;&nbsp;</a></span>decrypt() <span class="overload">[2/2]</span></h2>
garciay's avatar
garciay committed

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::decrypt </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_tag</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_enc_message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_message</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aeefe3b4e8e32d50ce66d97887492fefc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeefe3b4e8e32d50ce66d97887492fefc">&#9670;&nbsp;</a></span>encrypt() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::encrypt </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a>&#160;</td>
          <td class="paramname"><em>p_enc_algorithm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_enc_message</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Encryption using the specified algorithm, the encryption parameters are generated automatically. </p>
garciay's avatar
garciay committed
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_enc_algorithm</td><td>The algorithm to use for the encryption </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_message</td><td>The message to be encrypted </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">p_enc_message</td><td>The encrypted message </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated symmetric encryption key, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a04cf05a5ae24c2cd19ffff450f4ec98e">symmetric_encryption_key</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated nonce vector, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a08267249c9d2a940b3c333a6362e8468">nonce</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated tag, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a2b3f044a3c5da61fa85faafe9d211c7f">tag</a> method </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>

</div>
</div>
<a id="a1b472e3ebb41460b69a7826000d91174"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b472e3ebb41460b69a7826000d91174">&#9670;&nbsp;</a></span>encrypt() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::encrypt </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a>&#160;</td>
          <td class="paramname"><em>p_enc_algorithm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_symmetric_key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_nonce</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_message</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_enc_message</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Encryption using the specified algorithm. The encryption parameters are provided by the caller (e.g. ECIES encryption). </p>
garciay's avatar
garciay committed
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_enc_algorithm</td><td>The algorithm to use for the encryption </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_symmetric_key</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_nonce</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_message</td><td>The message to be encrypted </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">p_enc_message</td><td>The encrypted message </td></tr>
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated symmetric encryption key, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a04cf05a5ae24c2cd19ffff450f4ec98e">symmetric_encryption_key</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated nonce vector, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a08267249c9d2a940b3c333a6362e8468">nonce</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated tag, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a2b3f044a3c5da61fa85faafe9d211c7f">tag</a> method </dd></dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>

</div>
</div>
<a id="aa4675c257d58453a0366a1eff82beff2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4675c257d58453a0366a1eff82beff2">&#9670;&nbsp;</a></span>encrypted_symmetric_key()</h2>
garciay's avatar
garciay committed

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::encrypted_symmetric_key </td>
garciay's avatar
garciay committed
          <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>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ac715d036e7d23456ecc02f8967857fc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac715d036e7d23456ecc02f8967857fc2">&#9670;&nbsp;</a></span>encryption_key_x()</h2>
garciay's avatar
garciay committed

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::encryption_key_x </td>
garciay's avatar
garciay committed
          <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>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a5a057d1a9a4ba45099651d8f05c25bbe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a057d1a9a4ba45099651d8f05c25bbe">&#9670;&nbsp;</a></span>encryption_key_y()</h2>
garciay's avatar
garciay committed

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::encryption_key_y </td>
garciay's avatar
garciay committed
          <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>  </td>
  </tr>
</table>
</div><div class="memdoc">

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::generate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Generate a pair (PrivateK, PublicK) of keys for signature or encryption. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated keys, </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a1b71f812aa4770ae8aa0bde5edb5bcae">private_key</a>, <a class="el" href="classsecurity__ecc.html#a77babdd3c3b6e39002248171a52ced01">public_key_x</a> and <a class="el" href="classsecurity__ecc.html#a8353a14cd2612b11f60bb15f3af0ad21">public_key_y</a> methods </dd></dl>

</div>
</div>
<a id="a034aa4f86fc04d101b003a16ba2cf151"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a034aa4f86fc04d101b003a16ba2cf151">&#9670;&nbsp;</a></span>generate_and_derive_ephemeral_key() <span class="overload">[1/2]</span></h2>
garciay's avatar
garciay committed

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::generate_and_derive_ephemeral_key </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a>&#160;</td>
          <td class="paramname"><em>p_enc_algorithm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
garciay's avatar
garciay committed
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_recipients_public_key_x</em>, </td>
garciay's avatar
garciay committed
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_recipients_public_key_y</em>&#160;</td>
garciay's avatar
garciay committed
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Generate a shared secret key and derive it using KDF2 algorithm. This method shall be used by the sender. Fresh keys will be genrated for each cyphering operation. </p>
garciay's avatar
garciay committed
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">p_enc_algorithm</td><td>The encryption algorithm to be used </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_recipients_public_key_x</td><td>The recipient public key X-coordinate </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">p_recipients_public_key_x</td><td>The recipient public key Y-coordinate </td></tr>
garciay's avatar
garciay committed
  </table>
  </dd>
</dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the secret key, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#af2656bd8881f6c652772b94d311a3db4">secret_key</a> method </dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated symmetric encryption key, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a04cf05a5ae24c2cd19ffff450f4ec98e">symmetric_encryption_key</a> method </dd></dl>
garciay's avatar
garciay committed
<dl class="section remark"><dt>Remarks</dt><dd>To get the generated nonce vector, uses </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classsecurity__ecc.html#a08267249c9d2a940b3c333a6362e8468">nonce</a> method </dd>
<dd>
<a class="el" href="classsecurity__ecc.html#aeefe3b4e8e32d50ce66d97887492fefc" title="Encryption using the specified algorithm, the encryption parameters are generated automatically...">encrypt</a> methog to <a class="el" href="classsecurity__ecc.html#aeefe3b4e8e32d50ce66d97887492fefc" title="Encryption using the specified algorithm, the encryption parameters are generated automatically...">encrypt</a> a message based of the generated symetric encryption key </dd></dl>
garciay's avatar
garciay committed
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>

</div>
</div>
<a id="a5a2335ed379588d06c9290838d80a317"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a2335ed379588d06c9290838d80a317">&#9670;&nbsp;</a></span>generate_and_derive_ephemeral_key() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::generate_and_derive_ephemeral_key </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="security__ecc_8hh.html#a975fbf4c28b244698a563d3efa412528">encryption_algotithm</a>&#160;</td>
          <td class="paramname"><em>p_enc_algorithm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_private_enc_key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_ephemeral_public_key_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_ephemeral_public_key_y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_enc_sym_key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_expected_nonce</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_authentication_vector</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

garciay's avatar
garciay committed
</div>
</div>
<a id="a4f3f4feb1840f3df955e980aaddce094"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f3f4feb1840f3df955e980aaddce094">&#9670;&nbsp;</a></span>init()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int security_ecc::init </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Called by the constructors to set up encryption environment. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::nonce </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>  </td>
  </tr>
</table>
</div><div class="memdoc">

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::private_key </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>  </td>
  </tr>
</table>
</div><div class="memdoc">

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int security_ecc::public_key_to_bin </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; unsigned char &gt; &amp;&#160;</td>
          <td class="paramname"><em>p_bin_key</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Convert a public key into a big number object. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 otherwise </dd></dl>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::public_key_x </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>  </td>
  </tr>
</table>
</div><div class="memdoc">

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::public_key_y </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>  </td>
  </tr>
</table>
</div><div class="memdoc">

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt;unsigned char&gt;&amp; security_ecc::secret_key </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>  </td>
  </tr>
</table>
</div><div class="memdoc">

garciay's avatar
garciay committed
</div>
</div>
<a id="a60c3b1f5592b12d3993160360e84aafc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60c3b1f5592b12d3993160360e84aafc">&#9670;&nbsp;</a></span>sign()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">