xref: /netbsd-src/crypto/external/bsd/heimdal/dist/doc/doxyout/hcrypto/html/group__hcrypto__dh.html (revision dd75ac5b443e967e26b4d18cc8cd5eb98512bfbf)
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&amp;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 *&#160;</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">&#160;</td></tr>
34<tr class="memitem:ga76c6e12bd1f0b9977d80fee83b086031"><td class="memItemLeft" align="right" valign="top">DH *&#160;</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">&#160;</td></tr>
36<tr class="memitem:ga2e97e03aee56c6094bb7fd6322b3ce68"><td class="memItemLeft" align="right" valign="top">DH *&#160;</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">&#160;</td></tr>
38<tr class="memitem:ga1f15312ca21e290ee714e86578820c35"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</td></tr>
40<tr class="memitem:gaf7c3e51cba326865c3684012c2337df1"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
42<tr class="memitem:ga9e1fdd62e3bfe4b671dbfc363f0e6297"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
44<tr class="memitem:ga7a03e7589a8473ed34cf2a4177709c0e"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
46<tr class="memitem:ga25fff6e977829c49410f046b8cc3471d"><td class="memItemLeft" align="right" valign="top">void *&#160;</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">&#160;</td></tr>
48<tr class="memitem:ga11ef051e93bc408f3e7ba77d44c5d3cb"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
50<tr class="memitem:ga8995ef180ab448fdedde5da65f6ea249"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
52<tr class="memitem:gab90ec6b9e64f62c05754731c0c13ea01"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
54<tr class="memitem:gaf8b793df62108341ed3dc54a0ca75ca8"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
56<tr class="memitem:gae8f6c9ec1c2e4904439227a952980fdd"><td class="memItemLeft" align="right" valign="top">int&#160;</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">&#160;</td></tr>
58<tr class="memitem:ga1e3dc0dbc1ba678716d28654c0eded84"><td class="memItemLeft" align="right" valign="top">const DH_METHOD *&#160;</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">&#160;</td></tr>
60<tr class="memitem:ga6c63e1e8af5957d7f798439c854d06b6"><td class="memItemLeft" align="right" valign="top">void&#160;</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">&#160;</td></tr>
62<tr class="memitem:gae2b07654d087940e36e7583887d8b070"><td class="memItemLeft" align="right" valign="top">const DH_METHOD *&#160;</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">&#160;</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">&#9670;&nbsp;</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 *&#160;</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 *&#160;</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 *&#160;</td>
90          <td class="paramname"><em>codes</em>&#160;</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 &gt; 1 and pub_key &lt; 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">&#9670;&nbsp;</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 *&#160;</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 *&#160;</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 *&#160;</td>
139          <td class="paramname"><em>dh</em>&#160;</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">&#9670;&nbsp;</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 *&#160;</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">&#9670;&nbsp;</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 *&#160;</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-&gt;p and dp-&gt;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">&#9670;&nbsp;</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 *&#160;</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&#160;</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&#160;</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 *&#160;</td>
241          <td class="paramname"><em>cb</em>&#160;</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">&#9670;&nbsp;</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&#160;</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">&#9670;&nbsp;</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 *&#160;</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&#160;</td>
300          <td class="paramname"><em>idx</em>&#160;</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">&#9670;&nbsp;</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&#160;</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">&#9670;&nbsp;</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&#160;</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">&#9670;&nbsp;</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 *&#160;</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">&#9670;&nbsp;</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&#160;</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">&#9670;&nbsp;</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 *&#160;</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">&#9670;&nbsp;</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 *&#160;</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&#160;</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 *&#160;</td>
454          <td class="paramname"><em>data</em>&#160;</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">&#9670;&nbsp;</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 *&#160;</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 *&#160;</td>
492          <td class="paramname"><em>method</em>&#160;</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">&#9670;&nbsp;</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 *&#160;</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">&#9670;&nbsp;</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 *&#160;</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&nbsp;<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