1226031Sstas<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2226031Sstas<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 3226031Sstas<title>Heimdal crypto library: DES crypto functions</title> 4226031Sstas<link href="doxygen.css" rel="stylesheet" type="text/css"> 5226031Sstas<link href="tabs.css" rel="stylesheet" type="text/css"> 6226031Sstas</head><body> 7226031Sstas<p> 8226031Sstas<a href="http://www.h5l.org/"><img src="http://www.h5l.org/keyhole-heimdal.png" alt="keyhole logo"/></a> 9226031Sstas</p> 10226031Sstas<!-- end of header marker --> 11226031Sstas<!-- Generated by Doxygen 1.5.6 --> 12226031Sstas<div class="navigation" id="top"> 13226031Sstas <div class="tabs"> 14226031Sstas <ul> 15226031Sstas <li><a href="index.html"><span>Main Page</span></a></li> 16226031Sstas <li><a href="modules.html"><span>Modules</span></a></li> 17226031Sstas <li><a href="examples.html"><span>Examples</span></a></li> 18226031Sstas </ul> 19226031Sstas </div> 20226031Sstas</div> 21226031Sstas<div class="contents"> 22226031Sstas<h1>DES crypto functions</h1><table border="0" cellpadding="0" cellspacing="0"> 23226031Sstas<tr><td></td></tr> 24226031Sstas<tr><td colspan="2"><br><h2>Functions</h2></td></tr> 25226031Sstas<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> 26226031Sstas 27226031Sstas<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> 28226031Sstas 29226031Sstas<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> 30226031Sstas 31226031Sstas<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> 32226031Sstas 33226031Sstas<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> 34226031Sstas 35226031Sstas<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> 36226031Sstas 37226031Sstas<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> 38226031Sstas 39226031Sstas<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> 40226031Sstas 41226031Sstas<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> 42226031Sstas 43226031Sstas<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> 44226031Sstas 45226031Sstas<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> 46226031Sstas 47226031Sstas<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> 48226031Sstas 49226031Sstas<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> 50226031Sstas 51226031Sstas<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> 52226031Sstas 53226031Sstas<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> 54226031Sstas 55226031Sstas<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> 56226031Sstas 57226031Sstas<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> 58226031Sstas 59226031Sstas<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> 60226031Sstas 61226031Sstas<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> 62226031Sstas 63226031Sstas</table> 64226031Sstas<hr><a name="_details"></a><h2>Detailed Description</h2> 65226031SstasSee the <a class="el" href="page_des.html">DES - Data Encryption Standard crypto interface</a> for description and examples. <hr><h2>Function Documentation</h2> 66226031Sstas<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)" --> 67226031Sstas<div class="memitem"> 68226031Sstas<div class="memproto"> 69226031Sstas <table class="memname"> 70226031Sstas <tr> 71226031Sstas <td class="memname">uint32_t DES_cbc_cksum </td> 72226031Sstas <td>(</td> 73226031Sstas <td class="paramtype">const void * </td> 74226031Sstas <td class="paramname"> <em>in</em>, </td> 75226031Sstas </tr> 76226031Sstas <tr> 77226031Sstas <td class="paramkey"></td> 78226031Sstas <td></td> 79226031Sstas <td class="paramtype">DES_cblock * </td> 80226031Sstas <td class="paramname"> <em>output</em>, </td> 81226031Sstas </tr> 82226031Sstas <tr> 83226031Sstas <td class="paramkey"></td> 84226031Sstas <td></td> 85226031Sstas <td class="paramtype">long </td> 86226031Sstas <td class="paramname"> <em>length</em>, </td> 87226031Sstas </tr> 88226031Sstas <tr> 89226031Sstas <td class="paramkey"></td> 90226031Sstas <td></td> 91226031Sstas <td class="paramtype">DES_key_schedule * </td> 92226031Sstas <td class="paramname"> <em>ks</em>, </td> 93226031Sstas </tr> 94226031Sstas <tr> 95226031Sstas <td class="paramkey"></td> 96226031Sstas <td></td> 97226031Sstas <td class="paramtype">DES_cblock * </td> 98226031Sstas <td class="paramname"> <em>iv</em></td><td> </td> 99226031Sstas </tr> 100226031Sstas <tr> 101226031Sstas <td></td> 102226031Sstas <td>)</td> 103226031Sstas <td></td><td></td><td></td> 104226031Sstas </tr> 105226031Sstas </table> 106226031Sstas</div> 107226031Sstas<div class="memdoc"> 108226031Sstas 109226031Sstas<p> 110226031SstasCrete a checksum using DES in CBC encryption mode. This mode is only used for Kerberos 4, and it should stay that way.<p> 111226031SstasThe IV must always be diffrent for diffrent input data blocks.<p> 112226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 113226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 114226031Sstas <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to checksum </td></tr> 115226031Sstas <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>the checksum </td></tr> 116226031Sstas <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr> 117226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr> 118226031Sstas <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr> 119226031Sstas </table> 120226031Sstas</dl> 121226031Sstas 122226031Sstas</div> 123226031Sstas</div><p> 124226031Sstas<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)" --> 125226031Sstas<div class="memitem"> 126226031Sstas<div class="memproto"> 127226031Sstas <table class="memname"> 128226031Sstas <tr> 129226031Sstas <td class="memname">void DES_cbc_encrypt </td> 130226031Sstas <td>(</td> 131226031Sstas <td class="paramtype">const void * </td> 132226031Sstas <td class="paramname"> <em>in</em>, </td> 133226031Sstas </tr> 134226031Sstas <tr> 135226031Sstas <td class="paramkey"></td> 136226031Sstas <td></td> 137226031Sstas <td class="paramtype">void * </td> 138226031Sstas <td class="paramname"> <em>out</em>, </td> 139226031Sstas </tr> 140226031Sstas <tr> 141226031Sstas <td class="paramkey"></td> 142226031Sstas <td></td> 143226031Sstas <td class="paramtype">long </td> 144226031Sstas <td class="paramname"> <em>length</em>, </td> 145226031Sstas </tr> 146226031Sstas <tr> 147226031Sstas <td class="paramkey"></td> 148226031Sstas <td></td> 149226031Sstas <td class="paramtype">DES_key_schedule * </td> 150226031Sstas <td class="paramname"> <em>ks</em>, </td> 151226031Sstas </tr> 152226031Sstas <tr> 153226031Sstas <td class="paramkey"></td> 154226031Sstas <td></td> 155226031Sstas <td class="paramtype">DES_cblock * </td> 156226031Sstas <td class="paramname"> <em>iv</em>, </td> 157226031Sstas </tr> 158226031Sstas <tr> 159226031Sstas <td class="paramkey"></td> 160226031Sstas <td></td> 161226031Sstas <td class="paramtype">int </td> 162226031Sstas <td class="paramname"> <em>encp</em></td><td> </td> 163226031Sstas </tr> 164226031Sstas <tr> 165226031Sstas <td></td> 166226031Sstas <td>)</td> 167226031Sstas <td></td><td></td><td></td> 168226031Sstas </tr> 169226031Sstas </table> 170226031Sstas</div> 171226031Sstas<div class="memdoc"> 172226031Sstas 173226031Sstas<p> 174226031SstasEncrypt/decrypt a block using DES in Chain Block Cipher mode (cbc).<p> 175226031SstasThe IV must always be diffrent for diffrent input data blocks.<p> 176226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 177226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 178226031Sstas <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr> 179226031Sstas <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr> 180226031Sstas <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr> 181226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr> 182226031Sstas <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr> 183226031Sstas <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr> 184226031Sstas </table> 185226031Sstas</dl> 186226031Sstas 187226031Sstas</div> 188226031Sstas</div><p> 189226031Sstas<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)" --> 190226031Sstas<div class="memitem"> 191226031Sstas<div class="memproto"> 192226031Sstas <table class="memname"> 193226031Sstas <tr> 194226031Sstas <td class="memname">void DES_cfb64_encrypt </td> 195226031Sstas <td>(</td> 196226031Sstas <td class="paramtype">const void * </td> 197226031Sstas <td class="paramname"> <em>in</em>, </td> 198226031Sstas </tr> 199226031Sstas <tr> 200226031Sstas <td class="paramkey"></td> 201226031Sstas <td></td> 202226031Sstas <td class="paramtype">void * </td> 203226031Sstas <td class="paramname"> <em>out</em>, </td> 204226031Sstas </tr> 205226031Sstas <tr> 206226031Sstas <td class="paramkey"></td> 207226031Sstas <td></td> 208226031Sstas <td class="paramtype">long </td> 209226031Sstas <td class="paramname"> <em>length</em>, </td> 210226031Sstas </tr> 211226031Sstas <tr> 212226031Sstas <td class="paramkey"></td> 213226031Sstas <td></td> 214226031Sstas <td class="paramtype">DES_key_schedule * </td> 215226031Sstas <td class="paramname"> <em>ks</em>, </td> 216226031Sstas </tr> 217226031Sstas <tr> 218226031Sstas <td class="paramkey"></td> 219226031Sstas <td></td> 220226031Sstas <td class="paramtype">DES_cblock * </td> 221226031Sstas <td class="paramname"> <em>iv</em>, </td> 222226031Sstas </tr> 223226031Sstas <tr> 224226031Sstas <td class="paramkey"></td> 225226031Sstas <td></td> 226226031Sstas <td class="paramtype">int * </td> 227226031Sstas <td class="paramname"> <em>num</em>, </td> 228226031Sstas </tr> 229226031Sstas <tr> 230226031Sstas <td class="paramkey"></td> 231226031Sstas <td></td> 232226031Sstas <td class="paramtype">int </td> 233226031Sstas <td class="paramname"> <em>encp</em></td><td> </td> 234226031Sstas </tr> 235226031Sstas <tr> 236226031Sstas <td></td> 237226031Sstas <td>)</td> 238226031Sstas <td></td><td></td><td></td> 239226031Sstas </tr> 240226031Sstas </table> 241226031Sstas</div> 242226031Sstas<div class="memdoc"> 243226031Sstas 244226031Sstas<p> 245226031SstasEncrypt/decrypt using DES in cipher feedback mode with 64 bit feedback.<p> 246226031SstasThe IV must always be diffrent for diffrent input data blocks.<p> 247226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 248226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 249226031Sstas <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr> 250226031Sstas <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr> 251226031Sstas <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr> 252226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr> 253226031Sstas <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr> 254226031Sstas <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> 255226031Sstas <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr> 256226031Sstas </table> 257226031Sstas</dl> 258226031Sstas 259226031Sstas</div> 260226031Sstas</div><p> 261226031Sstas<a class="anchor" name="gcf0d611296ad70edf90a3130b2f62c71"></a><!-- doxytag: member="des.c::DES_check_key_parity" ref="gcf0d611296ad70edf90a3130b2f62c71" args="(DES_cblock *key)" --> 262226031Sstas<div class="memitem"> 263226031Sstas<div class="memproto"> 264226031Sstas <table class="memname"> 265226031Sstas <tr> 266226031Sstas <td class="memname">int HC_DEPRECATED DES_check_key_parity </td> 267226031Sstas <td>(</td> 268226031Sstas <td class="paramtype">DES_cblock * </td> 269226031Sstas <td class="paramname"> <em>key</em> </td> 270226031Sstas <td> ) </td> 271226031Sstas <td></td> 272226031Sstas </tr> 273226031Sstas </table> 274226031Sstas</div> 275226031Sstas<div class="memdoc"> 276226031Sstas 277226031Sstas<p> 278226031SstasCheck if the key have correct parity.<p> 279226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 280226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 281226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>key to check the parity. </td></tr> 282226031Sstas </table> 283226031Sstas</dl> 284226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl> 285226031Sstas 286226031Sstas</div> 287226031Sstas</div><p> 288226031Sstas<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)" --> 289226031Sstas<div class="memitem"> 290226031Sstas<div class="memproto"> 291226031Sstas <table class="memname"> 292226031Sstas <tr> 293226031Sstas <td class="memname">void DES_ecb3_encrypt </td> 294226031Sstas <td>(</td> 295226031Sstas <td class="paramtype">DES_cblock * </td> 296226031Sstas <td class="paramname"> <em>input</em>, </td> 297226031Sstas </tr> 298226031Sstas <tr> 299226031Sstas <td class="paramkey"></td> 300226031Sstas <td></td> 301226031Sstas <td class="paramtype">DES_cblock * </td> 302226031Sstas <td class="paramname"> <em>output</em>, </td> 303226031Sstas </tr> 304226031Sstas <tr> 305226031Sstas <td class="paramkey"></td> 306226031Sstas <td></td> 307226031Sstas <td class="paramtype">DES_key_schedule * </td> 308226031Sstas <td class="paramname"> <em>ks1</em>, </td> 309226031Sstas </tr> 310226031Sstas <tr> 311226031Sstas <td class="paramkey"></td> 312226031Sstas <td></td> 313226031Sstas <td class="paramtype">DES_key_schedule * </td> 314226031Sstas <td class="paramname"> <em>ks2</em>, </td> 315226031Sstas </tr> 316226031Sstas <tr> 317226031Sstas <td class="paramkey"></td> 318226031Sstas <td></td> 319226031Sstas <td class="paramtype">DES_key_schedule * </td> 320226031Sstas <td class="paramname"> <em>ks3</em>, </td> 321226031Sstas </tr> 322226031Sstas <tr> 323226031Sstas <td class="paramkey"></td> 324226031Sstas <td></td> 325226031Sstas <td class="paramtype">int </td> 326226031Sstas <td class="paramname"> <em>encp</em></td><td> </td> 327226031Sstas </tr> 328226031Sstas <tr> 329226031Sstas <td></td> 330226031Sstas <td>)</td> 331226031Sstas <td></td><td></td><td></td> 332226031Sstas </tr> 333226031Sstas </table> 334226031Sstas</div> 335226031Sstas<div class="memdoc"> 336226031Sstas 337226031Sstas<p> 338226031SstasEncrypt/decrypt a block using triple DES using EDE mode, encrypt/decrypt/encrypt.<p> 339226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 340226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 341226031Sstas <tr><td valign="top"></td><td valign="top"><em>input</em> </td><td>data to encrypt </td></tr> 342226031Sstas <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>data to encrypt </td></tr> 343226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks1</em> </td><td>key schedule to use </td></tr> 344226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks2</em> </td><td>key schedule to use </td></tr> 345226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks3</em> </td><td>key schedule to use </td></tr> 346226031Sstas <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr> 347226031Sstas </table> 348226031Sstas</dl> 349226031Sstas 350226031Sstas</div> 351226031Sstas</div><p> 352226031Sstas<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)" --> 353226031Sstas<div class="memitem"> 354226031Sstas<div class="memproto"> 355226031Sstas <table class="memname"> 356226031Sstas <tr> 357226031Sstas <td class="memname">void DES_ecb_encrypt </td> 358226031Sstas <td>(</td> 359226031Sstas <td class="paramtype">DES_cblock * </td> 360226031Sstas <td class="paramname"> <em>input</em>, </td> 361226031Sstas </tr> 362226031Sstas <tr> 363226031Sstas <td class="paramkey"></td> 364226031Sstas <td></td> 365226031Sstas <td class="paramtype">DES_cblock * </td> 366226031Sstas <td class="paramname"> <em>output</em>, </td> 367226031Sstas </tr> 368226031Sstas <tr> 369226031Sstas <td class="paramkey"></td> 370226031Sstas <td></td> 371226031Sstas <td class="paramtype">DES_key_schedule * </td> 372226031Sstas <td class="paramname"> <em>ks</em>, </td> 373226031Sstas </tr> 374226031Sstas <tr> 375226031Sstas <td class="paramkey"></td> 376226031Sstas <td></td> 377226031Sstas <td class="paramtype">int </td> 378226031Sstas <td class="paramname"> <em>encp</em></td><td> </td> 379226031Sstas </tr> 380226031Sstas <tr> 381226031Sstas <td></td> 382226031Sstas <td>)</td> 383226031Sstas <td></td><td></td><td></td> 384226031Sstas </tr> 385226031Sstas </table> 386226031Sstas</div> 387226031Sstas<div class="memdoc"> 388226031Sstas 389226031Sstas<p> 390226031SstasEncrypt/decrypt a block using DES.<p> 391226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 392226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 393226031Sstas <tr><td valign="top"></td><td valign="top"><em>input</em> </td><td>data to encrypt </td></tr> 394226031Sstas <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>data to encrypt </td></tr> 395226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr> 396226031Sstas <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr> 397226031Sstas </table> 398226031Sstas</dl> 399226031Sstas 400226031Sstas</div> 401226031Sstas</div><p> 402226031Sstas<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)" --> 403226031Sstas<div class="memitem"> 404226031Sstas<div class="memproto"> 405226031Sstas <table class="memname"> 406226031Sstas <tr> 407226031Sstas <td class="memname">void DES_ede3_cbc_encrypt </td> 408226031Sstas <td>(</td> 409226031Sstas <td class="paramtype">const void * </td> 410226031Sstas <td class="paramname"> <em>in</em>, </td> 411226031Sstas </tr> 412226031Sstas <tr> 413226031Sstas <td class="paramkey"></td> 414226031Sstas <td></td> 415226031Sstas <td class="paramtype">void * </td> 416226031Sstas <td class="paramname"> <em>out</em>, </td> 417226031Sstas </tr> 418226031Sstas <tr> 419226031Sstas <td class="paramkey"></td> 420226031Sstas <td></td> 421226031Sstas <td class="paramtype">long </td> 422226031Sstas <td class="paramname"> <em>length</em>, </td> 423226031Sstas </tr> 424226031Sstas <tr> 425226031Sstas <td class="paramkey"></td> 426226031Sstas <td></td> 427226031Sstas <td class="paramtype">DES_key_schedule * </td> 428226031Sstas <td class="paramname"> <em>ks1</em>, </td> 429226031Sstas </tr> 430226031Sstas <tr> 431226031Sstas <td class="paramkey"></td> 432226031Sstas <td></td> 433226031Sstas <td class="paramtype">DES_key_schedule * </td> 434226031Sstas <td class="paramname"> <em>ks2</em>, </td> 435226031Sstas </tr> 436226031Sstas <tr> 437226031Sstas <td class="paramkey"></td> 438226031Sstas <td></td> 439226031Sstas <td class="paramtype">DES_key_schedule * </td> 440226031Sstas <td class="paramname"> <em>ks3</em>, </td> 441226031Sstas </tr> 442226031Sstas <tr> 443226031Sstas <td class="paramkey"></td> 444226031Sstas <td></td> 445226031Sstas <td class="paramtype">DES_cblock * </td> 446226031Sstas <td class="paramname"> <em>iv</em>, </td> 447226031Sstas </tr> 448226031Sstas <tr> 449226031Sstas <td class="paramkey"></td> 450226031Sstas <td></td> 451226031Sstas <td class="paramtype">int </td> 452226031Sstas <td class="paramname"> <em>encp</em></td><td> </td> 453226031Sstas </tr> 454226031Sstas <tr> 455226031Sstas <td></td> 456226031Sstas <td>)</td> 457226031Sstas <td></td><td></td><td></td> 458226031Sstas </tr> 459226031Sstas </table> 460226031Sstas</div> 461226031Sstas<div class="memdoc"> 462226031Sstas 463226031Sstas<p> 464226031SstasEncrypt/decrypt using Triple DES in Chain Block Cipher mode (cbc).<p> 465226031SstasThe IV must always be diffrent for diffrent input data blocks.<p> 466226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 467226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 468226031Sstas <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr> 469226031Sstas <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr> 470226031Sstas <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr> 471226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks1</em> </td><td>key schedule to use </td></tr> 472226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks2</em> </td><td>key schedule to use </td></tr> 473226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks3</em> </td><td>key schedule to use </td></tr> 474226031Sstas <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr> 475226031Sstas <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr> 476226031Sstas </table> 477226031Sstas</dl> 478226031Sstas 479226031Sstas</div> 480226031Sstas</div><p> 481226031Sstas<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)" --> 482226031Sstas<div class="memitem"> 483226031Sstas<div class="memproto"> 484226031Sstas <table class="memname"> 485226031Sstas <tr> 486226031Sstas <td class="memname">void DES_encrypt </td> 487226031Sstas <td>(</td> 488226031Sstas <td class="paramtype">uint32_t </td> 489226031Sstas <td class="paramname"> <em>u</em>[2], </td> 490226031Sstas </tr> 491226031Sstas <tr> 492226031Sstas <td class="paramkey"></td> 493226031Sstas <td></td> 494226031Sstas <td class="paramtype">DES_key_schedule * </td> 495226031Sstas <td class="paramname"> <em>ks</em>, </td> 496226031Sstas </tr> 497226031Sstas <tr> 498226031Sstas <td class="paramkey"></td> 499226031Sstas <td></td> 500226031Sstas <td class="paramtype">int </td> 501226031Sstas <td class="paramname"> <em>encp</em></td><td> </td> 502226031Sstas </tr> 503226031Sstas <tr> 504226031Sstas <td></td> 505226031Sstas <td>)</td> 506226031Sstas <td></td><td></td><td></td> 507226031Sstas </tr> 508226031Sstas </table> 509226031Sstas</div> 510226031Sstas<div class="memdoc"> 511226031Sstas 512226031Sstas<p> 513226031SstasEncrypt/decrypt a block using DES. Also called ECB mode<p> 514226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 515226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 516226031Sstas <tr><td valign="top"></td><td valign="top"><em>u</em> </td><td>data to encrypt </td></tr> 517226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr> 518226031Sstas <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr> 519226031Sstas </table> 520226031Sstas</dl> 521226031Sstas 522226031Sstas</div> 523226031Sstas</div><p> 524226031Sstas<a class="anchor" name="g45739e74db49d07bfaa0d7918efd4875"></a><!-- doxytag: member="rnd_keys.c::DES_init_random_number_generator" ref="g45739e74db49d07bfaa0d7918efd4875" args="(DES_cblock *seed)" --> 525226031Sstas<div class="memitem"> 526226031Sstas<div class="memproto"> 527226031Sstas <table class="memname"> 528226031Sstas <tr> 529226031Sstas <td class="memname">void HC_DEPRECATED DES_init_random_number_generator </td> 530226031Sstas <td>(</td> 531226031Sstas <td class="paramtype">DES_cblock * </td> 532226031Sstas <td class="paramname"> <em>seed</em> </td> 533226031Sstas <td> ) </td> 534226031Sstas <td></td> 535226031Sstas </tr> 536226031Sstas </table> 537226031Sstas</div> 538226031Sstas<div class="memdoc"> 539226031Sstas 540226031Sstas<p> 541226031SstasSeed the random number generator. Deprecated, use <a class="el" href="page_rand.html">RAND - random number</a><p> 542226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 543226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 544226031Sstas <tr><td valign="top"></td><td valign="top"><em>seed</em> </td><td>a seed to seed that random number generate with. </td></tr> 545226031Sstas </table> 546226031Sstas</dl> 547226031Sstas 548226031Sstas</div> 549226031Sstas</div><p> 550226031Sstas<a class="anchor" name="g0d8a49cafee4be6cd3922bfb6323fd2d"></a><!-- doxytag: member="des.c::DES_is_weak_key" ref="g0d8a49cafee4be6cd3922bfb6323fd2d" args="(DES_cblock *key)" --> 551226031Sstas<div class="memitem"> 552226031Sstas<div class="memproto"> 553226031Sstas <table class="memname"> 554226031Sstas <tr> 555226031Sstas <td class="memname">int DES_is_weak_key </td> 556226031Sstas <td>(</td> 557226031Sstas <td class="paramtype">DES_cblock * </td> 558226031Sstas <td class="paramname"> <em>key</em> </td> 559226031Sstas <td> ) </td> 560226031Sstas <td></td> 561226031Sstas </tr> 562226031Sstas </table> 563226031Sstas</div> 564226031Sstas<div class="memdoc"> 565226031Sstas 566226031Sstas<p> 567226031SstasChecks if the key is any of the weaks keys that makes DES attacks trival.<p> 568226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 569226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 570226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>key to check.</td></tr> 571226031Sstas </table> 572226031Sstas</dl> 573226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the key is weak, 0 otherwise. </dd></dl> 574226031Sstas 575226031Sstas</div> 576226031Sstas</div><p> 577226031Sstas<a class="anchor" name="gf5b4967f13a4a52c214c28b6e57a3a95"></a><!-- doxytag: member="des.c::DES_key_sched" ref="gf5b4967f13a4a52c214c28b6e57a3a95" args="(DES_cblock *key, DES_key_schedule *ks)" --> 578226031Sstas<div class="memitem"> 579226031Sstas<div class="memproto"> 580226031Sstas <table class="memname"> 581226031Sstas <tr> 582226031Sstas <td class="memname">int DES_key_sched </td> 583226031Sstas <td>(</td> 584226031Sstas <td class="paramtype">DES_cblock * </td> 585226031Sstas <td class="paramname"> <em>key</em>, </td> 586226031Sstas </tr> 587226031Sstas <tr> 588226031Sstas <td class="paramkey"></td> 589226031Sstas <td></td> 590226031Sstas <td class="paramtype">DES_key_schedule * </td> 591226031Sstas <td class="paramname"> <em>ks</em></td><td> </td> 592226031Sstas </tr> 593226031Sstas <tr> 594226031Sstas <td></td> 595226031Sstas <td>)</td> 596226031Sstas <td></td><td></td><td></td> 597226031Sstas </tr> 598226031Sstas </table> 599226031Sstas</div> 600226031Sstas<div class="memdoc"> 601226031Sstas 602226031Sstas<p> 603226031SstasCompatibility function for eay libdes, works just like <a class="el" href="group__hcrypto__des.html#g3157dd2419a25cd4381867f012117d07">DES_set_key_checked()</a>.<p> 604226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 605226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 606226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr> 607226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr> 608226031Sstas </table> 609226031Sstas</dl> 610226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl> 611226031Sstas 612226031Sstas</div> 613226031Sstas</div><p> 614226031Sstas<a class="anchor" name="gcd3642bcd8a7e93ea977786e5b540d5f"></a><!-- doxytag: member="rnd_keys.c::DES_new_random_key" ref="gcd3642bcd8a7e93ea977786e5b540d5f" args="(DES_cblock *key)" --> 615226031Sstas<div class="memitem"> 616226031Sstas<div class="memproto"> 617226031Sstas <table class="memname"> 618226031Sstas <tr> 619226031Sstas <td class="memname">int HC_DEPRECATED DES_new_random_key </td> 620226031Sstas <td>(</td> 621226031Sstas <td class="paramtype">DES_cblock * </td> 622226031Sstas <td class="paramname"> <em>key</em> </td> 623226031Sstas <td> ) </td> 624226031Sstas <td></td> 625226031Sstas </tr> 626226031Sstas </table> 627226031Sstas</div> 628226031Sstas<div class="memdoc"> 629226031Sstas 630226031Sstas<p> 631226031SstasGenerate a random des key using a random block, fixup parity and skip weak keys.<p> 632226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 633226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 634226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>is set to a random key.</td></tr> 635226031Sstas </table> 636226031Sstas</dl> 637226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non zero on random number generator failure. </dd></dl> 638226031Sstas 639226031Sstas</div> 640226031Sstas</div><p> 641226031Sstas<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)" --> 642226031Sstas<div class="memitem"> 643226031Sstas<div class="memproto"> 644226031Sstas <table class="memname"> 645226031Sstas <tr> 646226031Sstas <td class="memname">void DES_pcbc_encrypt </td> 647226031Sstas <td>(</td> 648226031Sstas <td class="paramtype">const void * </td> 649226031Sstas <td class="paramname"> <em>in</em>, </td> 650226031Sstas </tr> 651226031Sstas <tr> 652226031Sstas <td class="paramkey"></td> 653226031Sstas <td></td> 654226031Sstas <td class="paramtype">void * </td> 655226031Sstas <td class="paramname"> <em>out</em>, </td> 656226031Sstas </tr> 657226031Sstas <tr> 658226031Sstas <td class="paramkey"></td> 659226031Sstas <td></td> 660226031Sstas <td class="paramtype">long </td> 661226031Sstas <td class="paramname"> <em>length</em>, </td> 662226031Sstas </tr> 663226031Sstas <tr> 664226031Sstas <td class="paramkey"></td> 665226031Sstas <td></td> 666226031Sstas <td class="paramtype">DES_key_schedule * </td> 667226031Sstas <td class="paramname"> <em>ks</em>, </td> 668226031Sstas </tr> 669226031Sstas <tr> 670226031Sstas <td class="paramkey"></td> 671226031Sstas <td></td> 672226031Sstas <td class="paramtype">DES_cblock * </td> 673226031Sstas <td class="paramname"> <em>iv</em>, </td> 674226031Sstas </tr> 675226031Sstas <tr> 676226031Sstas <td class="paramkey"></td> 677226031Sstas <td></td> 678226031Sstas <td class="paramtype">int </td> 679226031Sstas <td class="paramname"> <em>encp</em></td><td> </td> 680226031Sstas </tr> 681226031Sstas <tr> 682226031Sstas <td></td> 683226031Sstas <td>)</td> 684226031Sstas <td></td><td></td><td></td> 685226031Sstas </tr> 686226031Sstas </table> 687226031Sstas</div> 688226031Sstas<div class="memdoc"> 689226031Sstas 690226031Sstas<p> 691226031SstasEncrypt/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> 692226031SstasThe IV must always be diffrent for diffrent input data blocks.<p> 693226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 694226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 695226031Sstas <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>data to encrypt </td></tr> 696226031Sstas <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>data to encrypt </td></tr> 697226031Sstas <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr> 698226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>key schedule to use </td></tr> 699226031Sstas <tr><td valign="top"></td><td valign="top"><em>iv</em> </td><td>initial vector to use </td></tr> 700226031Sstas <tr><td valign="top"></td><td valign="top"><em>encp</em> </td><td>if non zero, encrypt. if zero, decrypt. </td></tr> 701226031Sstas </table> 702226031Sstas</dl> 703226031Sstas 704226031Sstas</div> 705226031Sstas</div><p> 706226031Sstas<a class="anchor" name="gd70d485549f7444589f3283e938c0258"></a><!-- doxytag: member="rnd_keys.c::DES_random_key" ref="gd70d485549f7444589f3283e938c0258" args="(DES_cblock *key)" --> 707226031Sstas<div class="memitem"> 708226031Sstas<div class="memproto"> 709226031Sstas <table class="memname"> 710226031Sstas <tr> 711226031Sstas <td class="memname">void HC_DEPRECATED DES_random_key </td> 712226031Sstas <td>(</td> 713226031Sstas <td class="paramtype">DES_cblock * </td> 714226031Sstas <td class="paramname"> <em>key</em> </td> 715226031Sstas <td> ) </td> 716226031Sstas <td></td> 717226031Sstas </tr> 718226031Sstas </table> 719226031Sstas</div> 720226031Sstas<div class="memdoc"> 721226031Sstas 722226031Sstas<p> 723226031SstasGenerate 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> 724226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 725226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 726226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>is set to a random key. </td></tr> 727226031Sstas </table> 728226031Sstas</dl> 729226031Sstas 730226031Sstas</div> 731226031Sstas</div><p> 732226031Sstas<a class="anchor" name="gad10e059974f3048b3de49599989486b"></a><!-- doxytag: member="des.c::DES_set_key" ref="gad10e059974f3048b3de49599989486b" args="(DES_cblock *key, DES_key_schedule *ks)" --> 733226031Sstas<div class="memitem"> 734226031Sstas<div class="memproto"> 735226031Sstas <table class="memname"> 736226031Sstas <tr> 737226031Sstas <td class="memname">int HC_DEPRECATED DES_set_key </td> 738226031Sstas <td>(</td> 739226031Sstas <td class="paramtype">DES_cblock * </td> 740226031Sstas <td class="paramname"> <em>key</em>, </td> 741226031Sstas </tr> 742226031Sstas <tr> 743226031Sstas <td class="paramkey"></td> 744226031Sstas <td></td> 745226031Sstas <td class="paramtype">DES_key_schedule * </td> 746226031Sstas <td class="paramname"> <em>ks</em></td><td> </td> 747226031Sstas </tr> 748226031Sstas <tr> 749226031Sstas <td></td> 750226031Sstas <td>)</td> 751226031Sstas <td></td><td></td><td></td> 752226031Sstas </tr> 753226031Sstas </table> 754226031Sstas</div> 755226031Sstas<div class="memdoc"> 756226031Sstas 757226031Sstas<p> 758226031SstasSetup 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> 759226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 760226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 761226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr> 762226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr> 763226031Sstas </table> 764226031Sstas</dl> 765226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> 766226031Sstas 767226031Sstas</div> 768226031Sstas</div><p> 769226031Sstas<a class="anchor" name="g3157dd2419a25cd4381867f012117d07"></a><!-- doxytag: member="des.c::DES_set_key_checked" ref="g3157dd2419a25cd4381867f012117d07" args="(DES_cblock *key, DES_key_schedule *ks)" --> 770226031Sstas<div class="memitem"> 771226031Sstas<div class="memproto"> 772226031Sstas <table class="memname"> 773226031Sstas <tr> 774226031Sstas <td class="memname">int DES_set_key_checked </td> 775226031Sstas <td>(</td> 776226031Sstas <td class="paramtype">DES_cblock * </td> 777226031Sstas <td class="paramname"> <em>key</em>, </td> 778226031Sstas </tr> 779226031Sstas <tr> 780226031Sstas <td class="paramkey"></td> 781226031Sstas <td></td> 782226031Sstas <td class="paramtype">DES_key_schedule * </td> 783226031Sstas <td class="paramname"> <em>ks</em></td><td> </td> 784226031Sstas </tr> 785226031Sstas <tr> 786226031Sstas <td></td> 787226031Sstas <td>)</td> 788226031Sstas <td></td><td></td><td></td> 789226031Sstas </tr> 790226031Sstas </table> 791226031Sstas</div> 792226031Sstas<div class="memdoc"> 793226031Sstas 794226031Sstas<p> 795226031SstasJust 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> 796226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 797226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 798226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr> 799226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr> 800226031Sstas </table> 801226031Sstas</dl> 802226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on invalid parity, -2 on weak key. </dd></dl> 803226031Sstas 804226031Sstas</div> 805226031Sstas</div><p> 806226031Sstas<a class="anchor" name="g8131d59b5c0f65ca8bba0873932680d5"></a><!-- doxytag: member="des.c::DES_set_key_unchecked" ref="g8131d59b5c0f65ca8bba0873932680d5" args="(DES_cblock *key, DES_key_schedule *ks)" --> 807226031Sstas<div class="memitem"> 808226031Sstas<div class="memproto"> 809226031Sstas <table class="memname"> 810226031Sstas <tr> 811226031Sstas <td class="memname">int DES_set_key_unchecked </td> 812226031Sstas <td>(</td> 813226031Sstas <td class="paramtype">DES_cblock * </td> 814226031Sstas <td class="paramname"> <em>key</em>, </td> 815226031Sstas </tr> 816226031Sstas <tr> 817226031Sstas <td class="paramkey"></td> 818226031Sstas <td></td> 819226031Sstas <td class="paramtype">DES_key_schedule * </td> 820226031Sstas <td class="paramname"> <em>ks</em></td><td> </td> 821226031Sstas </tr> 822226031Sstas <tr> 823226031Sstas <td></td> 824226031Sstas <td>)</td> 825226031Sstas <td></td><td></td><td></td> 826226031Sstas </tr> 827226031Sstas </table> 828226031Sstas</div> 829226031Sstas<div class="memdoc"> 830226031Sstas 831226031Sstas<p> 832226031SstasSetup a des key schedule from a key. The key is no longer needed after this transaction and can cleared.<p> 833226031SstasDoes NOT check that the key is weak for or have wrong parity.<p> 834226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 835226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 836226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>a key to initialize the key schedule with. </td></tr> 837226031Sstas <tr><td valign="top"></td><td valign="top"><em>ks</em> </td><td>a key schedule to initialize.</td></tr> 838226031Sstas </table> 839226031Sstas</dl> 840226031Sstas<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success </dd></dl> 841226031Sstas 842226031Sstas</div> 843226031Sstas</div><p> 844226031Sstas<a class="anchor" name="g4179bef43ceb72cc2034f39e7d2d5ae4"></a><!-- doxytag: member="des.c::DES_set_odd_parity" ref="g4179bef43ceb72cc2034f39e7d2d5ae4" args="(DES_cblock *key)" --> 845226031Sstas<div class="memitem"> 846226031Sstas<div class="memproto"> 847226031Sstas <table class="memname"> 848226031Sstas <tr> 849226031Sstas <td class="memname">void DES_set_odd_parity </td> 850226031Sstas <td>(</td> 851226031Sstas <td class="paramtype">DES_cblock * </td> 852226031Sstas <td class="paramname"> <em>key</em> </td> 853226031Sstas <td> ) </td> 854226031Sstas <td></td> 855226031Sstas </tr> 856226031Sstas </table> 857226031Sstas</div> 858226031Sstas<div class="memdoc"> 859226031Sstas 860226031Sstas<p> 861226031SstasSet 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> 862226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 863226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 864226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>key to fixup the parity for. </td></tr> 865226031Sstas </table> 866226031Sstas</dl> 867226031Sstas 868226031Sstas</div> 869226031Sstas</div><p> 870226031Sstas<a class="anchor" name="g60893cdc75d9ce8cbf4a5d7a874855c8"></a><!-- doxytag: member="des.c::DES_string_to_key" ref="g60893cdc75d9ce8cbf4a5d7a874855c8" args="(const char *str, DES_cblock *key)" --> 871226031Sstas<div class="memitem"> 872226031Sstas<div class="memproto"> 873226031Sstas <table class="memname"> 874226031Sstas <tr> 875226031Sstas <td class="memname">void DES_string_to_key </td> 876226031Sstas <td>(</td> 877226031Sstas <td class="paramtype">const char * </td> 878226031Sstas <td class="paramname"> <em>str</em>, </td> 879226031Sstas </tr> 880226031Sstas <tr> 881226031Sstas <td class="paramkey"></td> 882226031Sstas <td></td> 883226031Sstas <td class="paramtype">DES_cblock * </td> 884226031Sstas <td class="paramname"> <em>key</em></td><td> </td> 885226031Sstas </tr> 886226031Sstas <tr> 887226031Sstas <td></td> 888226031Sstas <td>)</td> 889226031Sstas <td></td><td></td><td></td> 890226031Sstas </tr> 891226031Sstas </table> 892226031Sstas</div> 893226031Sstas<div class="memdoc"> 894226031Sstas 895226031Sstas<p> 896226031SstasConvert 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> 897226031Sstas<dl compact><dt><b>Parameters:</b></dt><dd> 898226031Sstas <table border="0" cellspacing="2" cellpadding="0"> 899226031Sstas <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>The string to convert to a key </td></tr> 900226031Sstas <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>the resulting key </td></tr> 901226031Sstas </table> 902226031Sstas</dl> 903226031Sstas 904226031Sstas</div> 905226031Sstas</div><p> 906226031Sstas</div> 907226031Sstas<hr size="1"><address style="text-align: right;"><small> 908234027SstasGenerated 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> 909226031Sstas</body> 910226031Sstas</html> 911