<!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>mbed TLS v2.7.8: ecp.h File 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">mbed TLS v2.7.8 </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.13 --> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',false,false,'search.php','Search'); }); </script> <div id="main-nav"></div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_b4d146e9a6d8dd56ed4afb2480a97fd3.html">mbedtls</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">ecp.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>Elliptic curves over GF(p) <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="bignum_8h_source.html">bignum.h</a>"</code><br /> </div><div class="textblock"><div class="dynheader"> Include dependency graph for ecp.h:</div> <div class="dyncontent"> <div class="center"><img src="ecp_8h__incl.png" border="0" usemap="#ecp_8h" alt=""/></div> <map name="ecp_8h" id="ecp_8h"> <area shape="rect" id="node2" href="bignum_8h.html" title="Multi-precision integer library. " alt="" coords="225,80,327,107"/> <area shape="rect" id="node3" href="config_8h.html" title="Configuration options (set of defines) " alt="" coords="35,155,138,181"/> <area shape="rect" id="node4" href="check__config_8h.html" title="Consistency checks for configuration options. " alt="" coords="5,229,168,256"/> </map> </div> </div><div class="textblock"><div class="dynheader"> This graph shows which files directly or indirectly include this file:</div> <div class="dyncontent"> <div class="center"><img src="ecp_8h__dep__incl.png" border="0" usemap="#ecp_8hdep" alt=""/></div> <map name="ecp_8hdep" id="ecp_8hdep"> <area shape="rect" id="node2" href="ssl_8h.html" title="SSL/TLS functions. " alt="" coords="351,453,423,480"/> <area shape="rect" id="node3" href="debug_8h.html" title="Functions for controlling and providing debug output from the library. " alt="" coords="5,528,97,555"/> <area shape="rect" id="node9" href="pk_8h.html" title="Public Key abstraction layer. " alt="" coords="360,155,423,181"/> <area shape="rect" id="node16" href="ecdsa_8h.html" title="The Elliptic Curve Digital Signature Algorithm (ECDSA). " alt="" coords="345,80,437,107"/> <area shape="rect" id="node17" href="ecdh_8h.html" title="The Elliptic Curve Diffie-Hellman (ECDH) protocol APIs. " alt="" coords="485,155,567,181"/> <area shape="rect" id="node18" href="ecjpake_8h.html" title="Elliptic curve J-PAKE. " alt="" coords="642,80,754,107"/> <area shape="rect" id="node4" href="net__sockets_8h.html" title="Network communication functions. " alt="" coords="630,528,782,555"/> <area shape="rect" id="node6" href="ssl__cache_8h.html" title="SSL session cache implementation. " alt="" coords="140,528,272,555"/> <area shape="rect" id="node7" href="ssl__cookie_8h.html" title="DTLS cookie callbacks implementation. " alt="" coords="296,528,439,555"/> <area shape="rect" id="node8" href="ssl__ticket_8h.html" title="TLS server ticket callbacks implementation. " alt="" coords="463,528,605,555"/> <area shape="rect" id="node5" href="net_8h.html" title="Deprecated header file that includes net_sockets.h. " alt="" coords="670,603,742,629"/> <area shape="rect" id="node10" href="ssl__ciphersuites_8h.html" title="SSL Ciphersuites for mbed TLS. " alt="" coords="50,379,253,405"/> <area shape="rect" id="node11" href="x509_8h.html" title="X.509 generic defines and structures. " alt="" coords="318,229,401,256"/> <area shape="rect" id="node14" href="oid_8h.html" title="Object Identifier (OID) database. " alt="" coords="445,304,517,331"/> <area shape="rect" id="node12" href="x509__crt_8h.html" title="X.509 certificate parsing and writing. " alt="" coords="277,379,399,405"/> <area shape="rect" id="node13" href="x509__crl_8h.html" title="X.509 certificate revocation list parsing. " alt="" coords="298,304,421,331"/> <area shape="rect" id="node15" href="x509__csr_8h.html" title="X.509 certificate signing request parsing and writing. " alt="" coords="151,304,274,331"/> </map> </div> </div> <p><a href="ecp_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">ECP point structure (jacobian coordinates) <a href="structmbedtls__ecp__point.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">ECP group structure. <a href="structmbedtls__ecp__group.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">ECP key pair structure. <a href="structmbedtls__ecp__keypair.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:abcd6ff5c88f83a731383d344b56131f3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#abcd6ff5c88f83a731383d344b56131f3">MBEDTLS_ERR_ECP_BAD_INPUT_DATA</a>   -0x4F80</td></tr> <tr class="separator:abcd6ff5c88f83a731383d344b56131f3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a40adc3b18cac6225a491c07829a49b7c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a40adc3b18cac6225a491c07829a49b7c">MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL</a>   -0x4F00</td></tr> <tr class="separator:a40adc3b18cac6225a491c07829a49b7c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa5a0e1548717d603ba5782c8ab6f5c24"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#aa5a0e1548717d603ba5782c8ab6f5c24">MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE</a>   -0x4E80</td></tr> <tr class="separator:aa5a0e1548717d603ba5782c8ab6f5c24"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3d19895998e4ac7b4744c2407cec1917"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a3d19895998e4ac7b4744c2407cec1917">MBEDTLS_ERR_ECP_VERIFY_FAILED</a>   -0x4E00</td></tr> <tr class="separator:a3d19895998e4ac7b4744c2407cec1917"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a048bea0521e7928f75a6259a8fcbfecb"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a048bea0521e7928f75a6259a8fcbfecb">MBEDTLS_ERR_ECP_ALLOC_FAILED</a>   -0x4D80</td></tr> <tr class="separator:a048bea0521e7928f75a6259a8fcbfecb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a484c796d0d97513809f6042e51b42957"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a484c796d0d97513809f6042e51b42957">MBEDTLS_ERR_ECP_RANDOM_FAILED</a>   -0x4D00</td></tr> <tr class="separator:a484c796d0d97513809f6042e51b42957"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a20464525ea74ab8fcca9f59a12f5dc4b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a20464525ea74ab8fcca9f59a12f5dc4b">MBEDTLS_ERR_ECP_INVALID_KEY</a>   -0x4C80</td></tr> <tr class="separator:a20464525ea74ab8fcca9f59a12f5dc4b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a49d1dece5c167d28f22702cfc11b9aa1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a49d1dece5c167d28f22702cfc11b9aa1">MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH</a>   -0x4C00</td></tr> <tr class="separator:a49d1dece5c167d28f22702cfc11b9aa1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8815f3aa2ca7ce0e5f8d178da39435a2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a8815f3aa2ca7ce0e5f8d178da39435a2">MBEDTLS_ERR_ECP_HW_ACCEL_FAILED</a>   -0x4B80</td></tr> <tr class="separator:a8815f3aa2ca7ce0e5f8d178da39435a2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afef3986789abe96859bafe73485adb80"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#afef3986789abe96859bafe73485adb80">MBEDTLS_ECP_DP_MAX</a>   12</td></tr> <tr class="separator:afef3986789abe96859bafe73485adb80"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a076e0db0a53f09d424b8650390632bb3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a076e0db0a53f09d424b8650390632bb3">MBEDTLS_ECP_PF_UNCOMPRESSED</a>   0</td></tr> <tr class="separator:a076e0db0a53f09d424b8650390632bb3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a300814dc5a3ef878a5fb34cc2f185e7a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a300814dc5a3ef878a5fb34cc2f185e7a">MBEDTLS_ECP_PF_COMPRESSED</a>   1</td></tr> <tr class="separator:a300814dc5a3ef878a5fb34cc2f185e7a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5bfe061b705a8695d730dfca7d265407"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a5bfe061b705a8695d730dfca7d265407">MBEDTLS_ECP_TLS_NAMED_CURVE</a>   3</td></tr> <tr class="separator:a5bfe061b705a8695d730dfca7d265407"><td class="memSeparator" colspan="2"> </td></tr> <tr><td colspan="2"><div class="groupHeader">SECTION: Module settings</div></td></tr> <tr><td colspan="2"><div class="groupText"><p>The configuration options you can set for this module are in this section. Either change them in <a class="el" href="config_8h.html" title="Configuration options (set of defines) ">config.h</a> or define them on the compiler command line. </p> </div></td></tr> <tr class="memitem:a98099ce7241e89e42ba34b79e770a0ab"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a98099ce7241e89e42ba34b79e770a0ab">MBEDTLS_ECP_MAX_BITS</a>   521</td></tr> <tr class="separator:a98099ce7241e89e42ba34b79e770a0ab"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aba9fdfc8a8dd423182616e5708abf607"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#aba9fdfc8a8dd423182616e5708abf607">MBEDTLS_ECP_MAX_BYTES</a>   ( ( <a class="el" href="ecp_8h.html#a98099ce7241e89e42ba34b79e770a0ab">MBEDTLS_ECP_MAX_BITS</a> + 7 ) / 8 )</td></tr> <tr class="separator:aba9fdfc8a8dd423182616e5708abf607"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a281e8aba9ecf97bbd2e4b6b72eb04b87"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a281e8aba9ecf97bbd2e4b6b72eb04b87">MBEDTLS_ECP_MAX_PT_LEN</a>   ( 2 * <a class="el" href="ecp_8h.html#aba9fdfc8a8dd423182616e5708abf607">MBEDTLS_ECP_MAX_BYTES</a> + 1 )</td></tr> <tr class="separator:a281e8aba9ecf97bbd2e4b6b72eb04b87"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0e14e10966cfd209e80d66a16b6c94ec"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a0e14e10966cfd209e80d66a16b6c94ec">MBEDTLS_ECP_WINDOW_SIZE</a>   6</td></tr> <tr class="separator:a0e14e10966cfd209e80d66a16b6c94ec"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab5f2493612bbc9538cb749e85c5e46af"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#ab5f2493612bbc9538cb749e85c5e46af">MBEDTLS_ECP_FIXED_POINT_OPTIM</a>   1</td></tr> <tr class="separator:ab5f2493612bbc9538cb749e85c5e46af"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:af79e530ea8f8416480f805baa20b1a2d"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> { <br />   <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2da677d15aba64be1606e0f63ebff096840">MBEDTLS_ECP_DP_NONE</a> = 0, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2dae5fcc335b9a458a68542c5b0e2a60971">MBEDTLS_ECP_DP_SECP192R1</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2da89c8d4502fa02eecd44f8de4831b38c8">MBEDTLS_ECP_DP_SECP224R1</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2daf73bbf7b29d26a0bc77dcff47cd6b276">MBEDTLS_ECP_DP_SECP256R1</a>, <br />   <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2da08d0615820297b8c90f8ec7cbd88f641">MBEDTLS_ECP_DP_SECP384R1</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2daaa2d9d42df56aab024ef760ee9dffca2">MBEDTLS_ECP_DP_SECP521R1</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2dade9d3762e81c6e1d6e499d21e8190be5">MBEDTLS_ECP_DP_BP256R1</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2daaf562eeec4368f2c501c163b4707900a">MBEDTLS_ECP_DP_BP384R1</a>, <br />   <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2da803c5f7c0d68be4556a688746be1c9e1">MBEDTLS_ECP_DP_BP512R1</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2da675f95c8d8550edd7eb85828d2f22b9f">MBEDTLS_ECP_DP_CURVE25519</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2da0414bf86d7efb0e211214d9dddfb69d4">MBEDTLS_ECP_DP_SECP192K1</a>, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2dabae9bc9de43957062495162e603c0943">MBEDTLS_ECP_DP_SECP224K1</a>, <br />   <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2da6de9f87d43d7c29c7f91e9986ccfc25f">MBEDTLS_ECP_DP_SECP256K1</a> <br /> }</td></tr> <tr class="separator:af79e530ea8f8416480f805baa20b1a2d"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:aee4af7c7ad70564c44ba750cd96ae989"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#aee4af7c7ad70564c44ba750cd96ae989">mbedtls_ecp_curve_list</a> (void)</td></tr> <tr class="memdesc:aee4af7c7ad70564c44ba750cd96ae989"><td class="mdescLeft"> </td><td class="mdescRight">Get the list of supported curves in order of preferrence (full information) <a href="#aee4af7c7ad70564c44ba750cd96ae989">More...</a><br /></td></tr> <tr class="separator:aee4af7c7ad70564c44ba750cd96ae989"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a84d2fed0c0cdde5201451bb5461aa275"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a84d2fed0c0cdde5201451bb5461aa275">mbedtls_ecp_grp_id_list</a> (void)</td></tr> <tr class="memdesc:a84d2fed0c0cdde5201451bb5461aa275"><td class="mdescLeft"> </td><td class="mdescRight">Get the list of supported curves in order of preferrence (grp_id only) <a href="#a84d2fed0c0cdde5201451bb5461aa275">More...</a><br /></td></tr> <tr class="separator:a84d2fed0c0cdde5201451bb5461aa275"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6234c72d1af65d804da31a2706ef522e"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a6234c72d1af65d804da31a2706ef522e">mbedtls_ecp_curve_info_from_grp_id</a> (<a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> grp_id)</td></tr> <tr class="memdesc:a6234c72d1af65d804da31a2706ef522e"><td class="mdescLeft"> </td><td class="mdescRight">Get curve information from an internal group identifier. <a href="#a6234c72d1af65d804da31a2706ef522e">More...</a><br /></td></tr> <tr class="separator:a6234c72d1af65d804da31a2706ef522e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aac1e9b4f0112b88fbbc26776c5268c19"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#aac1e9b4f0112b88fbbc26776c5268c19">mbedtls_ecp_curve_info_from_tls_id</a> (uint16_t tls_id)</td></tr> <tr class="memdesc:aac1e9b4f0112b88fbbc26776c5268c19"><td class="mdescLeft"> </td><td class="mdescRight">Get curve information from a TLS NamedCurve value. <a href="#aac1e9b4f0112b88fbbc26776c5268c19">More...</a><br /></td></tr> <tr class="separator:aac1e9b4f0112b88fbbc26776c5268c19"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a961d3dd5f6c4938054c8f931f2a4ecdc"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a961d3dd5f6c4938054c8f931f2a4ecdc">mbedtls_ecp_curve_info_from_name</a> (const char *name)</td></tr> <tr class="memdesc:a961d3dd5f6c4938054c8f931f2a4ecdc"><td class="mdescLeft"> </td><td class="mdescRight">Get curve information from a human-readable name. <a href="#a961d3dd5f6c4938054c8f931f2a4ecdc">More...</a><br /></td></tr> <tr class="separator:a961d3dd5f6c4938054c8f931f2a4ecdc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae069f80bc2f9cf2215c34430a9ccd924"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#ae069f80bc2f9cf2215c34430a9ccd924">mbedtls_ecp_point_init</a> (<a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *pt)</td></tr> <tr class="memdesc:ae069f80bc2f9cf2215c34430a9ccd924"><td class="mdescLeft"> </td><td class="mdescRight">Initialize a point (as zero) <a href="#ae069f80bc2f9cf2215c34430a9ccd924">More...</a><br /></td></tr> <tr class="separator:ae069f80bc2f9cf2215c34430a9ccd924"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5102f6d44d9f16aece7b2e685c31e5da"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a5102f6d44d9f16aece7b2e685c31e5da">mbedtls_ecp_group_init</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp)</td></tr> <tr class="memdesc:a5102f6d44d9f16aece7b2e685c31e5da"><td class="mdescLeft"> </td><td class="mdescRight">Initialize a group (to something meaningless) <a href="#a5102f6d44d9f16aece7b2e685c31e5da">More...</a><br /></td></tr> <tr class="separator:a5102f6d44d9f16aece7b2e685c31e5da"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a770d9e33e938f2033fd3f77e6fa2a697"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a770d9e33e938f2033fd3f77e6fa2a697">mbedtls_ecp_keypair_init</a> (<a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> *key)</td></tr> <tr class="memdesc:a770d9e33e938f2033fd3f77e6fa2a697"><td class="mdescLeft"> </td><td class="mdescRight">Initialize a key pair (as an invalid one) <a href="#a770d9e33e938f2033fd3f77e6fa2a697">More...</a><br /></td></tr> <tr class="separator:a770d9e33e938f2033fd3f77e6fa2a697"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a87004f74814cc59a9ef757aea444098d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a87004f74814cc59a9ef757aea444098d">mbedtls_ecp_point_free</a> (<a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *pt)</td></tr> <tr class="memdesc:a87004f74814cc59a9ef757aea444098d"><td class="mdescLeft"> </td><td class="mdescRight">Free the components of a point. <a href="#a87004f74814cc59a9ef757aea444098d">More...</a><br /></td></tr> <tr class="separator:a87004f74814cc59a9ef757aea444098d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a97b130596caa2844282181082f66cb90"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a97b130596caa2844282181082f66cb90">mbedtls_ecp_group_free</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp)</td></tr> <tr class="memdesc:a97b130596caa2844282181082f66cb90"><td class="mdescLeft"> </td><td class="mdescRight">Free the components of an ECP group. <a href="#a97b130596caa2844282181082f66cb90">More...</a><br /></td></tr> <tr class="separator:a97b130596caa2844282181082f66cb90"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a04ea689d8d97b423a5d646cd9c53f400"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a04ea689d8d97b423a5d646cd9c53f400">mbedtls_ecp_keypair_free</a> (<a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> *key)</td></tr> <tr class="memdesc:a04ea689d8d97b423a5d646cd9c53f400"><td class="mdescLeft"> </td><td class="mdescRight">Free the components of a key pair. <a href="#a04ea689d8d97b423a5d646cd9c53f400">More...</a><br /></td></tr> <tr class="separator:a04ea689d8d97b423a5d646cd9c53f400"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a97cfab220125dd40d96344e441656142"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a97cfab220125dd40d96344e441656142">mbedtls_ecp_copy</a> (<a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *P, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *Q)</td></tr> <tr class="memdesc:a97cfab220125dd40d96344e441656142"><td class="mdescLeft"> </td><td class="mdescRight">Copy the contents of point Q into P. <a href="#a97cfab220125dd40d96344e441656142">More...</a><br /></td></tr> <tr class="separator:a97cfab220125dd40d96344e441656142"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2b6e780826b5d6ba4fd5dd5911e490dc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a2b6e780826b5d6ba4fd5dd5911e490dc">mbedtls_ecp_group_copy</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *dst, const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *src)</td></tr> <tr class="memdesc:a2b6e780826b5d6ba4fd5dd5911e490dc"><td class="mdescLeft"> </td><td class="mdescRight">Copy the contents of a group object. <a href="#a2b6e780826b5d6ba4fd5dd5911e490dc">More...</a><br /></td></tr> <tr class="separator:a2b6e780826b5d6ba4fd5dd5911e490dc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac18b1dfe4223ac6dc6c637b2edc4a481"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#ac18b1dfe4223ac6dc6c637b2edc4a481">mbedtls_ecp_set_zero</a> (<a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *pt)</td></tr> <tr class="memdesc:ac18b1dfe4223ac6dc6c637b2edc4a481"><td class="mdescLeft"> </td><td class="mdescRight">Set a point to zero. <a href="#ac18b1dfe4223ac6dc6c637b2edc4a481">More...</a><br /></td></tr> <tr class="separator:ac18b1dfe4223ac6dc6c637b2edc4a481"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a17c7d8f0ee985c2ea5713659eccfd955"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a17c7d8f0ee985c2ea5713659eccfd955">mbedtls_ecp_is_zero</a> (<a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *pt)</td></tr> <tr class="memdesc:a17c7d8f0ee985c2ea5713659eccfd955"><td class="mdescLeft"> </td><td class="mdescRight">Tell if a point is zero. <a href="#a17c7d8f0ee985c2ea5713659eccfd955">More...</a><br /></td></tr> <tr class="separator:a17c7d8f0ee985c2ea5713659eccfd955"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5e7676ea5e822494f5208751766daa32"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a5e7676ea5e822494f5208751766daa32">mbedtls_ecp_point_cmp</a> (const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *P, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *Q)</td></tr> <tr class="memdesc:a5e7676ea5e822494f5208751766daa32"><td class="mdescLeft"> </td><td class="mdescRight">Compare two points. <a href="#a5e7676ea5e822494f5208751766daa32">More...</a><br /></td></tr> <tr class="separator:a5e7676ea5e822494f5208751766daa32"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a63bfda35c538b840a78371be788675dd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a63bfda35c538b840a78371be788675dd">mbedtls_ecp_point_read_string</a> (<a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *P, int radix, const char *x, const char *y)</td></tr> <tr class="memdesc:a63bfda35c538b840a78371be788675dd"><td class="mdescLeft"> </td><td class="mdescRight">Import a non-zero point from two ASCII strings. <a href="#a63bfda35c538b840a78371be788675dd">More...</a><br /></td></tr> <tr class="separator:a63bfda35c538b840a78371be788675dd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af7d35a6631f662cc279eed8c4f0f7ba6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#af7d35a6631f662cc279eed8c4f0f7ba6">mbedtls_ecp_point_write_binary</a> (const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *P, int format, size_t *olen, unsigned char *buf, size_t buflen)</td></tr> <tr class="memdesc:af7d35a6631f662cc279eed8c4f0f7ba6"><td class="mdescLeft"> </td><td class="mdescRight">Export a point into unsigned binary data. <a href="#af7d35a6631f662cc279eed8c4f0f7ba6">More...</a><br /></td></tr> <tr class="separator:af7d35a6631f662cc279eed8c4f0f7ba6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a08eb064f95d4ebd2d7822234f7b64b4d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a08eb064f95d4ebd2d7822234f7b64b4d">mbedtls_ecp_point_read_binary</a> (const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *P, const unsigned char *buf, size_t ilen)</td></tr> <tr class="memdesc:a08eb064f95d4ebd2d7822234f7b64b4d"><td class="mdescLeft"> </td><td class="mdescRight">Import a point from unsigned binary data. <a href="#a08eb064f95d4ebd2d7822234f7b64b4d">More...</a><br /></td></tr> <tr class="separator:a08eb064f95d4ebd2d7822234f7b64b4d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a883eb26a1be64c491ea0354189ae2604"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a883eb26a1be64c491ea0354189ae2604">mbedtls_ecp_tls_read_point</a> (const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *pt, const unsigned char **buf, size_t len)</td></tr> <tr class="memdesc:a883eb26a1be64c491ea0354189ae2604"><td class="mdescLeft"> </td><td class="mdescRight">Import a point from a TLS ECPoint record. <a href="#a883eb26a1be64c491ea0354189ae2604">More...</a><br /></td></tr> <tr class="separator:a883eb26a1be64c491ea0354189ae2604"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa98adfe68b926724607d8fcab61397a9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#aa98adfe68b926724607d8fcab61397a9">mbedtls_ecp_tls_write_point</a> (const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *pt, int format, size_t *olen, unsigned char *buf, size_t blen)</td></tr> <tr class="memdesc:aa98adfe68b926724607d8fcab61397a9"><td class="mdescLeft"> </td><td class="mdescRight">Export a point as a TLS ECPoint record. <a href="#aa98adfe68b926724607d8fcab61397a9">More...</a><br /></td></tr> <tr class="separator:aa98adfe68b926724607d8fcab61397a9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a64439a12deff8bd1ef92eeab7ebbcf93"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a64439a12deff8bd1ef92eeab7ebbcf93">mbedtls_ecp_group_load</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> id)</td></tr> <tr class="memdesc:a64439a12deff8bd1ef92eeab7ebbcf93"><td class="mdescLeft"> </td><td class="mdescRight">Set a group using well-known domain parameters. <a href="#a64439a12deff8bd1ef92eeab7ebbcf93">More...</a><br /></td></tr> <tr class="separator:a64439a12deff8bd1ef92eeab7ebbcf93"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acfd0cdb926358713b31c48b2e4dd9e58"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#acfd0cdb926358713b31c48b2e4dd9e58">mbedtls_ecp_tls_read_group</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, const unsigned char **buf, size_t len)</td></tr> <tr class="memdesc:acfd0cdb926358713b31c48b2e4dd9e58"><td class="mdescLeft"> </td><td class="mdescRight">Set a group from a TLS ECParameters record. <a href="#acfd0cdb926358713b31c48b2e4dd9e58">More...</a><br /></td></tr> <tr class="separator:acfd0cdb926358713b31c48b2e4dd9e58"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2ae23f66900fe6f3ef50eb30af4143d0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a2ae23f66900fe6f3ef50eb30af4143d0">mbedtls_ecp_tls_write_group</a> (const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, size_t *olen, unsigned char *buf, size_t blen)</td></tr> <tr class="memdesc:a2ae23f66900fe6f3ef50eb30af4143d0"><td class="mdescLeft"> </td><td class="mdescRight">Write the TLS ECParameters record for a group. <a href="#a2ae23f66900fe6f3ef50eb30af4143d0">More...</a><br /></td></tr> <tr class="separator:a2ae23f66900fe6f3ef50eb30af4143d0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4d005045c302e100c78bdc587e8f0e6a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a4d005045c302e100c78bdc587e8f0e6a">mbedtls_ecp_mul</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *R, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *m, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *P, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</td></tr> <tr class="memdesc:a4d005045c302e100c78bdc587e8f0e6a"><td class="mdescLeft"> </td><td class="mdescRight">Multiplication by an integer: R = m * P (Not thread-safe to use same group in multiple threads) <a href="#a4d005045c302e100c78bdc587e8f0e6a">More...</a><br /></td></tr> <tr class="separator:a4d005045c302e100c78bdc587e8f0e6a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a09d306c628dccf6256d59f71f30be39c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a09d306c628dccf6256d59f71f30be39c">mbedtls_ecp_muladd</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *R, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *m, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *P, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *n, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *Q)</td></tr> <tr class="memdesc:a09d306c628dccf6256d59f71f30be39c"><td class="mdescLeft"> </td><td class="mdescRight">Multiplication and addition of two points by integers: R = m * P + n * Q (Not thread-safe to use same group in multiple threads) <a href="#a09d306c628dccf6256d59f71f30be39c">More...</a><br /></td></tr> <tr class="separator:a09d306c628dccf6256d59f71f30be39c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae8768744c65fc71137b496f10cc02370"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#ae8768744c65fc71137b496f10cc02370">mbedtls_ecp_check_pubkey</a> (const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *pt)</td></tr> <tr class="memdesc:ae8768744c65fc71137b496f10cc02370"><td class="mdescLeft"> </td><td class="mdescRight">Check that a point is a valid public key on this curve. <a href="#ae8768744c65fc71137b496f10cc02370">More...</a><br /></td></tr> <tr class="separator:ae8768744c65fc71137b496f10cc02370"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5eefe5e5381076f95dbc8c6779f4da4e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a5eefe5e5381076f95dbc8c6779f4da4e">mbedtls_ecp_check_privkey</a> (const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *d)</td></tr> <tr class="memdesc:a5eefe5e5381076f95dbc8c6779f4da4e"><td class="mdescLeft"> </td><td class="mdescRight">Check that an <a class="el" href="structmbedtls__mpi.html" title="MPI structure. ">mbedtls_mpi</a> is a valid private key for this curve. <a href="#a5eefe5e5381076f95dbc8c6779f4da4e">More...</a><br /></td></tr> <tr class="separator:a5eefe5e5381076f95dbc8c6779f4da4e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a521967f0d966bd98e7e76a8fd43829ed"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a521967f0d966bd98e7e76a8fd43829ed">mbedtls_ecp_gen_keypair_base</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *G, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *d, <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *Q, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</td></tr> <tr class="memdesc:a521967f0d966bd98e7e76a8fd43829ed"><td class="mdescLeft"> </td><td class="mdescRight">Generate a keypair with configurable base point. <a href="#a521967f0d966bd98e7e76a8fd43829ed">More...</a><br /></td></tr> <tr class="separator:a521967f0d966bd98e7e76a8fd43829ed"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa7d8987918be4f337102afacf7203d0d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#aa7d8987918be4f337102afacf7203d0d">mbedtls_ecp_gen_keypair</a> (<a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> *grp, <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> *d, <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> *Q, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</td></tr> <tr class="memdesc:aa7d8987918be4f337102afacf7203d0d"><td class="mdescLeft"> </td><td class="mdescRight">Generate a keypair. <a href="#aa7d8987918be4f337102afacf7203d0d">More...</a><br /></td></tr> <tr class="separator:aa7d8987918be4f337102afacf7203d0d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0c9a407214f019493ba5d7bc27fa57dc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a0c9a407214f019493ba5d7bc27fa57dc">mbedtls_ecp_gen_key</a> (<a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> grp_id, <a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> *key, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)</td></tr> <tr class="memdesc:a0c9a407214f019493ba5d7bc27fa57dc"><td class="mdescLeft"> </td><td class="mdescRight">Generate a keypair. <a href="#a0c9a407214f019493ba5d7bc27fa57dc">More...</a><br /></td></tr> <tr class="separator:a0c9a407214f019493ba5d7bc27fa57dc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5718c919b1ad1bf86ce4d45613f06e55"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#a5718c919b1ad1bf86ce4d45613f06e55">mbedtls_ecp_check_pub_priv</a> (const <a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> *pub, const <a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> *prv)</td></tr> <tr class="memdesc:a5718c919b1ad1bf86ce4d45613f06e55"><td class="mdescLeft"> </td><td class="mdescRight">Check a public-private key pair. <a href="#a5718c919b1ad1bf86ce4d45613f06e55">More...</a><br /></td></tr> <tr class="separator:a5718c919b1ad1bf86ce4d45613f06e55"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af869b14c9dcd0d4314151caee7d7e50e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="ecp_8h.html#af869b14c9dcd0d4314151caee7d7e50e">mbedtls_ecp_self_test</a> (int verbose)</td></tr> <tr class="memdesc:af869b14c9dcd0d4314151caee7d7e50e"><td class="mdescLeft"> </td><td class="mdescRight">Checkup routine. <a href="#af869b14c9dcd0d4314151caee7d7e50e">More...</a><br /></td></tr> <tr class="separator:af869b14c9dcd0d4314151caee7d7e50e"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Elliptic curves over GF(p) </p> <p class="definition">Definition in file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a id="afef3986789abe96859bafe73485adb80"></a> <h2 class="memtitle"><span class="permalink"><a href="#afef3986789abe96859bafe73485adb80">◆ </a></span>MBEDTLS_ECP_DP_MAX</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_DP_MAX   12</td> </tr> </table> </div><div class="memdoc"> <p>Number of supported curves (plus one for NONE).</p> <p>(Montgomery curves excluded for now.) </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00086">86</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="ab5f2493612bbc9538cb749e85c5e46af"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab5f2493612bbc9538cb749e85c5e46af">◆ </a></span>MBEDTLS_ECP_FIXED_POINT_OPTIM</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_FIXED_POINT_OPTIM   1</td> </tr> </table> </div><div class="memdoc"> <p>Enable fixed-point speed-up </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00229">229</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a98099ce7241e89e42ba34b79e770a0ab"></a> <h2 class="memtitle"><span class="permalink"><a href="#a98099ce7241e89e42ba34b79e770a0ab">◆ </a></span>MBEDTLS_ECP_MAX_BITS</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_MAX_BITS   521</td> </tr> </table> </div><div class="memdoc"> <p>Maximum size of the groups (that is, of N and P)Maximum bit size of groups </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00187">187</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="aba9fdfc8a8dd423182616e5708abf607"></a> <h2 class="memtitle"><span class="permalink"><a href="#aba9fdfc8a8dd423182616e5708abf607">◆ </a></span>MBEDTLS_ECP_MAX_BYTES</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_MAX_BYTES   ( ( <a class="el" href="ecp_8h.html#a98099ce7241e89e42ba34b79e770a0ab">MBEDTLS_ECP_MAX_BITS</a> + 7 ) / 8 )</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00190">190</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a281e8aba9ecf97bbd2e4b6b72eb04b87"></a> <h2 class="memtitle"><span class="permalink"><a href="#a281e8aba9ecf97bbd2e4b6b72eb04b87">◆ </a></span>MBEDTLS_ECP_MAX_PT_LEN</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_MAX_PT_LEN   ( 2 * <a class="el" href="ecp_8h.html#aba9fdfc8a8dd423182616e5708abf607">MBEDTLS_ECP_MAX_BYTES</a> + 1 )</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00191">191</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a300814dc5a3ef878a5fb34cc2f185e7a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a300814dc5a3ef878a5fb34cc2f185e7a">◆ </a></span>MBEDTLS_ECP_PF_COMPRESSED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_PF_COMPRESSED   1</td> </tr> </table> </div><div class="memdoc"> <p>Compressed point format </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00238">238</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a076e0db0a53f09d424b8650390632bb3"></a> <h2 class="memtitle"><span class="permalink"><a href="#a076e0db0a53f09d424b8650390632bb3">◆ </a></span>MBEDTLS_ECP_PF_UNCOMPRESSED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_PF_UNCOMPRESSED   0</td> </tr> </table> </div><div class="memdoc"> <p>Uncompressed point format </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00237">237</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a5bfe061b705a8695d730dfca7d265407"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5bfe061b705a8695d730dfca7d265407">◆ </a></span>MBEDTLS_ECP_TLS_NAMED_CURVE</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_TLS_NAMED_CURVE   3</td> </tr> </table> </div><div class="memdoc"> <p>ECCurveType's named_curve </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00243">243</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a0e14e10966cfd209e80d66a16b6c94ec"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0e14e10966cfd209e80d66a16b6c94ec">◆ </a></span>MBEDTLS_ECP_WINDOW_SIZE</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ECP_WINDOW_SIZE   6</td> </tr> </table> </div><div class="memdoc"> <p>Maximum window size used </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00214">214</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a048bea0521e7928f75a6259a8fcbfecb"></a> <h2 class="memtitle"><span class="permalink"><a href="#a048bea0521e7928f75a6259a8fcbfecb">◆ </a></span>MBEDTLS_ERR_ECP_ALLOC_FAILED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_ALLOC_FAILED   -0x4D80</td> </tr> </table> </div><div class="memdoc"> <p>Memory allocation failed. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00036">36</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="abcd6ff5c88f83a731383d344b56131f3"></a> <h2 class="memtitle"><span class="permalink"><a href="#abcd6ff5c88f83a731383d344b56131f3">◆ </a></span>MBEDTLS_ERR_ECP_BAD_INPUT_DATA</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_BAD_INPUT_DATA   -0x4F80</td> </tr> </table> </div><div class="memdoc"> <p>Bad input parameters to function. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00032">32</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a40adc3b18cac6225a491c07829a49b7c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a40adc3b18cac6225a491c07829a49b7c">◆ </a></span>MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL   -0x4F00</td> </tr> </table> </div><div class="memdoc"> <p>The buffer is too small to write to. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00033">33</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="aa5a0e1548717d603ba5782c8ab6f5c24"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa5a0e1548717d603ba5782c8ab6f5c24">◆ </a></span>MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE   -0x4E80</td> </tr> </table> </div><div class="memdoc"> <p>Requested curve not available. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00034">34</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a8815f3aa2ca7ce0e5f8d178da39435a2"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8815f3aa2ca7ce0e5f8d178da39435a2">◆ </a></span>MBEDTLS_ERR_ECP_HW_ACCEL_FAILED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_HW_ACCEL_FAILED   -0x4B80</td> </tr> </table> </div><div class="memdoc"> <p>ECP hardware accelerator failed. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00040">40</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a20464525ea74ab8fcca9f59a12f5dc4b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a20464525ea74ab8fcca9f59a12f5dc4b">◆ </a></span>MBEDTLS_ERR_ECP_INVALID_KEY</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_INVALID_KEY   -0x4C80</td> </tr> </table> </div><div class="memdoc"> <p>Invalid private or public key. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00038">38</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a484c796d0d97513809f6042e51b42957"></a> <h2 class="memtitle"><span class="permalink"><a href="#a484c796d0d97513809f6042e51b42957">◆ </a></span>MBEDTLS_ERR_ECP_RANDOM_FAILED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_RANDOM_FAILED   -0x4D00</td> </tr> </table> </div><div class="memdoc"> <p>Generation of random value, such as (ephemeral) key, failed. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00037">37</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a49d1dece5c167d28f22702cfc11b9aa1"></a> <h2 class="memtitle"><span class="permalink"><a href="#a49d1dece5c167d28f22702cfc11b9aa1">◆ </a></span>MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH   -0x4C00</td> </tr> </table> </div><div class="memdoc"> <p>The buffer contains a valid signature followed by more data. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00039">39</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <a id="a3d19895998e4ac7b4744c2407cec1917"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3d19895998e4ac7b4744c2407cec1917">◆ </a></span>MBEDTLS_ERR_ECP_VERIFY_FAILED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MBEDTLS_ERR_ECP_VERIFY_FAILED   -0x4E00</td> </tr> </table> </div><div class="memdoc"> <p>The signature is not valid. </p> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00035">35</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <h2 class="groupheader">Enumeration Type Documentation</h2> <a id="af79e530ea8f8416480f805baa20b1a2d"></a> <h2 class="memtitle"><span class="permalink"><a href="#af79e530ea8f8416480f805baa20b1a2d">◆ </a></span>mbedtls_ecp_group_id</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a></td> </tr> </table> </div><div class="memdoc"> <p>Domain parameters (curve, subgroup and generator) identifiers.</p> <p>Only curves over prime fields are supported.</p> <dl class="section warning"><dt>Warning</dt><dd>This library does not support validation of arbitrary domain parameters. Therefore, only well-known domain parameters from trusted sources should be used. See <a class="el" href="ecp_8h.html#a64439a12deff8bd1ef92eeab7ebbcf93" title="Set a group using well-known domain parameters. ">mbedtls_ecp_group_load()</a>. </dd></dl> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2da677d15aba64be1606e0f63ebff096840"></a>MBEDTLS_ECP_DP_NONE </td><td class="fielddoc"></td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2dae5fcc335b9a458a68542c5b0e2a60971"></a>MBEDTLS_ECP_DP_SECP192R1 </td><td class="fielddoc"><p>192-bits NIST curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2da89c8d4502fa02eecd44f8de4831b38c8"></a>MBEDTLS_ECP_DP_SECP224R1 </td><td class="fielddoc"><p>224-bits NIST curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2daf73bbf7b29d26a0bc77dcff47cd6b276"></a>MBEDTLS_ECP_DP_SECP256R1 </td><td class="fielddoc"><p>256-bits NIST curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2da08d0615820297b8c90f8ec7cbd88f641"></a>MBEDTLS_ECP_DP_SECP384R1 </td><td class="fielddoc"><p>384-bits NIST curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2daaa2d9d42df56aab024ef760ee9dffca2"></a>MBEDTLS_ECP_DP_SECP521R1 </td><td class="fielddoc"><p>521-bits NIST curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2dade9d3762e81c6e1d6e499d21e8190be5"></a>MBEDTLS_ECP_DP_BP256R1 </td><td class="fielddoc"><p>256-bits Brainpool curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2daaf562eeec4368f2c501c163b4707900a"></a>MBEDTLS_ECP_DP_BP384R1 </td><td class="fielddoc"><p>384-bits Brainpool curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2da803c5f7c0d68be4556a688746be1c9e1"></a>MBEDTLS_ECP_DP_BP512R1 </td><td class="fielddoc"><p>512-bits Brainpool curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2da675f95c8d8550edd7eb85828d2f22b9f"></a>MBEDTLS_ECP_DP_CURVE25519 </td><td class="fielddoc"><p>Curve25519 </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2da0414bf86d7efb0e211214d9dddfb69d4"></a>MBEDTLS_ECP_DP_SECP192K1 </td><td class="fielddoc"><p>192-bits "Koblitz" curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2dabae9bc9de43957062495162e603c0943"></a>MBEDTLS_ECP_DP_SECP224K1 </td><td class="fielddoc"><p>224-bits "Koblitz" curve </p> </td></tr> <tr><td class="fieldname"><a id="af79e530ea8f8416480f805baa20b1a2da6de9f87d43d7c29c7f91e9986ccfc25f"></a>MBEDTLS_ECP_DP_SECP256K1 </td><td class="fielddoc"><p>256-bits "Koblitz" curve </p> </td></tr> </table> <p class="definition">Definition at line <a class="el" href="ecp_8h_source.html#l00064">64</a> of file <a class="el" href="ecp_8h_source.html">ecp.h</a>.</p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a id="a5eefe5e5381076f95dbc8c6779f4da4e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5eefe5e5381076f95dbc8c6779f4da4e">◆ </a></span>mbedtls_ecp_check_privkey()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_check_privkey </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> * </td> <td class="paramname"><em>d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Check that an <a class="el" href="structmbedtls__mpi.html" title="MPI structure. ">mbedtls_mpi</a> is a valid private key for this curve. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>Group used </td></tr> <tr><td class="paramname">d</td><td>Integer to check</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if point is a valid private key, MBEDTLS_ERR_ECP_INVALID_KEY otherwise.</dd></dl> <dl class="section note"><dt>Note</dt><dd>Uses bare components rather than an <a class="el" href="structmbedtls__ecp__keypair.html" title="ECP key pair structure. ">mbedtls_ecp_keypair</a> structure in order to ease use with other structures such as <a class="el" href="structmbedtls__ecdh__context.html" title="The ECDH context structure. ">mbedtls_ecdh_context</a> of mbedtls_ecdsa_context. </dd></dl> </div> </div> <a id="a5718c919b1ad1bf86ce4d45613f06e55"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5718c919b1ad1bf86ce4d45613f06e55">◆ </a></span>mbedtls_ecp_check_pub_priv()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_check_pub_priv </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> * </td> <td class="paramname"><em>pub</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> * </td> <td class="paramname"><em>prv</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Check a public-private key pair. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pub</td><td>Keypair structure holding a public key </td></tr> <tr><td class="paramname">prv</td><td>Keypair structure holding a private (plus public) key</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful (keys are valid and match), or MBEDTLS_ERR_ECP_BAD_INPUT_DATA, or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_ERR_MPI_XXX code. </dd></dl> </div> </div> <a id="ae8768744c65fc71137b496f10cc02370"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae8768744c65fc71137b496f10cc02370">◆ </a></span>mbedtls_ecp_check_pubkey()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_check_pubkey </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>pt</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Check that a point is a valid public key on this curve. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>Curve/group the point should belong to </td></tr> <tr><td class="paramname">pt</td><td>Point to check</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if point is a valid public key, MBEDTLS_ERR_ECP_INVALID_KEY otherwise.</dd></dl> <dl class="section note"><dt>Note</dt><dd>This function only checks the point is non-zero, has valid coordinates and lies on the curve, but not that it is indeed a multiple of G. This is additional check is more expensive, isn't required by standards, and shouldn't be necessary if the group used has a small cofactor. In particular, it is useless for the NIST groups which all have a cofactor of 1.</dd> <dd> Uses bare components rather than an <a class="el" href="structmbedtls__ecp__keypair.html" title="ECP key pair structure. ">mbedtls_ecp_keypair</a> structure in order to ease use with other structures such as <a class="el" href="structmbedtls__ecdh__context.html" title="The ECDH context structure. ">mbedtls_ecdh_context</a> of mbedtls_ecdsa_context. </dd></dl> </div> </div> <a id="a97cfab220125dd40d96344e441656142"></a> <h2 class="memtitle"><span class="permalink"><a href="#a97cfab220125dd40d96344e441656142">◆ </a></span>mbedtls_ecp_copy()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_copy </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>Q</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Copy the contents of point Q into P. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">P</td><td>Destination point </td></tr> <tr><td class="paramname">Q</td><td>Source point</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed </dd></dl> </div> </div> <a id="a6234c72d1af65d804da31a2706ef522e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6234c72d1af65d804da31a2706ef522e">◆ </a></span>mbedtls_ecp_curve_info_from_grp_id()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a>* mbedtls_ecp_curve_info_from_grp_id </td> <td>(</td> <td class="paramtype"><a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> </td> <td class="paramname"><em>grp_id</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get curve information from an internal group identifier. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp_id</td><td>A MBEDTLS_ECP_DP_XXX value</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The associated curve information or NULL </dd></dl> </div> </div> <a id="a961d3dd5f6c4938054c8f931f2a4ecdc"></a> <h2 class="memtitle"><span class="permalink"><a href="#a961d3dd5f6c4938054c8f931f2a4ecdc">◆ </a></span>mbedtls_ecp_curve_info_from_name()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a>* mbedtls_ecp_curve_info_from_name </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>name</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get curve information from a human-readable name. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">name</td><td>The name</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The associated curve information or NULL </dd></dl> </div> </div> <a id="aac1e9b4f0112b88fbbc26776c5268c19"></a> <h2 class="memtitle"><span class="permalink"><a href="#aac1e9b4f0112b88fbbc26776c5268c19">◆ </a></span>mbedtls_ecp_curve_info_from_tls_id()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a>* mbedtls_ecp_curve_info_from_tls_id </td> <td>(</td> <td class="paramtype">uint16_t </td> <td class="paramname"><em>tls_id</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get curve information from a TLS NamedCurve value. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">tls_id</td><td>A MBEDTLS_ECP_DP_XXX value</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The associated curve information or NULL </dd></dl> </div> </div> <a id="aee4af7c7ad70564c44ba750cd96ae989"></a> <h2 class="memtitle"><span class="permalink"><a href="#aee4af7c7ad70564c44ba750cd96ae989">◆ </a></span>mbedtls_ecp_curve_list()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="structmbedtls__ecp__curve__info.html">mbedtls_ecp_curve_info</a>* mbedtls_ecp_curve_list </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get the list of supported curves in order of preferrence (full information) </p> <dl class="section return"><dt>Returns</dt><dd>A statically allocated array, the last entry is 0. </dd></dl> </div> </div> <a id="a0c9a407214f019493ba5d7bc27fa57dc"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0c9a407214f019493ba5d7bc27fa57dc">◆ </a></span>mbedtls_ecp_gen_key()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_gen_key </td> <td>(</td> <td class="paramtype"><a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> </td> <td class="paramname"><em>grp_id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> * </td> <td class="paramname"><em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int(*)(void *, unsigned char *, size_t) </td> <td class="paramname"><em>f_rng</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>p_rng</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generate a keypair. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp_id</td><td>ECP group identifier </td></tr> <tr><td class="paramname">key</td><td>Destination keypair </td></tr> <tr><td class="paramname">f_rng</td><td>RNG function </td></tr> <tr><td class="paramname">p_rng</td><td>RNG parameter</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code </dd></dl> </div> </div> <a id="aa7d8987918be4f337102afacf7203d0d"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa7d8987918be4f337102afacf7203d0d">◆ </a></span>mbedtls_ecp_gen_keypair()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_gen_keypair </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> * </td> <td class="paramname"><em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>Q</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int(*)(void *, unsigned char *, size_t) </td> <td class="paramname"><em>f_rng</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>p_rng</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generate a keypair. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>ECP group </td></tr> <tr><td class="paramname">d</td><td>Destination MPI (secret part) </td></tr> <tr><td class="paramname">Q</td><td>Destination point (public part) </td></tr> <tr><td class="paramname">f_rng</td><td>RNG function </td></tr> <tr><td class="paramname">p_rng</td><td>RNG parameter</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code</dd></dl> <dl class="section note"><dt>Note</dt><dd>Uses bare components rather than an <a class="el" href="structmbedtls__ecp__keypair.html" title="ECP key pair structure. ">mbedtls_ecp_keypair</a> structure in order to ease use with other structures such as <a class="el" href="structmbedtls__ecdh__context.html" title="The ECDH context structure. ">mbedtls_ecdh_context</a> of mbedtls_ecdsa_context. </dd></dl> </div> </div> <a id="a521967f0d966bd98e7e76a8fd43829ed"></a> <h2 class="memtitle"><span class="permalink"><a href="#a521967f0d966bd98e7e76a8fd43829ed">◆ </a></span>mbedtls_ecp_gen_keypair_base()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_gen_keypair_base </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>G</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> * </td> <td class="paramname"><em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>Q</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int(*)(void *, unsigned char *, size_t) </td> <td class="paramname"><em>f_rng</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>p_rng</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Generate a keypair with configurable base point. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>ECP group </td></tr> <tr><td class="paramname">G</td><td>Chosen base point </td></tr> <tr><td class="paramname">d</td><td>Destination MPI (secret part) </td></tr> <tr><td class="paramname">Q</td><td>Destination point (public part) </td></tr> <tr><td class="paramname">f_rng</td><td>RNG function </td></tr> <tr><td class="paramname">p_rng</td><td>RNG parameter</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code</dd></dl> <dl class="section note"><dt>Note</dt><dd>Uses bare components rather than an <a class="el" href="structmbedtls__ecp__keypair.html" title="ECP key pair structure. ">mbedtls_ecp_keypair</a> structure in order to ease use with other structures such as <a class="el" href="structmbedtls__ecdh__context.html" title="The ECDH context structure. ">mbedtls_ecdh_context</a> of mbedtls_ecdsa_context. </dd></dl> </div> </div> <a id="a2b6e780826b5d6ba4fd5dd5911e490dc"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2b6e780826b5d6ba4fd5dd5911e490dc">◆ </a></span>mbedtls_ecp_group_copy()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_group_copy </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>dst</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>src</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Copy the contents of a group object. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">dst</td><td>Destination group </td></tr> <tr><td class="paramname">src</td><td>Source group</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed </dd></dl> </div> </div> <a id="a97b130596caa2844282181082f66cb90"></a> <h2 class="memtitle"><span class="permalink"><a href="#a97b130596caa2844282181082f66cb90">◆ </a></span>mbedtls_ecp_group_free()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mbedtls_ecp_group_free </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free the components of an ECP group. </p> </div> </div> <a id="a5102f6d44d9f16aece7b2e685c31e5da"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5102f6d44d9f16aece7b2e685c31e5da">◆ </a></span>mbedtls_ecp_group_init()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mbedtls_ecp_group_init </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Initialize a group (to something meaningless) </p> </div> </div> <a id="a64439a12deff8bd1ef92eeab7ebbcf93"></a> <h2 class="memtitle"><span class="permalink"><a href="#a64439a12deff8bd1ef92eeab7ebbcf93">◆ </a></span>mbedtls_ecp_group_load()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_group_load </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a> </td> <td class="paramname"><em>id</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set a group using well-known domain parameters. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>Destination group </td></tr> <tr><td class="paramname">id</td><td>Index in the list of well-known domain parameters</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_MPI_XXX if initialization failed MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE for unkownn groups</dd></dl> <dl class="section note"><dt>Note</dt><dd>Index should be a value of RFC 4492's enum NamedCurve, usually in the form of a MBEDTLS_ECP_DP_XXX macro. </dd></dl> </div> </div> <a id="a84d2fed0c0cdde5201451bb5461aa275"></a> <h2 class="memtitle"><span class="permalink"><a href="#a84d2fed0c0cdde5201451bb5461aa275">◆ </a></span>mbedtls_ecp_grp_id_list()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="ecp_8h.html#af79e530ea8f8416480f805baa20b1a2d">mbedtls_ecp_group_id</a>* mbedtls_ecp_grp_id_list </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get the list of supported curves in order of preferrence (grp_id only) </p> <dl class="section return"><dt>Returns</dt><dd>A statically allocated array, terminated with MBEDTLS_ECP_DP_NONE. </dd></dl> </div> </div> <a id="a17c7d8f0ee985c2ea5713659eccfd955"></a> <h2 class="memtitle"><span class="permalink"><a href="#a17c7d8f0ee985c2ea5713659eccfd955">◆ </a></span>mbedtls_ecp_is_zero()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_is_zero </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>pt</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Tell if a point is zero. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pt</td><td>Point to test</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>1 if point is zero, 0 otherwise </dd></dl> </div> </div> <a id="a04ea689d8d97b423a5d646cd9c53f400"></a> <h2 class="memtitle"><span class="permalink"><a href="#a04ea689d8d97b423a5d646cd9c53f400">◆ </a></span>mbedtls_ecp_keypair_free()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mbedtls_ecp_keypair_free </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> * </td> <td class="paramname"><em>key</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free the components of a key pair. </p> </div> </div> <a id="a770d9e33e938f2033fd3f77e6fa2a697"></a> <h2 class="memtitle"><span class="permalink"><a href="#a770d9e33e938f2033fd3f77e6fa2a697">◆ </a></span>mbedtls_ecp_keypair_init()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mbedtls_ecp_keypair_init </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__keypair.html">mbedtls_ecp_keypair</a> * </td> <td class="paramname"><em>key</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Initialize a key pair (as an invalid one) </p> </div> </div> <a id="a4d005045c302e100c78bdc587e8f0e6a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4d005045c302e100c78bdc587e8f0e6a">◆ </a></span>mbedtls_ecp_mul()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_mul </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>R</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> * </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int(*)(void *, unsigned char *, size_t) </td> <td class="paramname"><em>f_rng</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>p_rng</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Multiplication by an integer: R = m * P (Not thread-safe to use same group in multiple threads) </p> <dl class="section note"><dt>Note</dt><dd>In order to prevent timing attacks, this function executes the exact same sequence of (base field) operations for any valid m. It avoids any if-branch or array index depending on the value of m.</dd> <dd> If f_rng is not NULL, it is used to randomize intermediate results in order to prevent potential timing attacks targeting these results. It is recommended to always provide a non-NULL f_rng (the overhead is negligible).</dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>ECP group </td></tr> <tr><td class="paramname">R</td><td>Destination point </td></tr> <tr><td class="paramname">m</td><td>Integer by which to multiply </td></tr> <tr><td class="paramname">P</td><td>Point to multiply </td></tr> <tr><td class="paramname">f_rng</td><td>RNG function (see notes) </td></tr> <tr><td class="paramname">p_rng</td><td>RNG parameter</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_ECP_INVALID_KEY if m is not a valid privkey or P is not a valid pubkey, MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed </dd></dl> </div> </div> <a id="a09d306c628dccf6256d59f71f30be39c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a09d306c628dccf6256d59f71f30be39c">◆ </a></span>mbedtls_ecp_muladd()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_muladd </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>R</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> * </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__mpi.html">mbedtls_mpi</a> * </td> <td class="paramname"><em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>Q</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Multiplication and addition of two points by integers: R = m * P + n * Q (Not thread-safe to use same group in multiple threads) </p> <dl class="section note"><dt>Note</dt><dd>In contrast to <a class="el" href="ecp_8h.html#a4d005045c302e100c78bdc587e8f0e6a" title="Multiplication by an integer: R = m * P (Not thread-safe to use same group in multiple threads) ...">mbedtls_ecp_mul()</a>, this function does not guarantee a constant execution flow and timing.</dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>ECP group </td></tr> <tr><td class="paramname">R</td><td>Destination point </td></tr> <tr><td class="paramname">m</td><td>Integer by which to multiply P </td></tr> <tr><td class="paramname">P</td><td>Point to multiply by m </td></tr> <tr><td class="paramname">n</td><td>Integer by which to multiply Q </td></tr> <tr><td class="paramname">Q</td><td>Point to be multiplied by n</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_ECP_INVALID_KEY if m or n is not a valid privkey or P or Q is not a valid pubkey, MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed </dd></dl> </div> </div> <a id="a5e7676ea5e822494f5208751766daa32"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5e7676ea5e822494f5208751766daa32">◆ </a></span>mbedtls_ecp_point_cmp()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_point_cmp </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>Q</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Compare two points. </p> <dl class="section note"><dt>Note</dt><dd>This assumes the points are normalized. Otherwise, they may compare as "not equal" even if they are.</dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">P</td><td>First point to compare </td></tr> <tr><td class="paramname">Q</td><td>Second point to compare</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if the points are equal, MBEDTLS_ERR_ECP_BAD_INPUT_DATA otherwise </dd></dl> </div> </div> <a id="a87004f74814cc59a9ef757aea444098d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a87004f74814cc59a9ef757aea444098d">◆ </a></span>mbedtls_ecp_point_free()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mbedtls_ecp_point_free </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>pt</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free the components of a point. </p> </div> </div> <a id="ae069f80bc2f9cf2215c34430a9ccd924"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae069f80bc2f9cf2215c34430a9ccd924">◆ </a></span>mbedtls_ecp_point_init()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mbedtls_ecp_point_init </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>pt</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Initialize a point (as zero) </p> </div> </div> <a id="a08eb064f95d4ebd2d7822234f7b64b4d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a08eb064f95d4ebd2d7822234f7b64b4d">◆ </a></span>mbedtls_ecp_point_read_binary()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_point_read_binary </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>ilen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Import a point from unsigned binary data. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>Group to which the point should belong </td></tr> <tr><td class="paramname">P</td><td>Point to import </td></tr> <tr><td class="paramname">buf</td><td>Input buffer </td></tr> <tr><td class="paramname">ilen</td><td>Actual length of input</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid, MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the point format is not implemented.</dd></dl> <dl class="section note"><dt>Note</dt><dd>This function does NOT check that the point actually belongs to the given group, see <a class="el" href="ecp_8h.html#ae8768744c65fc71137b496f10cc02370" title="Check that a point is a valid public key on this curve. ">mbedtls_ecp_check_pubkey()</a> for that. </dd></dl> </div> </div> <a id="a63bfda35c538b840a78371be788675dd"></a> <h2 class="memtitle"><span class="permalink"><a href="#a63bfda35c538b840a78371be788675dd">◆ </a></span>mbedtls_ecp_point_read_string()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_point_read_string </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>radix</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>y</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Import a non-zero point from two ASCII strings. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">P</td><td>Destination point </td></tr> <tr><td class="paramname">radix</td><td>Input numeric base </td></tr> <tr><td class="paramname">x</td><td>First affine coordinate as a null-terminated string </td></tr> <tr><td class="paramname">y</td><td>Second affine coordinate as a null-terminated string</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or a MBEDTLS_ERR_MPI_XXX error code </dd></dl> </div> </div> <a id="af7d35a6631f662cc279eed8c4f0f7ba6"></a> <h2 class="memtitle"><span class="permalink"><a href="#af7d35a6631f662cc279eed8c4f0f7ba6">◆ </a></span>mbedtls_ecp_point_write_binary()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_point_write_binary </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>P</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>format</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t * </td> <td class="paramname"><em>olen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>buflen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Export a point into unsigned binary data. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>Group to which the point should belong </td></tr> <tr><td class="paramname">P</td><td>Point to export </td></tr> <tr><td class="paramname">format</td><td>Point format, should be a MBEDTLS_ECP_PF_XXX macro </td></tr> <tr><td class="paramname">olen</td><td>Length of the actual output </td></tr> <tr><td class="paramname">buf</td><td>Output buffer </td></tr> <tr><td class="paramname">buflen</td><td>Length of the output buffer</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or MBEDTLS_ERR_ECP_BAD_INPUT_DATA or MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL </dd></dl> </div> </div> <a id="af869b14c9dcd0d4314151caee7d7e50e"></a> <h2 class="memtitle"><span class="permalink"><a href="#af869b14c9dcd0d4314151caee7d7e50e">◆ </a></span>mbedtls_ecp_self_test()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_self_test </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>verbose</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Checkup routine. </p> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or 1 if a test failed </dd></dl> </div> </div> <a id="ac18b1dfe4223ac6dc6c637b2edc4a481"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac18b1dfe4223ac6dc6c637b2edc4a481">◆ </a></span>mbedtls_ecp_set_zero()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_set_zero </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>pt</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Set a point to zero. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pt</td><td>Destination point</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed </dd></dl> </div> </div> <a id="acfd0cdb926358713b31c48b2e4dd9e58"></a> <h2 class="memtitle"><span class="permalink"><a href="#acfd0cdb926358713b31c48b2e4dd9e58">◆ </a></span>mbedtls_ecp_tls_read_group()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_tls_read_group </td> <td>(</td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char ** </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set a group from a TLS ECParameters record. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>Destination group </td></tr> <tr><td class="paramname">buf</td><td>&(Start of input buffer) </td></tr> <tr><td class="paramname">len</td><td>Buffer length</td></tr> </table> </dd> </dl> <dl class="section note"><dt>Note</dt><dd>buf is updated to point right after ECParameters on exit</dd></dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_MPI_XXX if initialization failed MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid </dd></dl> </div> </div> <a id="a883eb26a1be64c491ea0354189ae2604"></a> <h2 class="memtitle"><span class="permalink"><a href="#a883eb26a1be64c491ea0354189ae2604">◆ </a></span>mbedtls_ecp_tls_read_point()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_tls_read_point </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>pt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char ** </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>len</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Import a point from a TLS ECPoint record. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>ECP group used </td></tr> <tr><td class="paramname">pt</td><td>Destination point </td></tr> <tr><td class="paramname">buf</td><td>$(Start of input buffer) </td></tr> <tr><td class="paramname">len</td><td>Buffer length</td></tr> </table> </dd> </dl> <dl class="section note"><dt>Note</dt><dd>buf is updated to point right after the ECPoint on exit</dd></dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, MBEDTLS_ERR_MPI_XXX if initialization failed MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid </dd></dl> </div> </div> <a id="a2ae23f66900fe6f3ef50eb30af4143d0"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2ae23f66900fe6f3ef50eb30af4143d0">◆ </a></span>mbedtls_ecp_tls_write_group()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_tls_write_group </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t * </td> <td class="paramname"><em>olen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>blen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Write the TLS ECParameters record for a group. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>ECP group used </td></tr> <tr><td class="paramname">olen</td><td>Number of bytes actually written </td></tr> <tr><td class="paramname">buf</td><td>Buffer to write to </td></tr> <tr><td class="paramname">blen</td><td>Buffer length</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL </dd></dl> </div> </div> <a id="aa98adfe68b926724607d8fcab61397a9"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa98adfe68b926724607d8fcab61397a9">◆ </a></span>mbedtls_ecp_tls_write_point()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int mbedtls_ecp_tls_write_point </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__group.html">mbedtls_ecp_group</a> * </td> <td class="paramname"><em>grp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structmbedtls__ecp__point.html">mbedtls_ecp_point</a> * </td> <td class="paramname"><em>pt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>format</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t * </td> <td class="paramname"><em>olen</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned char * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>blen</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Export a point as a TLS ECPoint record. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">grp</td><td>ECP group used </td></tr> <tr><td class="paramname">pt</td><td>Point to export </td></tr> <tr><td class="paramname">format</td><td>Export format </td></tr> <tr><td class="paramname">olen</td><td>length of data written </td></tr> <tr><td class="paramname">buf</td><td>Buffer to write to </td></tr> <tr><td class="paramname">blen</td><td>Buffer length</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if successful, or MBEDTLS_ERR_ECP_BAD_INPUT_DATA or MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Tue Jan 1 2019 18:27:18 for mbed TLS v2.7.8 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.13 </small></address> </body> </html>