1ae771770SStanislav Sedov<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2ae771770SStanislav Sedov<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 3ae771770SStanislav Sedov<title>Heimdal crypto library: Diffie-Hellman functions</title> 4ae771770SStanislav Sedov<link href="doxygen.css" rel="stylesheet" type="text/css"> 5ae771770SStanislav Sedov<link href="tabs.css" rel="stylesheet" type="text/css"> 6ae771770SStanislav Sedov</head><body> 7ae771770SStanislav Sedov<p> 8ae771770SStanislav Sedov<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a> 9ae771770SStanislav Sedov</p> 10ae771770SStanislav Sedov<!-- end of header marker --> 11ae771770SStanislav Sedov<!-- Generated by Doxygen 1.5.6 --> 12ae771770SStanislav Sedov<div class="navigation" id="top"> 13ae771770SStanislav Sedov <div class="tabs"> 14ae771770SStanislav Sedov <ul> 15ae771770SStanislav Sedov <li><a href="index.html"><span>Main Page</span></a></li> 16ae771770SStanislav Sedov <li><a href="modules.html"><span>Modules</span></a></li> 17ae771770SStanislav Sedov <li><a href="examples.html"><span>Examples</span></a></li> 18ae771770SStanislav Sedov </ul> 19ae771770SStanislav Sedov </div> 20ae771770SStanislav Sedov</div> 21ae771770SStanislav Sedov<div class="contents"> 22ae771770SStanislav Sedov<h1>Diffie-Hellman functions</h1><table border="0" cellpadding="0" cellspacing="0"> 23ae771770SStanislav Sedov<tr><td></td></tr> 24ae771770SStanislav Sedov<tr><td colspan="2"><br><h2>Functions</h2></td></tr> 25ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">const DH_METHOD * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gbfe13af1fef654a94a9be268df6d8809">DH_ltm_method</a> (void)</td></tr> 26ae771770SStanislav Sedov 27ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">DH * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g76c6e12bd1f0b9977d80fee83b086031">DH_new</a> (void)</td></tr> 28ae771770SStanislav Sedov 29ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">DH * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g2e97e03aee56c6094bb7fd6322b3ce68">DH_new_method</a> (ENGINE *engine)</td></tr> 30ae771770SStanislav Sedov 31ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g1f15312ca21e290ee714e86578820c35">DH_free</a> (DH *dh)</td></tr> 32ae771770SStanislav Sedov 33ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gf7c3e51cba326865c3684012c2337df1">DH_up_ref</a> (DH *dh)</td></tr> 34ae771770SStanislav Sedov 35ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g9e1fdd62e3bfe4b671dbfc363f0e6297">DH_size</a> (const DH *dh)</td></tr> 36ae771770SStanislav Sedov 37ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g7a03e7589a8473ed34cf2a4177709c0e">DH_set_ex_data</a> (DH *dh, int idx, void *data)</td></tr> 38ae771770SStanislav Sedov 39ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g25fff6e977829c49410f046b8cc3471d">DH_get_ex_data</a> (DH *dh, int idx)</td></tr> 40ae771770SStanislav Sedov 41ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g11ef051e93bc408f3e7ba77d44c5d3cb">DH_generate_parameters_ex</a> (DH *dh, int prime_len, int generator, BN_GENCB *cb)</td></tr> 42ae771770SStanislav Sedov 43ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g8995ef180ab448fdedde5da65f6ea249">DH_check_pubkey</a> (const DH *dh, const BIGNUM *pub_key, int *codes)</td></tr> 44ae771770SStanislav Sedov 45ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gb90ec6b9e64f62c05754731c0c13ea01">DH_generate_key</a> (DH *dh)</td></tr> 46ae771770SStanislav Sedov 47ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#gf8b793df62108341ed3dc54a0ca75ca8">DH_compute_key</a> (unsigned char *shared_key, const BIGNUM *peer_pub_key, DH *dh)</td></tr> 48ae771770SStanislav Sedov 49ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#ge8f6c9ec1c2e4904439227a952980fdd">DH_set_method</a> (DH *dh, const DH_METHOD *method)</td></tr> 50ae771770SStanislav Sedov 51ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">const DH_METHOD * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g1e3dc0dbc1ba678716d28654c0eded84">DH_null_method</a> (void)</td></tr> 52ae771770SStanislav Sedov 53ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#g6c63e1e8af5957d7f798439c854d06b6">DH_set_default_method</a> (const DH_METHOD *meth)</td></tr> 54ae771770SStanislav Sedov 55ae771770SStanislav Sedov<tr><td class="memItemLeft" nowrap align="right" valign="top">const DH_METHOD * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__dh.html#ge2b07654d087940e36e7583887d8b070">DH_get_default_method</a> (void)</td></tr> 56ae771770SStanislav Sedov 57ae771770SStanislav Sedov</table> 58ae771770SStanislav Sedov<hr><a name="_details"></a><h2>Detailed Description</h2> 59ae771770SStanislav SedovSee the <a class="el" href="page_dh.html">DH - Diffie-Hellman key exchange</a> for description and examples. <hr><h2>Function Documentation</h2> 60ae771770SStanislav Sedov<a class="anchor" name="g8995ef180ab448fdedde5da65f6ea249"></a><!-- doxytag: member="dh.c::DH_check_pubkey" ref="g8995ef180ab448fdedde5da65f6ea249" args="(const DH *dh, const BIGNUM *pub_key, int *codes)" --> 61ae771770SStanislav Sedov<div class="memitem"> 62ae771770SStanislav Sedov<div class="memproto"> 63ae771770SStanislav Sedov <table class="memname"> 64ae771770SStanislav Sedov <tr> 65ae771770SStanislav Sedov <td class="memname">int DH_check_pubkey </td> 66ae771770SStanislav Sedov <td>(</td> 67ae771770SStanislav Sedov <td class="paramtype">const DH * </td> 68ae771770SStanislav Sedov <td class="paramname"> <em>dh</em>, </td> 69ae771770SStanislav Sedov </tr> 70ae771770SStanislav Sedov <tr> 71ae771770SStanislav Sedov <td class="paramkey"></td> 72ae771770SStanislav Sedov <td></td> 73ae771770SStanislav Sedov <td class="paramtype">const BIGNUM * </td> 74ae771770SStanislav Sedov <td class="paramname"> <em>pub_key</em>, </td> 75ae771770SStanislav Sedov </tr> 76ae771770SStanislav Sedov <tr> 77ae771770SStanislav Sedov <td class="paramkey"></td> 78ae771770SStanislav Sedov <td></td> 79ae771770SStanislav Sedov <td class="paramtype">int * </td> 80ae771770SStanislav Sedov <td class="paramname"> <em>codes</em></td><td> </td> 81ae771770SStanislav Sedov </tr> 82ae771770SStanislav Sedov <tr> 83ae771770SStanislav Sedov <td></td> 84ae771770SStanislav Sedov <td>)</td> 85ae771770SStanislav Sedov <td></td><td></td><td></td> 86ae771770SStanislav Sedov </tr> 87ae771770SStanislav Sedov </table> 88ae771770SStanislav Sedov</div> 89ae771770SStanislav Sedov<div class="memdoc"> 90ae771770SStanislav Sedov 91ae771770SStanislav Sedov<p> 92ae771770SStanislav SedovCheck that the public key is sane.<p> 93ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 94ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 95ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>the local peer DH parameters. </td></tr> 96ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>pub_key</em> </td><td>the remote peer public key parameters. </td></tr> 97ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>codes</em> </td><td>return that the failures of the pub_key are.</td></tr> 98ae771770SStanislav Sedov </table> 99ae771770SStanislav Sedov</dl> 100ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure and *codes is set the the combined fail check for the public key </dd></dl> 101ae771770SStanislav Sedov 102ae771770SStanislav Sedov<p> 103ae771770SStanislav SedovChecks that the function performs are:<ul> 104ae771770SStanislav Sedov<li>pub_key is not negative</li></ul> 105ae771770SStanislav Sedov<p> 106ae771770SStanislav Sedov<ul> 107ae771770SStanislav Sedov<li>pub_key > 1 and pub_key < p - 1, to avoid small subgroups attack.</li></ul> 108ae771770SStanislav Sedov<p> 109ae771770SStanislav Sedov<ul> 110ae771770SStanislav Sedov<li>if g == 2, pub_key have more then one bit set, if bits set is 1, log_2(pub_key) is trival </li></ul> 111ae771770SStanislav Sedov 112ae771770SStanislav Sedov</div> 113ae771770SStanislav Sedov</div><p> 114ae771770SStanislav Sedov<a class="anchor" name="gf8b793df62108341ed3dc54a0ca75ca8"></a><!-- doxytag: member="dh.c::DH_compute_key" ref="gf8b793df62108341ed3dc54a0ca75ca8" args="(unsigned char *shared_key, const BIGNUM *peer_pub_key, DH *dh)" --> 115ae771770SStanislav Sedov<div class="memitem"> 116ae771770SStanislav Sedov<div class="memproto"> 117ae771770SStanislav Sedov <table class="memname"> 118ae771770SStanislav Sedov <tr> 119ae771770SStanislav Sedov <td class="memname">int DH_compute_key </td> 120ae771770SStanislav Sedov <td>(</td> 121ae771770SStanislav Sedov <td class="paramtype">unsigned char * </td> 122ae771770SStanislav Sedov <td class="paramname"> <em>shared_key</em>, </td> 123ae771770SStanislav Sedov </tr> 124ae771770SStanislav Sedov <tr> 125ae771770SStanislav Sedov <td class="paramkey"></td> 126ae771770SStanislav Sedov <td></td> 127ae771770SStanislav Sedov <td class="paramtype">const BIGNUM * </td> 128ae771770SStanislav Sedov <td class="paramname"> <em>peer_pub_key</em>, </td> 129ae771770SStanislav Sedov </tr> 130ae771770SStanislav Sedov <tr> 131ae771770SStanislav Sedov <td class="paramkey"></td> 132ae771770SStanislav Sedov <td></td> 133ae771770SStanislav Sedov <td class="paramtype">DH * </td> 134ae771770SStanislav Sedov <td class="paramname"> <em>dh</em></td><td> </td> 135ae771770SStanislav Sedov </tr> 136ae771770SStanislav Sedov <tr> 137ae771770SStanislav Sedov <td></td> 138ae771770SStanislav Sedov <td>)</td> 139ae771770SStanislav Sedov <td></td><td></td><td></td> 140ae771770SStanislav Sedov </tr> 141ae771770SStanislav Sedov </table> 142ae771770SStanislav Sedov</div> 143ae771770SStanislav Sedov<div class="memdoc"> 144ae771770SStanislav Sedov 145ae771770SStanislav Sedov<p> 146ae771770SStanislav SedovComplute the shared secret key.<p> 147ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 148ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 149ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>shared_key</em> </td><td>the resulting shared key, need to be at least <a class="el" href="group__hcrypto__dh.html#g9e1fdd62e3bfe4b671dbfc363f0e6297">DH_size()</a> large. </td></tr> 150ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>peer_pub_key</em> </td><td>the peer's public key. </td></tr> 151ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>the dh key pair.</td></tr> 152ae771770SStanislav Sedov </table> 153ae771770SStanislav Sedov</dl> 154ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl> 155ae771770SStanislav Sedov 156ae771770SStanislav Sedov<p> 157ae771770SStanislav SedovChecks that the pubkey passed in is valid using <a class="el" href="group__hcrypto__dh.html#g8995ef180ab448fdedde5da65f6ea249">DH_check_pubkey()</a>. 158ae771770SStanislav Sedov</div> 159ae771770SStanislav Sedov</div><p> 160ae771770SStanislav Sedov<a class="anchor" name="g1f15312ca21e290ee714e86578820c35"></a><!-- doxytag: member="dh.c::DH_free" ref="g1f15312ca21e290ee714e86578820c35" args="(DH *dh)" --> 161ae771770SStanislav Sedov<div class="memitem"> 162ae771770SStanislav Sedov<div class="memproto"> 163ae771770SStanislav Sedov <table class="memname"> 164ae771770SStanislav Sedov <tr> 165ae771770SStanislav Sedov <td class="memname">void DH_free </td> 166ae771770SStanislav Sedov <td>(</td> 167ae771770SStanislav Sedov <td class="paramtype">DH * </td> 168ae771770SStanislav Sedov <td class="paramname"> <em>dh</em> </td> 169ae771770SStanislav Sedov <td> ) </td> 170ae771770SStanislav Sedov <td></td> 171ae771770SStanislav Sedov </tr> 172ae771770SStanislav Sedov </table> 173ae771770SStanislav Sedov</div> 174ae771770SStanislav Sedov<div class="memdoc"> 175ae771770SStanislav Sedov 176ae771770SStanislav Sedov<p> 177ae771770SStanislav SedovFree a DH object and release related resources, like ENGINE, that the object was using.<p> 178ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 179ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 180ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>object to be freed. </td></tr> 181ae771770SStanislav Sedov </table> 182ae771770SStanislav Sedov</dl> 183ae771770SStanislav Sedov 184ae771770SStanislav Sedov</div> 185ae771770SStanislav Sedov</div><p> 186ae771770SStanislav Sedov<a class="anchor" name="gb90ec6b9e64f62c05754731c0c13ea01"></a><!-- doxytag: member="dh.c::DH_generate_key" ref="gb90ec6b9e64f62c05754731c0c13ea01" args="(DH *dh)" --> 187ae771770SStanislav Sedov<div class="memitem"> 188ae771770SStanislav Sedov<div class="memproto"> 189ae771770SStanislav Sedov <table class="memname"> 190ae771770SStanislav Sedov <tr> 191ae771770SStanislav Sedov <td class="memname">int DH_generate_key </td> 192ae771770SStanislav Sedov <td>(</td> 193ae771770SStanislav Sedov <td class="paramtype">DH * </td> 194ae771770SStanislav Sedov <td class="paramname"> <em>dh</em> </td> 195ae771770SStanislav Sedov <td> ) </td> 196ae771770SStanislav Sedov <td></td> 197ae771770SStanislav Sedov </tr> 198ae771770SStanislav Sedov </table> 199ae771770SStanislav Sedov</div> 200ae771770SStanislav Sedov<div class="memdoc"> 201ae771770SStanislav Sedov 202ae771770SStanislav Sedov<p> 203ae771770SStanislav SedovGenerate a new DH private-public key pair. The dh parameter must be allocted first with <a class="el" href="group__hcrypto__dh.html#g76c6e12bd1f0b9977d80fee83b086031">DH_new()</a>. dh->p and dp->g must be set.<p> 204ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 205ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 206ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>dh parameter.</td></tr> 207ae771770SStanislav Sedov </table> 208ae771770SStanislav Sedov</dl> 209ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl> 210ae771770SStanislav Sedov 211ae771770SStanislav Sedov</div> 212ae771770SStanislav Sedov</div><p> 213ae771770SStanislav Sedov<a class="anchor" name="g11ef051e93bc408f3e7ba77d44c5d3cb"></a><!-- doxytag: member="dh.c::DH_generate_parameters_ex" ref="g11ef051e93bc408f3e7ba77d44c5d3cb" args="(DH *dh, int prime_len, int generator, BN_GENCB *cb)" --> 214ae771770SStanislav Sedov<div class="memitem"> 215ae771770SStanislav Sedov<div class="memproto"> 216ae771770SStanislav Sedov <table class="memname"> 217ae771770SStanislav Sedov <tr> 218ae771770SStanislav Sedov <td class="memname">int DH_generate_parameters_ex </td> 219ae771770SStanislav Sedov <td>(</td> 220ae771770SStanislav Sedov <td class="paramtype">DH * </td> 221ae771770SStanislav Sedov <td class="paramname"> <em>dh</em>, </td> 222ae771770SStanislav Sedov </tr> 223ae771770SStanislav Sedov <tr> 224ae771770SStanislav Sedov <td class="paramkey"></td> 225ae771770SStanislav Sedov <td></td> 226ae771770SStanislav Sedov <td class="paramtype">int </td> 227ae771770SStanislav Sedov <td class="paramname"> <em>prime_len</em>, </td> 228ae771770SStanislav Sedov </tr> 229ae771770SStanislav Sedov <tr> 230ae771770SStanislav Sedov <td class="paramkey"></td> 231ae771770SStanislav Sedov <td></td> 232ae771770SStanislav Sedov <td class="paramtype">int </td> 233ae771770SStanislav Sedov <td class="paramname"> <em>generator</em>, </td> 234ae771770SStanislav Sedov </tr> 235ae771770SStanislav Sedov <tr> 236ae771770SStanislav Sedov <td class="paramkey"></td> 237ae771770SStanislav Sedov <td></td> 238ae771770SStanislav Sedov <td class="paramtype">BN_GENCB * </td> 239ae771770SStanislav Sedov <td class="paramname"> <em>cb</em></td><td> </td> 240ae771770SStanislav Sedov </tr> 241ae771770SStanislav Sedov <tr> 242ae771770SStanislav Sedov <td></td> 243ae771770SStanislav Sedov <td>)</td> 244ae771770SStanislav Sedov <td></td><td></td><td></td> 245ae771770SStanislav Sedov </tr> 246ae771770SStanislav Sedov </table> 247ae771770SStanislav Sedov</div> 248ae771770SStanislav Sedov<div class="memdoc"> 249ae771770SStanislav Sedov 250ae771770SStanislav Sedov<p> 251ae771770SStanislav SedovGenerate DH parameters for the DH object give parameters.<p> 252ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 253ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 254ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>The DH object to generate parameters for. </td></tr> 255ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>prime_len</em> </td><td>length of the prime </td></tr> 256ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>generator</em> </td><td>generator, g </td></tr> 257ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>cb</em> </td><td>Callback parameters to show progress, can be NULL.</td></tr> 258ae771770SStanislav Sedov </table> 259ae771770SStanislav Sedov</dl> 260ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>the maximum size in bytes of the out data. </dd></dl> 261ae771770SStanislav Sedov 262ae771770SStanislav Sedov</div> 263ae771770SStanislav Sedov</div><p> 264ae771770SStanislav Sedov<a class="anchor" name="ge2b07654d087940e36e7583887d8b070"></a><!-- doxytag: member="dh.c::DH_get_default_method" ref="ge2b07654d087940e36e7583887d8b070" args="(void)" --> 265ae771770SStanislav Sedov<div class="memitem"> 266ae771770SStanislav Sedov<div class="memproto"> 267ae771770SStanislav Sedov <table class="memname"> 268ae771770SStanislav Sedov <tr> 269ae771770SStanislav Sedov <td class="memname">const DH_METHOD* DH_get_default_method </td> 270ae771770SStanislav Sedov <td>(</td> 271ae771770SStanislav Sedov <td class="paramtype">void </td> 272ae771770SStanislav Sedov <td class="paramname"> </td> 273ae771770SStanislav Sedov <td> ) </td> 274ae771770SStanislav Sedov <td></td> 275ae771770SStanislav Sedov </tr> 276ae771770SStanislav Sedov </table> 277ae771770SStanislav Sedov</div> 278ae771770SStanislav Sedov<div class="memdoc"> 279ae771770SStanislav Sedov 280ae771770SStanislav Sedov<p> 281ae771770SStanislav SedovReturn the default DH implementation.<p> 282ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to a DH_METHOD. </dd></dl> 283ae771770SStanislav Sedov 284ae771770SStanislav Sedov</div> 285ae771770SStanislav Sedov</div><p> 286ae771770SStanislav Sedov<a class="anchor" name="g25fff6e977829c49410f046b8cc3471d"></a><!-- doxytag: member="dh.c::DH_get_ex_data" ref="g25fff6e977829c49410f046b8cc3471d" args="(DH *dh, int idx)" --> 287ae771770SStanislav Sedov<div class="memitem"> 288ae771770SStanislav Sedov<div class="memproto"> 289ae771770SStanislav Sedov <table class="memname"> 290ae771770SStanislav Sedov <tr> 291ae771770SStanislav Sedov <td class="memname">void* DH_get_ex_data </td> 292ae771770SStanislav Sedov <td>(</td> 293ae771770SStanislav Sedov <td class="paramtype">DH * </td> 294ae771770SStanislav Sedov <td class="paramname"> <em>dh</em>, </td> 295ae771770SStanislav Sedov </tr> 296ae771770SStanislav Sedov <tr> 297ae771770SStanislav Sedov <td class="paramkey"></td> 298ae771770SStanislav Sedov <td></td> 299ae771770SStanislav Sedov <td class="paramtype">int </td> 300ae771770SStanislav Sedov <td class="paramname"> <em>idx</em></td><td> </td> 301ae771770SStanislav Sedov </tr> 302ae771770SStanislav Sedov <tr> 303ae771770SStanislav Sedov <td></td> 304ae771770SStanislav Sedov <td>)</td> 305ae771770SStanislav Sedov <td></td><td></td><td></td> 306ae771770SStanislav Sedov </tr> 307ae771770SStanislav Sedov </table> 308ae771770SStanislav Sedov</div> 309ae771770SStanislav Sedov<div class="memdoc"> 310ae771770SStanislav Sedov 311ae771770SStanislav Sedov<p> 312ae771770SStanislav SedovGet the data for index idx in the DH object.<p> 313ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 314ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 315ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>DH object. </td></tr> 316ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>idx</em> </td><td>index to get the data for.</td></tr> 317ae771770SStanislav Sedov </table> 318ae771770SStanislav Sedov</dl> 319ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>the object store in index idx </dd></dl> 320ae771770SStanislav Sedov 321ae771770SStanislav Sedov</div> 322ae771770SStanislav Sedov</div><p> 323ae771770SStanislav Sedov<a class="anchor" name="gbfe13af1fef654a94a9be268df6d8809"></a><!-- doxytag: member="dh-ltm.c::DH_ltm_method" ref="gbfe13af1fef654a94a9be268df6d8809" args="(void)" --> 324ae771770SStanislav Sedov<div class="memitem"> 325ae771770SStanislav Sedov<div class="memproto"> 326ae771770SStanislav Sedov <table class="memname"> 327ae771770SStanislav Sedov <tr> 328ae771770SStanislav Sedov <td class="memname">const DH_METHOD* DH_ltm_method </td> 329ae771770SStanislav Sedov <td>(</td> 330ae771770SStanislav Sedov <td class="paramtype">void </td> 331ae771770SStanislav Sedov <td class="paramname"> </td> 332ae771770SStanislav Sedov <td> ) </td> 333ae771770SStanislav Sedov <td></td> 334ae771770SStanislav Sedov </tr> 335ae771770SStanislav Sedov </table> 336ae771770SStanislav Sedov</div> 337ae771770SStanislav Sedov<div class="memdoc"> 338ae771770SStanislav Sedov 339ae771770SStanislav Sedov<p> 340ae771770SStanislav SedovDH implementation using libtommath.<p> 341ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>the DH_METHOD for the DH implementation using libtommath. </dd></dl> 342ae771770SStanislav Sedov 343ae771770SStanislav Sedov</div> 344ae771770SStanislav Sedov</div><p> 345ae771770SStanislav Sedov<a class="anchor" name="g76c6e12bd1f0b9977d80fee83b086031"></a><!-- doxytag: member="dh.c::DH_new" ref="g76c6e12bd1f0b9977d80fee83b086031" args="(void)" --> 346ae771770SStanislav Sedov<div class="memitem"> 347ae771770SStanislav Sedov<div class="memproto"> 348ae771770SStanislav Sedov <table class="memname"> 349ae771770SStanislav Sedov <tr> 350ae771770SStanislav Sedov <td class="memname">DH* DH_new </td> 351ae771770SStanislav Sedov <td>(</td> 352ae771770SStanislav Sedov <td class="paramtype">void </td> 353ae771770SStanislav Sedov <td class="paramname"> </td> 354ae771770SStanislav Sedov <td> ) </td> 355ae771770SStanislav Sedov <td></td> 356ae771770SStanislav Sedov </tr> 357ae771770SStanislav Sedov </table> 358ae771770SStanislav Sedov</div> 359ae771770SStanislav Sedov<div class="memdoc"> 360ae771770SStanislav Sedov 361ae771770SStanislav Sedov<p> 362ae771770SStanislav SedovCreate a new DH object using DH_new_method(NULL), see <a class="el" href="group__hcrypto__dh.html#g2e97e03aee56c6094bb7fd6322b3ce68">DH_new_method()</a>.<p> 363ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly allocated DH object. </dd></dl> 364ae771770SStanislav Sedov 365ae771770SStanislav Sedov</div> 366ae771770SStanislav Sedov</div><p> 367ae771770SStanislav Sedov<a class="anchor" name="g2e97e03aee56c6094bb7fd6322b3ce68"></a><!-- doxytag: member="dh.c::DH_new_method" ref="g2e97e03aee56c6094bb7fd6322b3ce68" args="(ENGINE *engine)" --> 368ae771770SStanislav Sedov<div class="memitem"> 369ae771770SStanislav Sedov<div class="memproto"> 370ae771770SStanislav Sedov <table class="memname"> 371ae771770SStanislav Sedov <tr> 372ae771770SStanislav Sedov <td class="memname">DH* DH_new_method </td> 373ae771770SStanislav Sedov <td>(</td> 374ae771770SStanislav Sedov <td class="paramtype">ENGINE * </td> 375ae771770SStanislav Sedov <td class="paramname"> <em>engine</em> </td> 376ae771770SStanislav Sedov <td> ) </td> 377ae771770SStanislav Sedov <td></td> 378ae771770SStanislav Sedov </tr> 379ae771770SStanislav Sedov </table> 380ae771770SStanislav Sedov</div> 381ae771770SStanislav Sedov<div class="memdoc"> 382ae771770SStanislav Sedov 383ae771770SStanislav Sedov<p> 384ae771770SStanislav SedovCreate a new DH object from the given engine, if the NULL is used, the default engine is used. Free the DH object with <a class="el" href="group__hcrypto__dh.html#g1f15312ca21e290ee714e86578820c35">DH_free()</a>.<p> 385ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 386ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 387ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>engine</em> </td><td>The engine to use to allocate the DH object.</td></tr> 388ae771770SStanislav Sedov </table> 389ae771770SStanislav Sedov</dl> 390ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly allocated DH object. </dd></dl> 391ae771770SStanislav Sedov 392ae771770SStanislav Sedov</div> 393ae771770SStanislav Sedov</div><p> 394ae771770SStanislav Sedov<a class="anchor" name="g1e3dc0dbc1ba678716d28654c0eded84"></a><!-- doxytag: member="dh.c::DH_null_method" ref="g1e3dc0dbc1ba678716d28654c0eded84" args="(void)" --> 395ae771770SStanislav Sedov<div class="memitem"> 396ae771770SStanislav Sedov<div class="memproto"> 397ae771770SStanislav Sedov <table class="memname"> 398ae771770SStanislav Sedov <tr> 399ae771770SStanislav Sedov <td class="memname">const DH_METHOD* DH_null_method </td> 400ae771770SStanislav Sedov <td>(</td> 401ae771770SStanislav Sedov <td class="paramtype">void </td> 402ae771770SStanislav Sedov <td class="paramname"> </td> 403ae771770SStanislav Sedov <td> ) </td> 404ae771770SStanislav Sedov <td></td> 405ae771770SStanislav Sedov </tr> 406ae771770SStanislav Sedov </table> 407ae771770SStanislav Sedov</div> 408ae771770SStanislav Sedov<div class="memdoc"> 409ae771770SStanislav Sedov 410ae771770SStanislav Sedov<p> 411ae771770SStanislav SedovReturn the dummy DH implementation.<p> 412ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to a DH_METHOD. </dd></dl> 413ae771770SStanislav Sedov 414ae771770SStanislav Sedov</div> 415ae771770SStanislav Sedov</div><p> 416ae771770SStanislav Sedov<a class="anchor" name="g6c63e1e8af5957d7f798439c854d06b6"></a><!-- doxytag: member="dh.c::DH_set_default_method" ref="g6c63e1e8af5957d7f798439c854d06b6" args="(const DH_METHOD *meth)" --> 417ae771770SStanislav Sedov<div class="memitem"> 418ae771770SStanislav Sedov<div class="memproto"> 419ae771770SStanislav Sedov <table class="memname"> 420ae771770SStanislav Sedov <tr> 421ae771770SStanislav Sedov <td class="memname">void DH_set_default_method </td> 422ae771770SStanislav Sedov <td>(</td> 423ae771770SStanislav Sedov <td class="paramtype">const DH_METHOD * </td> 424ae771770SStanislav Sedov <td class="paramname"> <em>meth</em> </td> 425ae771770SStanislav Sedov <td> ) </td> 426ae771770SStanislav Sedov <td></td> 427ae771770SStanislav Sedov </tr> 428ae771770SStanislav Sedov </table> 429ae771770SStanislav Sedov</div> 430ae771770SStanislav Sedov<div class="memdoc"> 431ae771770SStanislav Sedov 432ae771770SStanislav Sedov<p> 433ae771770SStanislav SedovSet the default DH implementation.<p> 434ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 435ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 436ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>meth</em> </td><td>pointer to a DH_METHOD. </td></tr> 437ae771770SStanislav Sedov </table> 438ae771770SStanislav Sedov</dl> 439ae771770SStanislav Sedov 440ae771770SStanislav Sedov</div> 441ae771770SStanislav Sedov</div><p> 442ae771770SStanislav Sedov<a class="anchor" name="g7a03e7589a8473ed34cf2a4177709c0e"></a><!-- doxytag: member="dh.c::DH_set_ex_data" ref="g7a03e7589a8473ed34cf2a4177709c0e" args="(DH *dh, int idx, void *data)" --> 443ae771770SStanislav Sedov<div class="memitem"> 444ae771770SStanislav Sedov<div class="memproto"> 445ae771770SStanislav Sedov <table class="memname"> 446ae771770SStanislav Sedov <tr> 447ae771770SStanislav Sedov <td class="memname">int DH_set_ex_data </td> 448ae771770SStanislav Sedov <td>(</td> 449ae771770SStanislav Sedov <td class="paramtype">DH * </td> 450ae771770SStanislav Sedov <td class="paramname"> <em>dh</em>, </td> 451ae771770SStanislav Sedov </tr> 452ae771770SStanislav Sedov <tr> 453ae771770SStanislav Sedov <td class="paramkey"></td> 454ae771770SStanislav Sedov <td></td> 455ae771770SStanislav Sedov <td class="paramtype">int </td> 456ae771770SStanislav Sedov <td class="paramname"> <em>idx</em>, </td> 457ae771770SStanislav Sedov </tr> 458ae771770SStanislav Sedov <tr> 459ae771770SStanislav Sedov <td class="paramkey"></td> 460ae771770SStanislav Sedov <td></td> 461ae771770SStanislav Sedov <td class="paramtype">void * </td> 462ae771770SStanislav Sedov <td class="paramname"> <em>data</em></td><td> </td> 463ae771770SStanislav Sedov </tr> 464ae771770SStanislav Sedov <tr> 465ae771770SStanislav Sedov <td></td> 466ae771770SStanislav Sedov <td>)</td> 467ae771770SStanislav Sedov <td></td><td></td><td></td> 468ae771770SStanislav Sedov </tr> 469ae771770SStanislav Sedov </table> 470ae771770SStanislav Sedov</div> 471ae771770SStanislav Sedov<div class="memdoc"> 472ae771770SStanislav Sedov 473ae771770SStanislav Sedov<p> 474ae771770SStanislav SedovSet the data index idx in the DH object to data.<p> 475ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 476ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 477ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>DH object. </td></tr> 478ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>idx</em> </td><td>index to set the data for. </td></tr> 479ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>data to store for the index idx.</td></tr> 480ae771770SStanislav Sedov </table> 481ae771770SStanislav Sedov</dl> 482ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl> 483ae771770SStanislav Sedov 484ae771770SStanislav Sedov</div> 485ae771770SStanislav Sedov</div><p> 486ae771770SStanislav Sedov<a class="anchor" name="ge8f6c9ec1c2e4904439227a952980fdd"></a><!-- doxytag: member="dh.c::DH_set_method" ref="ge8f6c9ec1c2e4904439227a952980fdd" args="(DH *dh, const DH_METHOD *method)" --> 487ae771770SStanislav Sedov<div class="memitem"> 488ae771770SStanislav Sedov<div class="memproto"> 489ae771770SStanislav Sedov <table class="memname"> 490ae771770SStanislav Sedov <tr> 491ae771770SStanislav Sedov <td class="memname">int DH_set_method </td> 492ae771770SStanislav Sedov <td>(</td> 493ae771770SStanislav Sedov <td class="paramtype">DH * </td> 494ae771770SStanislav Sedov <td class="paramname"> <em>dh</em>, </td> 495ae771770SStanislav Sedov </tr> 496ae771770SStanislav Sedov <tr> 497ae771770SStanislav Sedov <td class="paramkey"></td> 498ae771770SStanislav Sedov <td></td> 499ae771770SStanislav Sedov <td class="paramtype">const DH_METHOD * </td> 500ae771770SStanislav Sedov <td class="paramname"> <em>method</em></td><td> </td> 501ae771770SStanislav Sedov </tr> 502ae771770SStanislav Sedov <tr> 503ae771770SStanislav Sedov <td></td> 504ae771770SStanislav Sedov <td>)</td> 505ae771770SStanislav Sedov <td></td><td></td><td></td> 506ae771770SStanislav Sedov </tr> 507ae771770SStanislav Sedov </table> 508ae771770SStanislav Sedov</div> 509ae771770SStanislav Sedov<div class="memdoc"> 510ae771770SStanislav Sedov 511ae771770SStanislav Sedov<p> 512ae771770SStanislav SedovSet a new method for the DH keypair.<p> 513ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 514ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 515ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>dh parameter. </td></tr> 516ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>method</em> </td><td>the new method for the DH parameter.</td></tr> 517ae771770SStanislav Sedov </table> 518ae771770SStanislav Sedov</dl> 519ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success. </dd></dl> 520ae771770SStanislav Sedov 521ae771770SStanislav Sedov</div> 522ae771770SStanislav Sedov</div><p> 523ae771770SStanislav Sedov<a class="anchor" name="g9e1fdd62e3bfe4b671dbfc363f0e6297"></a><!-- doxytag: member="dh.c::DH_size" ref="g9e1fdd62e3bfe4b671dbfc363f0e6297" args="(const DH *dh)" --> 524ae771770SStanislav Sedov<div class="memitem"> 525ae771770SStanislav Sedov<div class="memproto"> 526ae771770SStanislav Sedov <table class="memname"> 527ae771770SStanislav Sedov <tr> 528ae771770SStanislav Sedov <td class="memname">int DH_size </td> 529ae771770SStanislav Sedov <td>(</td> 530ae771770SStanislav Sedov <td class="paramtype">const DH * </td> 531ae771770SStanislav Sedov <td class="paramname"> <em>dh</em> </td> 532ae771770SStanislav Sedov <td> ) </td> 533ae771770SStanislav Sedov <td></td> 534ae771770SStanislav Sedov </tr> 535ae771770SStanislav Sedov </table> 536ae771770SStanislav Sedov</div> 537ae771770SStanislav Sedov<div class="memdoc"> 538ae771770SStanislav Sedov 539ae771770SStanislav Sedov<p> 540ae771770SStanislav SedovThe maximum output size of the <a class="el" href="group__hcrypto__dh.html#gf8b793df62108341ed3dc54a0ca75ca8">DH_compute_key()</a> function.<p> 541ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 542ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 543ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>The DH object to get the size from.</td></tr> 544ae771770SStanislav Sedov </table> 545ae771770SStanislav Sedov</dl> 546ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>the maximum size in bytes of the out data. </dd></dl> 547ae771770SStanislav Sedov 548ae771770SStanislav Sedov</div> 549ae771770SStanislav Sedov</div><p> 550ae771770SStanislav Sedov<a class="anchor" name="gf7c3e51cba326865c3684012c2337df1"></a><!-- doxytag: member="dh.c::DH_up_ref" ref="gf7c3e51cba326865c3684012c2337df1" args="(DH *dh)" --> 551ae771770SStanislav Sedov<div class="memitem"> 552ae771770SStanislav Sedov<div class="memproto"> 553ae771770SStanislav Sedov <table class="memname"> 554ae771770SStanislav Sedov <tr> 555ae771770SStanislav Sedov <td class="memname">int DH_up_ref </td> 556ae771770SStanislav Sedov <td>(</td> 557ae771770SStanislav Sedov <td class="paramtype">DH * </td> 558ae771770SStanislav Sedov <td class="paramname"> <em>dh</em> </td> 559ae771770SStanislav Sedov <td> ) </td> 560ae771770SStanislav Sedov <td></td> 561ae771770SStanislav Sedov </tr> 562ae771770SStanislav Sedov </table> 563ae771770SStanislav Sedov</div> 564ae771770SStanislav Sedov<div class="memdoc"> 565ae771770SStanislav Sedov 566ae771770SStanislav Sedov<p> 567ae771770SStanislav SedovAdd a reference to the DH object. The object should be free with <a class="el" href="group__hcrypto__dh.html#g1f15312ca21e290ee714e86578820c35">DH_free()</a> to drop the reference.<p> 568ae771770SStanislav Sedov<dl compact><dt><b>Parameters:</b></dt><dd> 569ae771770SStanislav Sedov <table border="0" cellspacing="2" cellpadding="0"> 570ae771770SStanislav Sedov <tr><td valign="top"></td><td valign="top"><em>dh</em> </td><td>the object to increase the reference count too.</td></tr> 571ae771770SStanislav Sedov </table> 572ae771770SStanislav Sedov</dl> 573ae771770SStanislav Sedov<dl class="return" compact><dt><b>Returns:</b></dt><dd>the updated reference count, can't safely be used except for debug printing. </dd></dl> 574ae771770SStanislav Sedov 575ae771770SStanislav Sedov</div> 576ae771770SStanislav Sedov</div><p> 577ae771770SStanislav Sedov</div> 578ae771770SStanislav Sedov<hr size="1"><address style="text-align: right;"><small> 579*cf771f22SStanislav SedovGenerated on Wed Jan 11 14:07:38 2012 for Heimdal crypto library by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address> 580ae771770SStanislav Sedov</body> 581ae771770SStanislav Sedov</html> 582