xref: /freebsd-src/crypto/heimdal/doc/doxyout/hcrypto/html/group__hcrypto__dh.html (revision 6a068746777241722b2b32c5d0bc443a2a64d80b)
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&nbsp;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 *&nbsp;</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 *&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</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 *&nbsp;</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 *&nbsp;</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 *&nbsp;</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 *&nbsp;</td>
80ae771770SStanislav Sedov          <td class="paramname"> <em>codes</em></td><td>&nbsp;</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>&nbsp;</td><td>the local peer DH parameters. </td></tr>
96ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>pub_key</em>&nbsp;</td><td>the remote peer public key parameters. </td></tr>
97ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>codes</em>&nbsp;</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 &gt; 1 and pub_key &lt; 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 *&nbsp;</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 *&nbsp;</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 *&nbsp;</td>
134ae771770SStanislav Sedov          <td class="paramname"> <em>dh</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>the peer's public key. </td></tr>
151ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>dh</em>&nbsp;</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 *&nbsp;</td>
168ae771770SStanislav Sedov          <td class="paramname"> <em>dh</em>          </td>
169ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
194ae771770SStanislav Sedov          <td class="paramname"> <em>dh</em>          </td>
195ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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-&gt;p and dp-&gt;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>&nbsp;</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 *&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</td>
239ae771770SStanislav Sedov          <td class="paramname"> <em>cb</em></td><td>&nbsp;</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>&nbsp;</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>&nbsp;</td><td>length of the prime </td></tr>
256ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>generator</em>&nbsp;</td><td>generator, g </td></tr>
257ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>cb</em>&nbsp;</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&nbsp;</td>
272ae771770SStanislav Sedov          <td class="paramname">          </td>
273ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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 *&nbsp;</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&nbsp;</td>
300ae771770SStanislav Sedov          <td class="paramname"> <em>idx</em></td><td>&nbsp;</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>&nbsp;</td><td>DH object. </td></tr>
316ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</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&nbsp;</td>
331ae771770SStanislav Sedov          <td class="paramname">          </td>
332ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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&nbsp;</td>
353ae771770SStanislav Sedov          <td class="paramname">          </td>
354ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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 *&nbsp;</td>
375ae771770SStanislav Sedov          <td class="paramname"> <em>engine</em>          </td>
376ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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>&nbsp;</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&nbsp;</td>
402ae771770SStanislav Sedov          <td class="paramname">          </td>
403ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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 *&nbsp;</td>
424ae771770SStanislav Sedov          <td class="paramname"> <em>meth</em>          </td>
425ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</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&nbsp;</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 *&nbsp;</td>
462ae771770SStanislav Sedov          <td class="paramname"> <em>data</em></td><td>&nbsp;</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>&nbsp;</td><td>DH object. </td></tr>
478ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>idx</em>&nbsp;</td><td>index to set the data for. </td></tr>
479ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</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 *&nbsp;</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 *&nbsp;</td>
500ae771770SStanislav Sedov          <td class="paramname"> <em>method</em></td><td>&nbsp;</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>&nbsp;</td><td>dh parameter. </td></tr>
516ae771770SStanislav Sedov    <tr><td valign="top"></td><td valign="top"><em>method</em>&nbsp;</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 *&nbsp;</td>
531ae771770SStanislav Sedov          <td class="paramname"> <em>dh</em>          </td>
532ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
558ae771770SStanislav Sedov          <td class="paramname"> <em>dh</em>          </td>
559ae771770SStanislav Sedov          <td>&nbsp;)&nbsp;</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>&nbsp;</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&nbsp;<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