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