xref: /netbsd-src/crypto/external/bsd/heimdal/dist/doc/doxyout/hcrypto/html/group__hcrypto__des.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>DES crypto 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">DES crypto 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:ga4179bef43ceb72cc2034f39e7d2d5ae4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga4179bef43ceb72cc2034f39e7d2d5ae4">DES_set_odd_parity</a> (DES_cblock *key)</td></tr>
33<tr class="separator:ga4179bef43ceb72cc2034f39e7d2d5ae4"><td class="memSeparator" colspan="2">&#160;</td></tr>
34<tr class="memitem:gacf0d611296ad70edf90a3130b2f62c71"><td class="memItemLeft" align="right" valign="top">int HC_DEPRECATED&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gacf0d611296ad70edf90a3130b2f62c71">DES_check_key_parity</a> (DES_cblock *key)</td></tr>
35<tr class="separator:gacf0d611296ad70edf90a3130b2f62c71"><td class="memSeparator" colspan="2">&#160;</td></tr>
36<tr class="memitem:ga0d8a49cafee4be6cd3922bfb6323fd2d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga0d8a49cafee4be6cd3922bfb6323fd2d">DES_is_weak_key</a> (DES_cblock *key)</td></tr>
37<tr class="separator:ga0d8a49cafee4be6cd3922bfb6323fd2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
38<tr class="memitem:gaad10e059974f3048b3de49599989486b"><td class="memItemLeft" align="right" valign="top">int HC_DEPRECATED&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gaad10e059974f3048b3de49599989486b">DES_set_key</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
39<tr class="separator:gaad10e059974f3048b3de49599989486b"><td class="memSeparator" colspan="2">&#160;</td></tr>
40<tr class="memitem:ga8131d59b5c0f65ca8bba0873932680d5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
41<tr class="separator:ga8131d59b5c0f65ca8bba0873932680d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
42<tr class="memitem:ga3157dd2419a25cd4381867f012117d07"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga3157dd2419a25cd4381867f012117d07">DES_set_key_checked</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
43<tr class="separator:ga3157dd2419a25cd4381867f012117d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
44<tr class="memitem:gaf5b4967f13a4a52c214c28b6e57a3a95"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gaf5b4967f13a4a52c214c28b6e57a3a95">DES_key_sched</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
45<tr class="separator:gaf5b4967f13a4a52c214c28b6e57a3a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
46<tr class="memitem:ga39662a8c2218601d402a895f08813662"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga39662a8c2218601d402a895f08813662">DES_encrypt</a> (uint32_t u[2], DES_key_schedule *ks, int encp)</td></tr>
47<tr class="separator:ga39662a8c2218601d402a895f08813662"><td class="memSeparator" colspan="2">&#160;</td></tr>
48<tr class="memitem:gaa5cf9203994e3a5ece2ef7a85e7a2875"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gaa5cf9203994e3a5ece2ef7a85e7a2875">DES_ecb_encrypt</a> (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks, int encp)</td></tr>
49<tr class="separator:gaa5cf9203994e3a5ece2ef7a85e7a2875"><td class="memSeparator" colspan="2">&#160;</td></tr>
50<tr class="memitem:ga4946e6d9a944f8f029df4e6c68d1868e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga4946e6d9a944f8f029df4e6c68d1868e">DES_cbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)</td></tr>
51<tr class="separator:ga4946e6d9a944f8f029df4e6c68d1868e"><td class="memSeparator" colspan="2">&#160;</td></tr>
52<tr class="memitem:ga336e497f66748e92b93fc0b4512d78c2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga336e497f66748e92b93fc0b4512d78c2">DES_pcbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)</td></tr>
53<tr class="separator:ga336e497f66748e92b93fc0b4512d78c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
54<tr class="memitem:gaf2de06942efdf1bd45ce0a8c0597654e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gaf2de06942efdf1bd45ce0a8c0597654e">DES_ecb3_encrypt</a> (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, int encp)</td></tr>
55<tr class="separator:gaf2de06942efdf1bd45ce0a8c0597654e"><td class="memSeparator" colspan="2">&#160;</td></tr>
56<tr class="memitem:ga36a83e8a4de4ac0f93ea932229dc3607"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga36a83e8a4de4ac0f93ea932229dc3607">DES_ede3_cbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *iv, int encp)</td></tr>
57<tr class="separator:ga36a83e8a4de4ac0f93ea932229dc3607"><td class="memSeparator" colspan="2">&#160;</td></tr>
58<tr class="memitem:ga9c2b24baea3d4e69524335a79e22ae2d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga9c2b24baea3d4e69524335a79e22ae2d">DES_cfb64_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int *num, int encp)</td></tr>
59<tr class="separator:ga9c2b24baea3d4e69524335a79e22ae2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
60<tr class="memitem:gabf8f1cc95fd03ec1ef59563f9659ec42"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gabf8f1cc95fd03ec1ef59563f9659ec42">DES_cbc_cksum</a> (const void *in, DES_cblock *output, long length, DES_key_schedule *ks, DES_cblock *iv)</td></tr>
61<tr class="separator:gabf8f1cc95fd03ec1ef59563f9659ec42"><td class="memSeparator" colspan="2">&#160;</td></tr>
62<tr class="memitem:ga60893cdc75d9ce8cbf4a5d7a874855c8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga60893cdc75d9ce8cbf4a5d7a874855c8">DES_string_to_key</a> (const char *str, DES_cblock *key)</td></tr>
63<tr class="separator:ga60893cdc75d9ce8cbf4a5d7a874855c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
64<tr class="memitem:gacd3642bcd8a7e93ea977786e5b540d5f"><td class="memItemLeft" align="right" valign="top">int HC_DEPRECATED&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gacd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key</a> (DES_cblock *key)</td></tr>
65<tr class="separator:gacd3642bcd8a7e93ea977786e5b540d5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
66<tr class="memitem:ga45739e74db49d07bfaa0d7918efd4875"><td class="memItemLeft" align="right" valign="top">void HC_DEPRECATED&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga45739e74db49d07bfaa0d7918efd4875">DES_init_random_number_generator</a> (DES_cblock *seed)</td></tr>
67<tr class="separator:ga45739e74db49d07bfaa0d7918efd4875"><td class="memSeparator" colspan="2">&#160;</td></tr>
68<tr class="memitem:gad70d485549f7444589f3283e938c0258"><td class="memItemLeft" align="right" valign="top">void HC_DEPRECATED&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gad70d485549f7444589f3283e938c0258">DES_random_key</a> (DES_cblock *key)</td></tr>
69<tr class="separator:gad70d485549f7444589f3283e938c0258"><td class="memSeparator" colspan="2">&#160;</td></tr>
70</table>
71<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
72<p>See the <a class="el" href="page_des.html">DES - Data Encryption Standard crypto interface</a> for description and examples. </p>
73<h2 class="groupheader">Function Documentation</h2>
74<a id="gabf8f1cc95fd03ec1ef59563f9659ec42"></a>
75<h2 class="memtitle"><span class="permalink"><a href="#gabf8f1cc95fd03ec1ef59563f9659ec42">&#9670;&nbsp;</a></span>DES_cbc_cksum()</h2>
76
77<div class="memitem">
78<div class="memproto">
79      <table class="memname">
80        <tr>
81          <td class="memname">uint32_t DES_cbc_cksum </td>
82          <td>(</td>
83          <td class="paramtype">const void *&#160;</td>
84          <td class="paramname"><em>in</em>, </td>
85        </tr>
86        <tr>
87          <td class="paramkey"></td>
88          <td></td>
89          <td class="paramtype">DES_cblock *&#160;</td>
90          <td class="paramname"><em>output</em>, </td>
91        </tr>
92        <tr>
93          <td class="paramkey"></td>
94          <td></td>
95          <td class="paramtype">long&#160;</td>
96          <td class="paramname"><em>length</em>, </td>
97        </tr>
98        <tr>
99          <td class="paramkey"></td>
100          <td></td>
101          <td class="paramtype">DES_key_schedule *&#160;</td>
102          <td class="paramname"><em>ks</em>, </td>
103        </tr>
104        <tr>
105          <td class="paramkey"></td>
106          <td></td>
107          <td class="paramtype">DES_cblock *&#160;</td>
108          <td class="paramname"><em>iv</em>&#160;</td>
109        </tr>
110        <tr>
111          <td></td>
112          <td>)</td>
113          <td></td><td></td>
114        </tr>
115      </table>
116</div><div class="memdoc">
117<p>Crete a checksum using DES in CBC encryption mode. This mode is only used for Kerberos 4, and it should stay that way.</p>
118<p>The IV must always be diffrent for diffrent input data blocks.</p>
119<dl class="params"><dt>Parameters</dt><dd>
120  <table class="params">
121    <tr><td class="paramname">in</td><td>data to checksum </td></tr>
122    <tr><td class="paramname">output</td><td>the checksum </td></tr>
123    <tr><td class="paramname">length</td><td>length of data </td></tr>
124    <tr><td class="paramname">ks</td><td>key schedule to use </td></tr>
125    <tr><td class="paramname">iv</td><td>initial vector to use </td></tr>
126  </table>
127  </dd>
128</dl>
129
130</div>
131</div>
132<a id="ga4946e6d9a944f8f029df4e6c68d1868e"></a>
133<h2 class="memtitle"><span class="permalink"><a href="#ga4946e6d9a944f8f029df4e6c68d1868e">&#9670;&nbsp;</a></span>DES_cbc_encrypt()</h2>
134
135<div class="memitem">
136<div class="memproto">
137      <table class="memname">
138        <tr>
139          <td class="memname">void DES_cbc_encrypt </td>
140          <td>(</td>
141          <td class="paramtype">const void *&#160;</td>
142          <td class="paramname"><em>in</em>, </td>
143        </tr>
144        <tr>
145          <td class="paramkey"></td>
146          <td></td>
147          <td class="paramtype">void *&#160;</td>
148          <td class="paramname"><em>out</em>, </td>
149        </tr>
150        <tr>
151          <td class="paramkey"></td>
152          <td></td>
153          <td class="paramtype">long&#160;</td>
154          <td class="paramname"><em>length</em>, </td>
155        </tr>
156        <tr>
157          <td class="paramkey"></td>
158          <td></td>
159          <td class="paramtype">DES_key_schedule *&#160;</td>
160          <td class="paramname"><em>ks</em>, </td>
161        </tr>
162        <tr>
163          <td class="paramkey"></td>
164          <td></td>
165          <td class="paramtype">DES_cblock *&#160;</td>
166          <td class="paramname"><em>iv</em>, </td>
167        </tr>
168        <tr>
169          <td class="paramkey"></td>
170          <td></td>
171          <td class="paramtype">int&#160;</td>
172          <td class="paramname"><em>encp</em>&#160;</td>
173        </tr>
174        <tr>
175          <td></td>
176          <td>)</td>
177          <td></td><td></td>
178        </tr>
179      </table>
180</div><div class="memdoc">
181<p>Encrypt/decrypt a block using DES in Chain Block Cipher mode (cbc).</p>
182<p>The IV must always be diffrent for diffrent input data blocks.</p>
183<dl class="params"><dt>Parameters</dt><dd>
184  <table class="params">
185    <tr><td class="paramname">in</td><td>data to encrypt </td></tr>
186    <tr><td class="paramname">out</td><td>data to encrypt </td></tr>
187    <tr><td class="paramname">length</td><td>length of data </td></tr>
188    <tr><td class="paramname">ks</td><td>key schedule to use </td></tr>
189    <tr><td class="paramname">iv</td><td>initial vector to use </td></tr>
190    <tr><td class="paramname">encp</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
191  </table>
192  </dd>
193</dl>
194
195</div>
196</div>
197<a id="ga9c2b24baea3d4e69524335a79e22ae2d"></a>
198<h2 class="memtitle"><span class="permalink"><a href="#ga9c2b24baea3d4e69524335a79e22ae2d">&#9670;&nbsp;</a></span>DES_cfb64_encrypt()</h2>
199
200<div class="memitem">
201<div class="memproto">
202      <table class="memname">
203        <tr>
204          <td class="memname">void DES_cfb64_encrypt </td>
205          <td>(</td>
206          <td class="paramtype">const void *&#160;</td>
207          <td class="paramname"><em>in</em>, </td>
208        </tr>
209        <tr>
210          <td class="paramkey"></td>
211          <td></td>
212          <td class="paramtype">void *&#160;</td>
213          <td class="paramname"><em>out</em>, </td>
214        </tr>
215        <tr>
216          <td class="paramkey"></td>
217          <td></td>
218          <td class="paramtype">long&#160;</td>
219          <td class="paramname"><em>length</em>, </td>
220        </tr>
221        <tr>
222          <td class="paramkey"></td>
223          <td></td>
224          <td class="paramtype">DES_key_schedule *&#160;</td>
225          <td class="paramname"><em>ks</em>, </td>
226        </tr>
227        <tr>
228          <td class="paramkey"></td>
229          <td></td>
230          <td class="paramtype">DES_cblock *&#160;</td>
231          <td class="paramname"><em>iv</em>, </td>
232        </tr>
233        <tr>
234          <td class="paramkey"></td>
235          <td></td>
236          <td class="paramtype">int *&#160;</td>
237          <td class="paramname"><em>num</em>, </td>
238        </tr>
239        <tr>
240          <td class="paramkey"></td>
241          <td></td>
242          <td class="paramtype">int&#160;</td>
243          <td class="paramname"><em>encp</em>&#160;</td>
244        </tr>
245        <tr>
246          <td></td>
247          <td>)</td>
248          <td></td><td></td>
249        </tr>
250      </table>
251</div><div class="memdoc">
252<p>Encrypt/decrypt using DES in cipher feedback mode with 64 bit feedback.</p>
253<p>The IV must always be diffrent for diffrent input data blocks.</p>
254<dl class="params"><dt>Parameters</dt><dd>
255  <table class="params">
256    <tr><td class="paramname">in</td><td>data to encrypt </td></tr>
257    <tr><td class="paramname">out</td><td>data to encrypt </td></tr>
258    <tr><td class="paramname">length</td><td>length of data </td></tr>
259    <tr><td class="paramname">ks</td><td>key schedule to use </td></tr>
260    <tr><td class="paramname">iv</td><td>initial vector to use </td></tr>
261    <tr><td class="paramname">num</td><td>offset into in cipher block encryption/decryption stop last time. </td></tr>
262    <tr><td class="paramname">encp</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
263  </table>
264  </dd>
265</dl>
266
267</div>
268</div>
269<a id="gacf0d611296ad70edf90a3130b2f62c71"></a>
270<h2 class="memtitle"><span class="permalink"><a href="#gacf0d611296ad70edf90a3130b2f62c71">&#9670;&nbsp;</a></span>DES_check_key_parity()</h2>
271
272<div class="memitem">
273<div class="memproto">
274      <table class="memname">
275        <tr>
276          <td class="memname">int HC_DEPRECATED DES_check_key_parity </td>
277          <td>(</td>
278          <td class="paramtype">DES_cblock *&#160;</td>
279          <td class="paramname"><em>key</em></td><td>)</td>
280          <td></td>
281        </tr>
282      </table>
283</div><div class="memdoc">
284<p>Check if the key have correct parity.</p>
285<dl class="params"><dt>Parameters</dt><dd>
286  <table class="params">
287    <tr><td class="paramname">key</td><td>key to check the parity. </td></tr>
288  </table>
289  </dd>
290</dl>
291<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 on failure. </dd></dl>
292
293</div>
294</div>
295<a id="gaf2de06942efdf1bd45ce0a8c0597654e"></a>
296<h2 class="memtitle"><span class="permalink"><a href="#gaf2de06942efdf1bd45ce0a8c0597654e">&#9670;&nbsp;</a></span>DES_ecb3_encrypt()</h2>
297
298<div class="memitem">
299<div class="memproto">
300      <table class="memname">
301        <tr>
302          <td class="memname">void DES_ecb3_encrypt </td>
303          <td>(</td>
304          <td class="paramtype">DES_cblock *&#160;</td>
305          <td class="paramname"><em>input</em>, </td>
306        </tr>
307        <tr>
308          <td class="paramkey"></td>
309          <td></td>
310          <td class="paramtype">DES_cblock *&#160;</td>
311          <td class="paramname"><em>output</em>, </td>
312        </tr>
313        <tr>
314          <td class="paramkey"></td>
315          <td></td>
316          <td class="paramtype">DES_key_schedule *&#160;</td>
317          <td class="paramname"><em>ks1</em>, </td>
318        </tr>
319        <tr>
320          <td class="paramkey"></td>
321          <td></td>
322          <td class="paramtype">DES_key_schedule *&#160;</td>
323          <td class="paramname"><em>ks2</em>, </td>
324        </tr>
325        <tr>
326          <td class="paramkey"></td>
327          <td></td>
328          <td class="paramtype">DES_key_schedule *&#160;</td>
329          <td class="paramname"><em>ks3</em>, </td>
330        </tr>
331        <tr>
332          <td class="paramkey"></td>
333          <td></td>
334          <td class="paramtype">int&#160;</td>
335          <td class="paramname"><em>encp</em>&#160;</td>
336        </tr>
337        <tr>
338          <td></td>
339          <td>)</td>
340          <td></td><td></td>
341        </tr>
342      </table>
343</div><div class="memdoc">
344<p>Encrypt/decrypt a block using triple DES using EDE mode, encrypt/decrypt/encrypt.</p>
345<dl class="params"><dt>Parameters</dt><dd>
346  <table class="params">
347    <tr><td class="paramname">input</td><td>data to encrypt </td></tr>
348    <tr><td class="paramname">output</td><td>data to encrypt </td></tr>
349    <tr><td class="paramname">ks1</td><td>key schedule to use </td></tr>
350    <tr><td class="paramname">ks2</td><td>key schedule to use </td></tr>
351    <tr><td class="paramname">ks3</td><td>key schedule to use </td></tr>
352    <tr><td class="paramname">encp</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
353  </table>
354  </dd>
355</dl>
356
357</div>
358</div>
359<a id="gaa5cf9203994e3a5ece2ef7a85e7a2875"></a>
360<h2 class="memtitle"><span class="permalink"><a href="#gaa5cf9203994e3a5ece2ef7a85e7a2875">&#9670;&nbsp;</a></span>DES_ecb_encrypt()</h2>
361
362<div class="memitem">
363<div class="memproto">
364      <table class="memname">
365        <tr>
366          <td class="memname">void DES_ecb_encrypt </td>
367          <td>(</td>
368          <td class="paramtype">DES_cblock *&#160;</td>
369          <td class="paramname"><em>input</em>, </td>
370        </tr>
371        <tr>
372          <td class="paramkey"></td>
373          <td></td>
374          <td class="paramtype">DES_cblock *&#160;</td>
375          <td class="paramname"><em>output</em>, </td>
376        </tr>
377        <tr>
378          <td class="paramkey"></td>
379          <td></td>
380          <td class="paramtype">DES_key_schedule *&#160;</td>
381          <td class="paramname"><em>ks</em>, </td>
382        </tr>
383        <tr>
384          <td class="paramkey"></td>
385          <td></td>
386          <td class="paramtype">int&#160;</td>
387          <td class="paramname"><em>encp</em>&#160;</td>
388        </tr>
389        <tr>
390          <td></td>
391          <td>)</td>
392          <td></td><td></td>
393        </tr>
394      </table>
395</div><div class="memdoc">
396<p>Encrypt/decrypt a block using DES.</p>
397<dl class="params"><dt>Parameters</dt><dd>
398  <table class="params">
399    <tr><td class="paramname">input</td><td>data to encrypt </td></tr>
400    <tr><td class="paramname">output</td><td>data to encrypt </td></tr>
401    <tr><td class="paramname">ks</td><td>key schedule to use </td></tr>
402    <tr><td class="paramname">encp</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
403  </table>
404  </dd>
405</dl>
406
407</div>
408</div>
409<a id="ga36a83e8a4de4ac0f93ea932229dc3607"></a>
410<h2 class="memtitle"><span class="permalink"><a href="#ga36a83e8a4de4ac0f93ea932229dc3607">&#9670;&nbsp;</a></span>DES_ede3_cbc_encrypt()</h2>
411
412<div class="memitem">
413<div class="memproto">
414      <table class="memname">
415        <tr>
416          <td class="memname">void DES_ede3_cbc_encrypt </td>
417          <td>(</td>
418          <td class="paramtype">const void *&#160;</td>
419          <td class="paramname"><em>in</em>, </td>
420        </tr>
421        <tr>
422          <td class="paramkey"></td>
423          <td></td>
424          <td class="paramtype">void *&#160;</td>
425          <td class="paramname"><em>out</em>, </td>
426        </tr>
427        <tr>
428          <td class="paramkey"></td>
429          <td></td>
430          <td class="paramtype">long&#160;</td>
431          <td class="paramname"><em>length</em>, </td>
432        </tr>
433        <tr>
434          <td class="paramkey"></td>
435          <td></td>
436          <td class="paramtype">DES_key_schedule *&#160;</td>
437          <td class="paramname"><em>ks1</em>, </td>
438        </tr>
439        <tr>
440          <td class="paramkey"></td>
441          <td></td>
442          <td class="paramtype">DES_key_schedule *&#160;</td>
443          <td class="paramname"><em>ks2</em>, </td>
444        </tr>
445        <tr>
446          <td class="paramkey"></td>
447          <td></td>
448          <td class="paramtype">DES_key_schedule *&#160;</td>
449          <td class="paramname"><em>ks3</em>, </td>
450        </tr>
451        <tr>
452          <td class="paramkey"></td>
453          <td></td>
454          <td class="paramtype">DES_cblock *&#160;</td>
455          <td class="paramname"><em>iv</em>, </td>
456        </tr>
457        <tr>
458          <td class="paramkey"></td>
459          <td></td>
460          <td class="paramtype">int&#160;</td>
461          <td class="paramname"><em>encp</em>&#160;</td>
462        </tr>
463        <tr>
464          <td></td>
465          <td>)</td>
466          <td></td><td></td>
467        </tr>
468      </table>
469</div><div class="memdoc">
470<p>Encrypt/decrypt using Triple DES in Chain Block Cipher mode (cbc).</p>
471<p>The IV must always be diffrent for diffrent input data blocks.</p>
472<dl class="params"><dt>Parameters</dt><dd>
473  <table class="params">
474    <tr><td class="paramname">in</td><td>data to encrypt </td></tr>
475    <tr><td class="paramname">out</td><td>data to encrypt </td></tr>
476    <tr><td class="paramname">length</td><td>length of data </td></tr>
477    <tr><td class="paramname">ks1</td><td>key schedule to use </td></tr>
478    <tr><td class="paramname">ks2</td><td>key schedule to use </td></tr>
479    <tr><td class="paramname">ks3</td><td>key schedule to use </td></tr>
480    <tr><td class="paramname">iv</td><td>initial vector to use </td></tr>
481    <tr><td class="paramname">encp</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
482  </table>
483  </dd>
484</dl>
485
486</div>
487</div>
488<a id="ga39662a8c2218601d402a895f08813662"></a>
489<h2 class="memtitle"><span class="permalink"><a href="#ga39662a8c2218601d402a895f08813662">&#9670;&nbsp;</a></span>DES_encrypt()</h2>
490
491<div class="memitem">
492<div class="memproto">
493      <table class="memname">
494        <tr>
495          <td class="memname">void DES_encrypt </td>
496          <td>(</td>
497          <td class="paramtype">uint32_t&#160;</td>
498          <td class="paramname"><em>u</em>[2], </td>
499        </tr>
500        <tr>
501          <td class="paramkey"></td>
502          <td></td>
503          <td class="paramtype">DES_key_schedule *&#160;</td>
504          <td class="paramname"><em>ks</em>, </td>
505        </tr>
506        <tr>
507          <td class="paramkey"></td>
508          <td></td>
509          <td class="paramtype">int&#160;</td>
510          <td class="paramname"><em>encp</em>&#160;</td>
511        </tr>
512        <tr>
513          <td></td>
514          <td>)</td>
515          <td></td><td></td>
516        </tr>
517      </table>
518</div><div class="memdoc">
519<p>Encrypt/decrypt a block using DES. Also called ECB mode</p>
520<dl class="params"><dt>Parameters</dt><dd>
521  <table class="params">
522    <tr><td class="paramname">u</td><td>data to encrypt </td></tr>
523    <tr><td class="paramname">ks</td><td>key schedule to use </td></tr>
524    <tr><td class="paramname">encp</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
525  </table>
526  </dd>
527</dl>
528
529</div>
530</div>
531<a id="ga45739e74db49d07bfaa0d7918efd4875"></a>
532<h2 class="memtitle"><span class="permalink"><a href="#ga45739e74db49d07bfaa0d7918efd4875">&#9670;&nbsp;</a></span>DES_init_random_number_generator()</h2>
533
534<div class="memitem">
535<div class="memproto">
536      <table class="memname">
537        <tr>
538          <td class="memname">void HC_DEPRECATED DES_init_random_number_generator </td>
539          <td>(</td>
540          <td class="paramtype">DES_cblock *&#160;</td>
541          <td class="paramname"><em>seed</em></td><td>)</td>
542          <td></td>
543        </tr>
544      </table>
545</div><div class="memdoc">
546<p>Seed the random number generator. Deprecated, use <a class="el" href="page_rand.html">RAND - random number</a></p>
547<dl class="params"><dt>Parameters</dt><dd>
548  <table class="params">
549    <tr><td class="paramname">seed</td><td>a seed to seed that random number generate with. </td></tr>
550  </table>
551  </dd>
552</dl>
553
554</div>
555</div>
556<a id="ga0d8a49cafee4be6cd3922bfb6323fd2d"></a>
557<h2 class="memtitle"><span class="permalink"><a href="#ga0d8a49cafee4be6cd3922bfb6323fd2d">&#9670;&nbsp;</a></span>DES_is_weak_key()</h2>
558
559<div class="memitem">
560<div class="memproto">
561      <table class="memname">
562        <tr>
563          <td class="memname">int DES_is_weak_key </td>
564          <td>(</td>
565          <td class="paramtype">DES_cblock *&#160;</td>
566          <td class="paramname"><em>key</em></td><td>)</td>
567          <td></td>
568        </tr>
569      </table>
570</div><div class="memdoc">
571<p>Checks if the key is any of the weaks keys that makes DES attacks trival.</p>
572<dl class="params"><dt>Parameters</dt><dd>
573  <table class="params">
574    <tr><td class="paramname">key</td><td>key to check.</td></tr>
575  </table>
576  </dd>
577</dl>
578<dl class="section return"><dt>Returns</dt><dd>1 if the key is weak, 0 otherwise. </dd></dl>
579
580</div>
581</div>
582<a id="gaf5b4967f13a4a52c214c28b6e57a3a95"></a>
583<h2 class="memtitle"><span class="permalink"><a href="#gaf5b4967f13a4a52c214c28b6e57a3a95">&#9670;&nbsp;</a></span>DES_key_sched()</h2>
584
585<div class="memitem">
586<div class="memproto">
587      <table class="memname">
588        <tr>
589          <td class="memname">int DES_key_sched </td>
590          <td>(</td>
591          <td class="paramtype">DES_cblock *&#160;</td>
592          <td class="paramname"><em>key</em>, </td>
593        </tr>
594        <tr>
595          <td class="paramkey"></td>
596          <td></td>
597          <td class="paramtype">DES_key_schedule *&#160;</td>
598          <td class="paramname"><em>ks</em>&#160;</td>
599        </tr>
600        <tr>
601          <td></td>
602          <td>)</td>
603          <td></td><td></td>
604        </tr>
605      </table>
606</div><div class="memdoc">
607<p>Compatibility function for eay libdes, works just like <a class="el" href="group__hcrypto__des.html#ga3157dd2419a25cd4381867f012117d07">DES_set_key_checked()</a>.</p>
608<dl class="params"><dt>Parameters</dt><dd>
609  <table class="params">
610    <tr><td class="paramname">key</td><td>a key to initialize the key schedule with. </td></tr>
611    <tr><td class="paramname">ks</td><td>a key schedule to initialize.</td></tr>
612  </table>
613  </dd>
614</dl>
615<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl>
616
617</div>
618</div>
619<a id="gacd3642bcd8a7e93ea977786e5b540d5f"></a>
620<h2 class="memtitle"><span class="permalink"><a href="#gacd3642bcd8a7e93ea977786e5b540d5f">&#9670;&nbsp;</a></span>DES_new_random_key()</h2>
621
622<div class="memitem">
623<div class="memproto">
624      <table class="memname">
625        <tr>
626          <td class="memname">int HC_DEPRECATED DES_new_random_key </td>
627          <td>(</td>
628          <td class="paramtype">DES_cblock *&#160;</td>
629          <td class="paramname"><em>key</em></td><td>)</td>
630          <td></td>
631        </tr>
632      </table>
633</div><div class="memdoc">
634<p>Generate a random des key using a random block, fixup parity and skip weak keys.</p>
635<dl class="params"><dt>Parameters</dt><dd>
636  <table class="params">
637    <tr><td class="paramname">key</td><td>is set to a random key.</td></tr>
638  </table>
639  </dd>
640</dl>
641<dl class="section return"><dt>Returns</dt><dd>0 on success, non zero on random number generator failure. </dd></dl>
642
643</div>
644</div>
645<a id="ga336e497f66748e92b93fc0b4512d78c2"></a>
646<h2 class="memtitle"><span class="permalink"><a href="#ga336e497f66748e92b93fc0b4512d78c2">&#9670;&nbsp;</a></span>DES_pcbc_encrypt()</h2>
647
648<div class="memitem">
649<div class="memproto">
650      <table class="memname">
651        <tr>
652          <td class="memname">void DES_pcbc_encrypt </td>
653          <td>(</td>
654          <td class="paramtype">const void *&#160;</td>
655          <td class="paramname"><em>in</em>, </td>
656        </tr>
657        <tr>
658          <td class="paramkey"></td>
659          <td></td>
660          <td class="paramtype">void *&#160;</td>
661          <td class="paramname"><em>out</em>, </td>
662        </tr>
663        <tr>
664          <td class="paramkey"></td>
665          <td></td>
666          <td class="paramtype">long&#160;</td>
667          <td class="paramname"><em>length</em>, </td>
668        </tr>
669        <tr>
670          <td class="paramkey"></td>
671          <td></td>
672          <td class="paramtype">DES_key_schedule *&#160;</td>
673          <td class="paramname"><em>ks</em>, </td>
674        </tr>
675        <tr>
676          <td class="paramkey"></td>
677          <td></td>
678          <td class="paramtype">DES_cblock *&#160;</td>
679          <td class="paramname"><em>iv</em>, </td>
680        </tr>
681        <tr>
682          <td class="paramkey"></td>
683          <td></td>
684          <td class="paramtype">int&#160;</td>
685          <td class="paramname"><em>encp</em>&#160;</td>
686        </tr>
687        <tr>
688          <td></td>
689          <td>)</td>
690          <td></td><td></td>
691        </tr>
692      </table>
693</div><div class="memdoc">
694<p>Encrypt/decrypt a block using DES in Propagating Cipher Block Chaining mode. This mode is only used for Kerberos 4, and it should stay that way.</p>
695<p>The IV must always be diffrent for diffrent input data blocks.</p>
696<dl class="params"><dt>Parameters</dt><dd>
697  <table class="params">
698    <tr><td class="paramname">in</td><td>data to encrypt </td></tr>
699    <tr><td class="paramname">out</td><td>data to encrypt </td></tr>
700    <tr><td class="paramname">length</td><td>length of data </td></tr>
701    <tr><td class="paramname">ks</td><td>key schedule to use </td></tr>
702    <tr><td class="paramname">iv</td><td>initial vector to use </td></tr>
703    <tr><td class="paramname">encp</td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
704  </table>
705  </dd>
706</dl>
707
708</div>
709</div>
710<a id="gad70d485549f7444589f3283e938c0258"></a>
711<h2 class="memtitle"><span class="permalink"><a href="#gad70d485549f7444589f3283e938c0258">&#9670;&nbsp;</a></span>DES_random_key()</h2>
712
713<div class="memitem">
714<div class="memproto">
715      <table class="memname">
716        <tr>
717          <td class="memname">void HC_DEPRECATED DES_random_key </td>
718          <td>(</td>
719          <td class="paramtype">DES_cblock *&#160;</td>
720          <td class="paramname"><em>key</em></td><td>)</td>
721          <td></td>
722        </tr>
723      </table>
724</div><div class="memdoc">
725<p>Generate a random key, deprecated since it doesn't return an error code, use <a class="el" href="group__hcrypto__des.html#gacd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key()</a>.</p>
726<dl class="params"><dt>Parameters</dt><dd>
727  <table class="params">
728    <tr><td class="paramname">key</td><td>is set to a random key. </td></tr>
729  </table>
730  </dd>
731</dl>
732
733</div>
734</div>
735<a id="gaad10e059974f3048b3de49599989486b"></a>
736<h2 class="memtitle"><span class="permalink"><a href="#gaad10e059974f3048b3de49599989486b">&#9670;&nbsp;</a></span>DES_set_key()</h2>
737
738<div class="memitem">
739<div class="memproto">
740      <table class="memname">
741        <tr>
742          <td class="memname">int HC_DEPRECATED DES_set_key </td>
743          <td>(</td>
744          <td class="paramtype">DES_cblock *&#160;</td>
745          <td class="paramname"><em>key</em>, </td>
746        </tr>
747        <tr>
748          <td class="paramkey"></td>
749          <td></td>
750          <td class="paramtype">DES_key_schedule *&#160;</td>
751          <td class="paramname"><em>ks</em>&#160;</td>
752        </tr>
753        <tr>
754          <td></td>
755          <td>)</td>
756          <td></td><td></td>
757        </tr>
758      </table>
759</div><div class="memdoc">
760<p>Setup a des key schedule from a key. Deprecated function, use <a class="el" href="group__hcrypto__des.html#ga8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked()</a> or <a class="el" href="group__hcrypto__des.html#ga3157dd2419a25cd4381867f012117d07">DES_set_key_checked()</a> instead.</p>
761<dl class="params"><dt>Parameters</dt><dd>
762  <table class="params">
763    <tr><td class="paramname">key</td><td>a key to initialize the key schedule with. </td></tr>
764    <tr><td class="paramname">ks</td><td>a key schedule to initialize.</td></tr>
765  </table>
766  </dd>
767</dl>
768<dl class="section return"><dt>Returns</dt><dd>0 on success </dd></dl>
769
770</div>
771</div>
772<a id="ga3157dd2419a25cd4381867f012117d07"></a>
773<h2 class="memtitle"><span class="permalink"><a href="#ga3157dd2419a25cd4381867f012117d07">&#9670;&nbsp;</a></span>DES_set_key_checked()</h2>
774
775<div class="memitem">
776<div class="memproto">
777      <table class="memname">
778        <tr>
779          <td class="memname">int DES_set_key_checked </td>
780          <td>(</td>
781          <td class="paramtype">DES_cblock *&#160;</td>
782          <td class="paramname"><em>key</em>, </td>
783        </tr>
784        <tr>
785          <td class="paramkey"></td>
786          <td></td>
787          <td class="paramtype">DES_key_schedule *&#160;</td>
788          <td class="paramname"><em>ks</em>&#160;</td>
789        </tr>
790        <tr>
791          <td></td>
792          <td>)</td>
793          <td></td><td></td>
794        </tr>
795      </table>
796</div><div class="memdoc">
797<p>Just like <a class="el" href="group__hcrypto__des.html#ga8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked()</a> except checking that the key is not weak for or have correct parity.</p>
798<dl class="params"><dt>Parameters</dt><dd>
799  <table class="params">
800    <tr><td class="paramname">key</td><td>a key to initialize the key schedule with. </td></tr>
801    <tr><td class="paramname">ks</td><td>a key schedule to initialize.</td></tr>
802  </table>
803  </dd>
804</dl>
805<dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl>
806
807</div>
808</div>
809<a id="ga8131d59b5c0f65ca8bba0873932680d5"></a>
810<h2 class="memtitle"><span class="permalink"><a href="#ga8131d59b5c0f65ca8bba0873932680d5">&#9670;&nbsp;</a></span>DES_set_key_unchecked()</h2>
811
812<div class="memitem">
813<div class="memproto">
814      <table class="memname">
815        <tr>
816          <td class="memname">int DES_set_key_unchecked </td>
817          <td>(</td>
818          <td class="paramtype">DES_cblock *&#160;</td>
819          <td class="paramname"><em>key</em>, </td>
820        </tr>
821        <tr>
822          <td class="paramkey"></td>
823          <td></td>
824          <td class="paramtype">DES_key_schedule *&#160;</td>
825          <td class="paramname"><em>ks</em>&#160;</td>
826        </tr>
827        <tr>
828          <td></td>
829          <td>)</td>
830          <td></td><td></td>
831        </tr>
832      </table>
833</div><div class="memdoc">
834<p>Setup a des key schedule from a key. The key is no longer needed after this transaction and can cleared.</p>
835<p>Does NOT check that the key is weak for or have wrong parity.</p>
836<dl class="params"><dt>Parameters</dt><dd>
837  <table class="params">
838    <tr><td class="paramname">key</td><td>a key to initialize the key schedule with. </td></tr>
839    <tr><td class="paramname">ks</td><td>a key schedule to initialize.</td></tr>
840  </table>
841  </dd>
842</dl>
843<dl class="section return"><dt>Returns</dt><dd>0 on success </dd></dl>
844
845</div>
846</div>
847<a id="ga4179bef43ceb72cc2034f39e7d2d5ae4"></a>
848<h2 class="memtitle"><span class="permalink"><a href="#ga4179bef43ceb72cc2034f39e7d2d5ae4">&#9670;&nbsp;</a></span>DES_set_odd_parity()</h2>
849
850<div class="memitem">
851<div class="memproto">
852      <table class="memname">
853        <tr>
854          <td class="memname">void DES_set_odd_parity </td>
855          <td>(</td>
856          <td class="paramtype">DES_cblock *&#160;</td>
857          <td class="paramname"><em>key</em></td><td>)</td>
858          <td></td>
859        </tr>
860      </table>
861</div><div class="memdoc">
862<p>Set the parity of the key block, used to generate a des key from a random key. See <a class="el" href="page_des.html#des_keygen">DES key generation</a>.</p>
863<dl class="params"><dt>Parameters</dt><dd>
864  <table class="params">
865    <tr><td class="paramname">key</td><td>key to fixup the parity for. </td></tr>
866  </table>
867  </dd>
868</dl>
869
870</div>
871</div>
872<a id="ga60893cdc75d9ce8cbf4a5d7a874855c8"></a>
873<h2 class="memtitle"><span class="permalink"><a href="#ga60893cdc75d9ce8cbf4a5d7a874855c8">&#9670;&nbsp;</a></span>DES_string_to_key()</h2>
874
875<div class="memitem">
876<div class="memproto">
877      <table class="memname">
878        <tr>
879          <td class="memname">void DES_string_to_key </td>
880          <td>(</td>
881          <td class="paramtype">const char *&#160;</td>
882          <td class="paramname"><em>str</em>, </td>
883        </tr>
884        <tr>
885          <td class="paramkey"></td>
886          <td></td>
887          <td class="paramtype">DES_cblock *&#160;</td>
888          <td class="paramname"><em>key</em>&#160;</td>
889        </tr>
890        <tr>
891          <td></td>
892          <td>)</td>
893          <td></td><td></td>
894        </tr>
895      </table>
896</div><div class="memdoc">
897<p>Convert a string to a DES key. Use something like <a class="el" href="group__hcrypto__misc.html#gaece1627cc5535ef7b5e86e2f5a3eec04">PKCS5_PBKDF2_HMAC_SHA1()</a> to create key from passwords.</p>
898<dl class="params"><dt>Parameters</dt><dd>
899  <table class="params">
900    <tr><td class="paramname">str</td><td>The string to convert to a key </td></tr>
901    <tr><td class="paramname">key</td><td>the resulting key </td></tr>
902  </table>
903  </dd>
904</dl>
905
906</div>
907</div>
908</div><!-- contents -->
909<hr size="1"><address style="text-align: right;"><small>
910Generated 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>
911</body>
912</html>
913