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>Heimdal crypto library: DES crypto functions</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 <link href="tabs.css" rel="stylesheet" type="text/css">
8 <a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a>
10 <!-- end of header marker -->
11 <!-- Generated by Doxygen 1.5.6 -->
12 <div class="navigation" id="top">
15 <li><a href="index.html"><span>Main Page</span></a></li>
16 <li><a href="modules.html"><span>Modules</span></a></li>
17 <li><a href="examples.html"><span>Examples</span></a></li>
21 <div class="contents">
22 <h1>DES crypto functions</h1><table border="0" cellpadding="0" cellspacing="0">
24 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
25 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g4179bef43ceb72cc2034f39e7d2d5ae4">DES_set_odd_parity</a> (DES_cblock *key)</td></tr>
27 <tr><td class="memItemLeft" nowrap align="right" valign="top">int HC_DEPRECATED </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gcf0d611296ad70edf90a3130b2f62c71">DES_check_key_parity</a> (DES_cblock *key)</td></tr>
29 <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g0d8a49cafee4be6cd3922bfb6323fd2d">DES_is_weak_key</a> (DES_cblock *key)</td></tr>
31 <tr><td class="memItemLeft" nowrap align="right" valign="top">int HC_DEPRECATED </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gad10e059974f3048b3de49599989486b">DES_set_key</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
33 <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
35 <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g3157dd2419a25cd4381867f012117d07">DES_set_key_checked</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
37 <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gf5b4967f13a4a52c214c28b6e57a3a95">DES_key_sched</a> (DES_cblock *key, DES_key_schedule *ks)</td></tr>
39 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g39662a8c2218601d402a895f08813662">DES_encrypt</a> (uint32_t u[2], DES_key_schedule *ks, int encp)</td></tr>
41 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#ga5cf9203994e3a5ece2ef7a85e7a2875">DES_ecb_encrypt</a> (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks, int encp)</td></tr>
43 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g4946e6d9a944f8f029df4e6c68d1868e">DES_cbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)</td></tr>
45 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g336e497f66748e92b93fc0b4512d78c2">DES_pcbc_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)</td></tr>
47 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gf2de06942efdf1bd45ce0a8c0597654e">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>
49 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g36a83e8a4de4ac0f93ea932229dc3607">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>
51 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g9c2b24baea3d4e69524335a79e22ae2d">DES_cfb64_encrypt</a> (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int *num, int encp)</td></tr>
53 <tr><td class="memItemLeft" nowrap align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gbf8f1cc95fd03ec1ef59563f9659ec42">DES_cbc_cksum</a> (const void *in, DES_cblock *output, long length, DES_key_schedule *ks, DES_cblock *iv)</td></tr>
55 <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g60893cdc75d9ce8cbf4a5d7a874855c8">DES_string_to_key</a> (const char *str, DES_cblock *key)</td></tr>
57 <tr><td class="memItemLeft" nowrap align="right" valign="top">int HC_DEPRECATED </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gcd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key</a> (DES_cblock *key)</td></tr>
59 <tr><td class="memItemLeft" nowrap align="right" valign="top">void HC_DEPRECATED </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#g45739e74db49d07bfaa0d7918efd4875">DES_init_random_number_generator</a> (DES_cblock *seed)</td></tr>
61 <tr><td class="memItemLeft" nowrap align="right" valign="top">void HC_DEPRECATED </td><td class="memItemRight" valign="bottom"><a class="el" href="group__hcrypto__des.html#gd70d485549f7444589f3283e938c0258">DES_random_key</a> (DES_cblock *key)</td></tr>
64 <hr><a name="_details"></a><h2>Detailed Description</h2>
65 See the <a class="el" href="page_des.html">DES - Data Encryption Standard crypto interface</a> for description and examples. <hr><h2>Function Documentation</h2>
66 <a class="anchor" name="gbf8f1cc95fd03ec1ef59563f9659ec42"></a><!-- doxytag: member="des.c::DES_cbc_cksum" ref="gbf8f1cc95fd03ec1ef59563f9659ec42" args="(const void *in, DES_cblock *output, long length, DES_key_schedule *ks, DES_cblock *iv)" -->
68 <div class="memproto">
69 <table class="memname">
71 <td class="memname">uint32_t DES_cbc_cksum </td>
73 <td class="paramtype">const void * </td>
74 <td class="paramname"> <em>in</em>, </td>
77 <td class="paramkey"></td>
79 <td class="paramtype">DES_cblock * </td>
80 <td class="paramname"> <em>output</em>, </td>
83 <td class="paramkey"></td>
85 <td class="paramtype">long </td>
86 <td class="paramname"> <em>length</em>, </td>
89 <td class="paramkey"></td>
91 <td class="paramtype">DES_key_schedule * </td>
92 <td class="paramname"> <em>ks</em>, </td>
95 <td class="paramkey"></td>
97 <td class="paramtype">DES_cblock * </td>
98 <td class="paramname"> <em>iv</em></td><td> </td>
103 <td></td><td></td><td></td>
110 Crete a checksum using DES in CBC encryption mode. This mode is only used for Kerberos 4, and it should stay that way.<p>
111 The IV must always be diffrent for diffrent input data blocks.<p>
112 <dl compact><dt><b>Parameters:</b></dt><dd>
113 <table border="0" cellspacing="2" cellpadding="0">
114 <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to checksum </td></tr>
115 <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>the checksum </td></tr>
116 <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr>
117 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr>
118 <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr>
124 <a class="anchor" name="g4946e6d9a944f8f029df4e6c68d1868e"></a><!-- doxytag: member="des.c::DES_cbc_encrypt" ref="g4946e6d9a944f8f029df4e6c68d1868e" args="(const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)" -->
125 <div class="memitem">
126 <div class="memproto">
127 <table class="memname">
129 <td class="memname">void DES_cbc_encrypt </td>
131 <td class="paramtype">const void * </td>
132 <td class="paramname"> <em>in</em>, </td>
135 <td class="paramkey"></td>
137 <td class="paramtype">void * </td>
138 <td class="paramname"> <em>out</em>, </td>
141 <td class="paramkey"></td>
143 <td class="paramtype">long </td>
144 <td class="paramname"> <em>length</em>, </td>
147 <td class="paramkey"></td>
149 <td class="paramtype">DES_key_schedule * </td>
150 <td class="paramname"> <em>ks</em>, </td>
153 <td class="paramkey"></td>
155 <td class="paramtype">DES_cblock * </td>
156 <td class="paramname"> <em>iv</em>, </td>
159 <td class="paramkey"></td>
161 <td class="paramtype">int </td>
162 <td class="paramname"> <em>encp</em></td><td> </td>
167 <td></td><td></td><td></td>
174 Encrypt/decrypt a block using DES in Chain Block Cipher mode (cbc).<p>
175 The IV must always be diffrent for diffrent input data blocks.<p>
176 <dl compact><dt><b>Parameters:</b></dt><dd>
177 <table border="0" cellspacing="2" cellpadding="0">
178 <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr>
179 <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr>
180 <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr>
181 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr>
182 <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr>
183 <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
189 <a class="anchor" name="g9c2b24baea3d4e69524335a79e22ae2d"></a><!-- doxytag: member="des.c::DES_cfb64_encrypt" ref="g9c2b24baea3d4e69524335a79e22ae2d" args="(const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int *num, int encp)" -->
190 <div class="memitem">
191 <div class="memproto">
192 <table class="memname">
194 <td class="memname">void DES_cfb64_encrypt </td>
196 <td class="paramtype">const void * </td>
197 <td class="paramname"> <em>in</em>, </td>
200 <td class="paramkey"></td>
202 <td class="paramtype">void * </td>
203 <td class="paramname"> <em>out</em>, </td>
206 <td class="paramkey"></td>
208 <td class="paramtype">long </td>
209 <td class="paramname"> <em>length</em>, </td>
212 <td class="paramkey"></td>
214 <td class="paramtype">DES_key_schedule * </td>
215 <td class="paramname"> <em>ks</em>, </td>
218 <td class="paramkey"></td>
220 <td class="paramtype">DES_cblock * </td>
221 <td class="paramname"> <em>iv</em>, </td>
224 <td class="paramkey"></td>
226 <td class="paramtype">int * </td>
227 <td class="paramname"> <em>num</em>, </td>
230 <td class="paramkey"></td>
232 <td class="paramtype">int </td>
233 <td class="paramname"> <em>encp</em></td><td> </td>
238 <td></td><td></td><td></td>
245 Encrypt/decrypt using DES in cipher feedback mode with 64 bit feedback.<p>
246 The IV must always be diffrent for diffrent input data blocks.<p>
247 <dl compact><dt><b>Parameters:</b></dt><dd>
248 <table border="0" cellspacing="2" cellpadding="0">
249 <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr>
250 <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr>
251 <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr>
252 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr>
253 <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr>
254 <tr><td valign="top"></td><td valign="top"><em>num</em> </td><td>offset into in cipher block encryption/decryption stop last time. </td></tr>
255 <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
261 <a class="anchor" name="gcf0d611296ad70edf90a3130b2f62c71"></a><!-- doxytag: member="des.c::DES_check_key_parity" ref="gcf0d611296ad70edf90a3130b2f62c71" args="(DES_cblock *key)" -->
262 <div class="memitem">
263 <div class="memproto">
264 <table class="memname">
266 <td class="memname">int HC_DEPRECATED DES_check_key_parity </td>
268 <td class="paramtype">DES_cblock * </td>
269 <td class="paramname"> <em>key</em> </td>
270 <td> ) </td>
278 Check if the key have correct parity.<p>
279 <dl compact><dt><b>Parameters:</b></dt><dd>
280 <table border="0" cellspacing="2" cellpadding="0">
281 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>key to check the parity. </td></tr>
284 <dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>
288 <a class="anchor" name="gf2de06942efdf1bd45ce0a8c0597654e"></a><!-- doxytag: member="des.c::DES_ecb3_encrypt" ref="gf2de06942efdf1bd45ce0a8c0597654e" args="(DES_cblock *input, DES_cblock *output, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, int encp)" -->
289 <div class="memitem">
290 <div class="memproto">
291 <table class="memname">
293 <td class="memname">void DES_ecb3_encrypt </td>
295 <td class="paramtype">DES_cblock * </td>
296 <td class="paramname"> <em>input</em>, </td>
299 <td class="paramkey"></td>
301 <td class="paramtype">DES_cblock * </td>
302 <td class="paramname"> <em>output</em>, </td>
305 <td class="paramkey"></td>
307 <td class="paramtype">DES_key_schedule * </td>
308 <td class="paramname"> <em>ks1</em>, </td>
311 <td class="paramkey"></td>
313 <td class="paramtype">DES_key_schedule * </td>
314 <td class="paramname"> <em>ks2</em>, </td>
317 <td class="paramkey"></td>
319 <td class="paramtype">DES_key_schedule * </td>
320 <td class="paramname"> <em>ks3</em>, </td>
323 <td class="paramkey"></td>
325 <td class="paramtype">int </td>
326 <td class="paramname"> <em>encp</em></td><td> </td>
331 <td></td><td></td><td></td>
338 Encrypt/decrypt a block using triple DES using EDE mode, encrypt/decrypt/encrypt.<p>
339 <dl compact><dt><b>Parameters:</b></dt><dd>
340 <table border="0" cellspacing="2" cellpadding="0">
341 <tr><td valign="top"></td><td valign="top"><em>input</em> </td><td>data to encrypt </td></tr>
342 <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>data to encrypt </td></tr>
343 <tr><td valign="top"></td><td valign="top"><em>ks1</em> </td><td>key schedule to use </td></tr>
344 <tr><td valign="top"></td><td valign="top"><em>ks2</em> </td><td>key schedule to use </td></tr>
345 <tr><td valign="top"></td><td valign="top"><em>ks3</em> </td><td>key schedule to use </td></tr>
346 <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
352 <a class="anchor" name="ga5cf9203994e3a5ece2ef7a85e7a2875"></a><!-- doxytag: member="des.c::DES_ecb_encrypt" ref="ga5cf9203994e3a5ece2ef7a85e7a2875" args="(DES_cblock *input, DES_cblock *output, DES_key_schedule *ks, int encp)" -->
353 <div class="memitem">
354 <div class="memproto">
355 <table class="memname">
357 <td class="memname">void DES_ecb_encrypt </td>
359 <td class="paramtype">DES_cblock * </td>
360 <td class="paramname"> <em>input</em>, </td>
363 <td class="paramkey"></td>
365 <td class="paramtype">DES_cblock * </td>
366 <td class="paramname"> <em>output</em>, </td>
369 <td class="paramkey"></td>
371 <td class="paramtype">DES_key_schedule * </td>
372 <td class="paramname"> <em>ks</em>, </td>
375 <td class="paramkey"></td>
377 <td class="paramtype">int </td>
378 <td class="paramname"> <em>encp</em></td><td> </td>
383 <td></td><td></td><td></td>
390 Encrypt/decrypt a block using DES.<p>
391 <dl compact><dt><b>Parameters:</b></dt><dd>
392 <table border="0" cellspacing="2" cellpadding="0">
393 <tr><td valign="top"></td><td valign="top"><em>input</em> </td><td>data to encrypt </td></tr>
394 <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>data to encrypt </td></tr>
395 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr>
396 <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
402 <a class="anchor" name="g36a83e8a4de4ac0f93ea932229dc3607"></a><!-- doxytag: member="des.c::DES_ede3_cbc_encrypt" ref="g36a83e8a4de4ac0f93ea932229dc3607" args="(const void *in, void *out, long length, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *iv, int encp)" -->
403 <div class="memitem">
404 <div class="memproto">
405 <table class="memname">
407 <td class="memname">void DES_ede3_cbc_encrypt </td>
409 <td class="paramtype">const void * </td>
410 <td class="paramname"> <em>in</em>, </td>
413 <td class="paramkey"></td>
415 <td class="paramtype">void * </td>
416 <td class="paramname"> <em>out</em>, </td>
419 <td class="paramkey"></td>
421 <td class="paramtype">long </td>
422 <td class="paramname"> <em>length</em>, </td>
425 <td class="paramkey"></td>
427 <td class="paramtype">DES_key_schedule * </td>
428 <td class="paramname"> <em>ks1</em>, </td>
431 <td class="paramkey"></td>
433 <td class="paramtype">DES_key_schedule * </td>
434 <td class="paramname"> <em>ks2</em>, </td>
437 <td class="paramkey"></td>
439 <td class="paramtype">DES_key_schedule * </td>
440 <td class="paramname"> <em>ks3</em>, </td>
443 <td class="paramkey"></td>
445 <td class="paramtype">DES_cblock * </td>
446 <td class="paramname"> <em>iv</em>, </td>
449 <td class="paramkey"></td>
451 <td class="paramtype">int </td>
452 <td class="paramname"> <em>encp</em></td><td> </td>
457 <td></td><td></td><td></td>
464 Encrypt/decrypt using Triple DES in Chain Block Cipher mode (cbc).<p>
465 The IV must always be diffrent for diffrent input data blocks.<p>
466 <dl compact><dt><b>Parameters:</b></dt><dd>
467 <table border="0" cellspacing="2" cellpadding="0">
468 <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr>
469 <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr>
470 <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr>
471 <tr><td valign="top"></td><td valign="top"><em>ks1</em> </td><td>key schedule to use </td></tr>
472 <tr><td valign="top"></td><td valign="top"><em>ks2</em> </td><td>key schedule to use </td></tr>
473 <tr><td valign="top"></td><td valign="top"><em>ks3</em> </td><td>key schedule to use </td></tr>
474 <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr>
475 <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
481 <a class="anchor" name="g39662a8c2218601d402a895f08813662"></a><!-- doxytag: member="des.c::DES_encrypt" ref="g39662a8c2218601d402a895f08813662" args="(uint32_t u[2], DES_key_schedule *ks, int encp)" -->
482 <div class="memitem">
483 <div class="memproto">
484 <table class="memname">
486 <td class="memname">void DES_encrypt </td>
488 <td class="paramtype">uint32_t </td>
489 <td class="paramname"> <em>u</em>[2], </td>
492 <td class="paramkey"></td>
494 <td class="paramtype">DES_key_schedule * </td>
495 <td class="paramname"> <em>ks</em>, </td>
498 <td class="paramkey"></td>
500 <td class="paramtype">int </td>
501 <td class="paramname"> <em>encp</em></td><td> </td>
506 <td></td><td></td><td></td>
513 Encrypt/decrypt a block using DES. Also called ECB mode<p>
514 <dl compact><dt><b>Parameters:</b></dt><dd>
515 <table border="0" cellspacing="2" cellpadding="0">
516 <tr><td valign="top"></td><td valign="top"><em>u</em> </td><td>data to encrypt </td></tr>
517 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr>
518 <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
524 <a class="anchor" name="g45739e74db49d07bfaa0d7918efd4875"></a><!-- doxytag: member="rnd_keys.c::DES_init_random_number_generator" ref="g45739e74db49d07bfaa0d7918efd4875" args="(DES_cblock *seed)" -->
525 <div class="memitem">
526 <div class="memproto">
527 <table class="memname">
529 <td class="memname">void HC_DEPRECATED DES_init_random_number_generator </td>
531 <td class="paramtype">DES_cblock * </td>
532 <td class="paramname"> <em>seed</em> </td>
533 <td> ) </td>
541 Seed the random number generator. Deprecated, use <a class="el" href="page_rand.html">RAND - random number</a><p>
542 <dl compact><dt><b>Parameters:</b></dt><dd>
543 <table border="0" cellspacing="2" cellpadding="0">
544 <tr><td valign="top"></td><td valign="top"><em>seed</em> </td><td>a seed to seed that random number generate with. </td></tr>
550 <a class="anchor" name="g0d8a49cafee4be6cd3922bfb6323fd2d"></a><!-- doxytag: member="des.c::DES_is_weak_key" ref="g0d8a49cafee4be6cd3922bfb6323fd2d" args="(DES_cblock *key)" -->
551 <div class="memitem">
552 <div class="memproto">
553 <table class="memname">
555 <td class="memname">int DES_is_weak_key </td>
557 <td class="paramtype">DES_cblock * </td>
558 <td class="paramname"> <em>key</em> </td>
559 <td> ) </td>
567 Checks if the key is any of the weaks keys that makes DES attacks trival.<p>
568 <dl compact><dt><b>Parameters:</b></dt><dd>
569 <table border="0" cellspacing="2" cellpadding="0">
570 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>key to check.</td></tr>
573 <dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the key is weak, 0 otherwise. </dd></dl>
577 <a class="anchor" name="gf5b4967f13a4a52c214c28b6e57a3a95"></a><!-- doxytag: member="des.c::DES_key_sched" ref="gf5b4967f13a4a52c214c28b6e57a3a95" args="(DES_cblock *key, DES_key_schedule *ks)" -->
578 <div class="memitem">
579 <div class="memproto">
580 <table class="memname">
582 <td class="memname">int DES_key_sched </td>
584 <td class="paramtype">DES_cblock * </td>
585 <td class="paramname"> <em>key</em>, </td>
588 <td class="paramkey"></td>
590 <td class="paramtype">DES_key_schedule * </td>
591 <td class="paramname"> <em>ks</em></td><td> </td>
596 <td></td><td></td><td></td>
603 Compatibility function for eay libdes, works just like <a class="el" href="group__hcrypto__des.html#g3157dd2419a25cd4381867f012117d07">DES_set_key_checked()</a>.<p>
604 <dl compact><dt><b>Parameters:</b></dt><dd>
605 <table border="0" cellspacing="2" cellpadding="0">
606 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr>
607 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr>
610 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl>
614 <a class="anchor" name="gcd3642bcd8a7e93ea977786e5b540d5f"></a><!-- doxytag: member="rnd_keys.c::DES_new_random_key" ref="gcd3642bcd8a7e93ea977786e5b540d5f" args="(DES_cblock *key)" -->
615 <div class="memitem">
616 <div class="memproto">
617 <table class="memname">
619 <td class="memname">int HC_DEPRECATED DES_new_random_key </td>
621 <td class="paramtype">DES_cblock * </td>
622 <td class="paramname"> <em>key</em> </td>
623 <td> ) </td>
631 Generate a random des key using a random block, fixup parity and skip weak keys.<p>
632 <dl compact><dt><b>Parameters:</b></dt><dd>
633 <table border="0" cellspacing="2" cellpadding="0">
634 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>is set to a random key.</td></tr>
637 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non zero on random number generator failure. </dd></dl>
641 <a class="anchor" name="g336e497f66748e92b93fc0b4512d78c2"></a><!-- doxytag: member="des.c::DES_pcbc_encrypt" ref="g336e497f66748e92b93fc0b4512d78c2" args="(const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)" -->
642 <div class="memitem">
643 <div class="memproto">
644 <table class="memname">
646 <td class="memname">void DES_pcbc_encrypt </td>
648 <td class="paramtype">const void * </td>
649 <td class="paramname"> <em>in</em>, </td>
652 <td class="paramkey"></td>
654 <td class="paramtype">void * </td>
655 <td class="paramname"> <em>out</em>, </td>
658 <td class="paramkey"></td>
660 <td class="paramtype">long </td>
661 <td class="paramname"> <em>length</em>, </td>
664 <td class="paramkey"></td>
666 <td class="paramtype">DES_key_schedule * </td>
667 <td class="paramname"> <em>ks</em>, </td>
670 <td class="paramkey"></td>
672 <td class="paramtype">DES_cblock * </td>
673 <td class="paramname"> <em>iv</em>, </td>
676 <td class="paramkey"></td>
678 <td class="paramtype">int </td>
679 <td class="paramname"> <em>encp</em></td><td> </td>
684 <td></td><td></td><td></td>
691 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>
692 The IV must always be diffrent for diffrent input data blocks.<p>
693 <dl compact><dt><b>Parameters:</b></dt><dd>
694 <table border="0" cellspacing="2" cellpadding="0">
695 <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr>
696 <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr>
697 <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr>
698 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr>
699 <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr>
700 <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr>
706 <a class="anchor" name="gd70d485549f7444589f3283e938c0258"></a><!-- doxytag: member="rnd_keys.c::DES_random_key" ref="gd70d485549f7444589f3283e938c0258" args="(DES_cblock *key)" -->
707 <div class="memitem">
708 <div class="memproto">
709 <table class="memname">
711 <td class="memname">void HC_DEPRECATED DES_random_key </td>
713 <td class="paramtype">DES_cblock * </td>
714 <td class="paramname"> <em>key</em> </td>
715 <td> ) </td>
723 Generate a random key, deprecated since it doesn't return an error code, use <a class="el" href="group__hcrypto__des.html#gcd3642bcd8a7e93ea977786e5b540d5f">DES_new_random_key()</a>.<p>
724 <dl compact><dt><b>Parameters:</b></dt><dd>
725 <table border="0" cellspacing="2" cellpadding="0">
726 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>is set to a random key. </td></tr>
732 <a class="anchor" name="gad10e059974f3048b3de49599989486b"></a><!-- doxytag: member="des.c::DES_set_key" ref="gad10e059974f3048b3de49599989486b" args="(DES_cblock *key, DES_key_schedule *ks)" -->
733 <div class="memitem">
734 <div class="memproto">
735 <table class="memname">
737 <td class="memname">int HC_DEPRECATED DES_set_key </td>
739 <td class="paramtype">DES_cblock * </td>
740 <td class="paramname"> <em>key</em>, </td>
743 <td class="paramkey"></td>
745 <td class="paramtype">DES_key_schedule * </td>
746 <td class="paramname"> <em>ks</em></td><td> </td>
751 <td></td><td></td><td></td>
758 Setup a des key schedule from a key. Deprecated function, use <a class="el" href="group__hcrypto__des.html#g8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked()</a> or <a class="el" href="group__hcrypto__des.html#g3157dd2419a25cd4381867f012117d07">DES_set_key_checked()</a> instead.<p>
759 <dl compact><dt><b>Parameters:</b></dt><dd>
760 <table border="0" cellspacing="2" cellpadding="0">
761 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr>
762 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr>
765 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl>
769 <a class="anchor" name="g3157dd2419a25cd4381867f012117d07"></a><!-- doxytag: member="des.c::DES_set_key_checked" ref="g3157dd2419a25cd4381867f012117d07" args="(DES_cblock *key, DES_key_schedule *ks)" -->
770 <div class="memitem">
771 <div class="memproto">
772 <table class="memname">
774 <td class="memname">int DES_set_key_checked </td>
776 <td class="paramtype">DES_cblock * </td>
777 <td class="paramname"> <em>key</em>, </td>
780 <td class="paramkey"></td>
782 <td class="paramtype">DES_key_schedule * </td>
783 <td class="paramname"> <em>ks</em></td><td> </td>
788 <td></td><td></td><td></td>
795 Just like <a class="el" href="group__hcrypto__des.html#g8131d59b5c0f65ca8bba0873932680d5">DES_set_key_unchecked()</a> except checking that the key is not weak for or have correct parity.<p>
796 <dl compact><dt><b>Parameters:</b></dt><dd>
797 <table border="0" cellspacing="2" cellpadding="0">
798 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr>
799 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr>
802 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl>
806 <a class="anchor" name="g8131d59b5c0f65ca8bba0873932680d5"></a><!-- doxytag: member="des.c::DES_set_key_unchecked" ref="g8131d59b5c0f65ca8bba0873932680d5" args="(DES_cblock *key, DES_key_schedule *ks)" -->
807 <div class="memitem">
808 <div class="memproto">
809 <table class="memname">
811 <td class="memname">int DES_set_key_unchecked </td>
813 <td class="paramtype">DES_cblock * </td>
814 <td class="paramname"> <em>key</em>, </td>
817 <td class="paramkey"></td>
819 <td class="paramtype">DES_key_schedule * </td>
820 <td class="paramname"> <em>ks</em></td><td> </td>
825 <td></td><td></td><td></td>
832 Setup a des key schedule from a key. The key is no longer needed after this transaction and can cleared.<p>
833 Does NOT check that the key is weak for or have wrong parity.<p>
834 <dl compact><dt><b>Parameters:</b></dt><dd>
835 <table border="0" cellspacing="2" cellpadding="0">
836 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr>
837 <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr>
840 <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl>
844 <a class="anchor" name="g4179bef43ceb72cc2034f39e7d2d5ae4"></a><!-- doxytag: member="des.c::DES_set_odd_parity" ref="g4179bef43ceb72cc2034f39e7d2d5ae4" args="(DES_cblock *key)" -->
845 <div class="memitem">
846 <div class="memproto">
847 <table class="memname">
849 <td class="memname">void DES_set_odd_parity </td>
851 <td class="paramtype">DES_cblock * </td>
852 <td class="paramname"> <em>key</em> </td>
853 <td> ) </td>
861 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>
862 <dl compact><dt><b>Parameters:</b></dt><dd>
863 <table border="0" cellspacing="2" cellpadding="0">
864 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>key to fixup the parity for. </td></tr>
870 <a class="anchor" name="g60893cdc75d9ce8cbf4a5d7a874855c8"></a><!-- doxytag: member="des.c::DES_string_to_key" ref="g60893cdc75d9ce8cbf4a5d7a874855c8" args="(const char *str, DES_cblock *key)" -->
871 <div class="memitem">
872 <div class="memproto">
873 <table class="memname">
875 <td class="memname">void DES_string_to_key </td>
877 <td class="paramtype">const char * </td>
878 <td class="paramname"> <em>str</em>, </td>
881 <td class="paramkey"></td>
883 <td class="paramtype">DES_cblock * </td>
884 <td class="paramname"> <em>key</em></td><td> </td>
889 <td></td><td></td><td></td>
896 Convert a string to a DES key. Use something like <a class="el" href="group__hcrypto__misc.html#gece1627cc5535ef7b5e86e2f5a3eec04">PKCS5_PBKDF2_HMAC_SHA1()</a> to create key from passwords.<p>
897 <dl compact><dt><b>Parameters:</b></dt><dd>
898 <table border="0" cellspacing="2" cellpadding="0">
899 <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>The string to convert to a key </td></tr>
900 <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the resulting key </td></tr>
907 <hr size="1"><address style="text-align: right;"><small>
908 Generated on Wed Jan 11 14:07:38 2012 for Heimdal crypto library by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>