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&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 </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"> </td></tr> 34<tr class="memitem:gacf0d611296ad70edf90a3130b2f62c71"><td class="memItemLeft" align="right" valign="top">int HC_DEPRECATED </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"> </td></tr> 36<tr class="memitem:ga0d8a49cafee4be6cd3922bfb6323fd2d"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 38<tr class="memitem:gaad10e059974f3048b3de49599989486b"><td class="memItemLeft" align="right" valign="top">int HC_DEPRECATED </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"> </td></tr> 40<tr class="memitem:ga8131d59b5c0f65ca8bba0873932680d5"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 42<tr class="memitem:ga3157dd2419a25cd4381867f012117d07"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 44<tr class="memitem:gaf5b4967f13a4a52c214c28b6e57a3a95"><td class="memItemLeft" align="right" valign="top">int </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"> </td></tr> 46<tr class="memitem:ga39662a8c2218601d402a895f08813662"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 48<tr class="memitem:gaa5cf9203994e3a5ece2ef7a85e7a2875"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 50<tr class="memitem:ga4946e6d9a944f8f029df4e6c68d1868e"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 52<tr class="memitem:ga336e497f66748e92b93fc0b4512d78c2"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 54<tr class="memitem:gaf2de06942efdf1bd45ce0a8c0597654e"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 56<tr class="memitem:ga36a83e8a4de4ac0f93ea932229dc3607"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 58<tr class="memitem:ga9c2b24baea3d4e69524335a79e22ae2d"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 60<tr class="memitem:gabf8f1cc95fd03ec1ef59563f9659ec42"><td class="memItemLeft" align="right" valign="top">uint32_t </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"> </td></tr> 62<tr class="memitem:ga60893cdc75d9ce8cbf4a5d7a874855c8"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> 64<tr class="memitem:gacd3642bcd8a7e93ea977786e5b540d5f"><td class="memItemLeft" align="right" valign="top">int HC_DEPRECATED </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"> </td></tr> 66<tr class="memitem:ga45739e74db49d07bfaa0d7918efd4875"><td class="memItemLeft" align="right" valign="top">void HC_DEPRECATED </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"> </td></tr> 68<tr class="memitem:gad70d485549f7444589f3283e938c0258"><td class="memItemLeft" align="right" valign="top">void HC_DEPRECATED </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"> </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">◆ </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 * </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 * </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 </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 * </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 * </td> 108 <td class="paramname"><em>iv</em> </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">◆ </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 * </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 * </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 </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 * </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 * </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 </td> 172 <td class="paramname"><em>encp</em> </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">◆ </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 * </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 * </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 </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 * </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 * </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 * </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 </td> 243 <td class="paramname"><em>encp</em> </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">◆ </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 * </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">◆ </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 * </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 * </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 * </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 * </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 * </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 </td> 335 <td class="paramname"><em>encp</em> </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">◆ </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 * </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 * </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 * </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 </td> 387 <td class="paramname"><em>encp</em> </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">◆ </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 * </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 * </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 </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 * </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 * </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 * </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 * </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 </td> 461 <td class="paramname"><em>encp</em> </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">◆ </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 </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 * </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 </td> 510 <td class="paramname"><em>encp</em> </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">◆ </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 * </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">◆ </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 * </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">◆ </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 * </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 * </td> 598 <td class="paramname"><em>ks</em> </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">◆ </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 * </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">◆ </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 * </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 * </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 </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 * </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 * </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 </td> 685 <td class="paramname"><em>encp</em> </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">◆ </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 * </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">◆ </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 * </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 * </td> 751 <td class="paramname"><em>ks</em> </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">◆ </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 * </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 * </td> 788 <td class="paramname"><em>ks</em> </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">◆ </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 * </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 * </td> 825 <td class="paramname"><em>ks</em> </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">◆ </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 * </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">◆ </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 * </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 * </td> 888 <td class="paramname"><em>key</em> </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 <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