]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - crypto/heimdal/doc/doxyout/hcrypto/man/man3/hcrypto_des.3
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / crypto / heimdal / doc / doxyout / hcrypto / man / man3 / hcrypto_des.3
1 .TH "DES crypto functions" 3 "11 Jan 2012" "Version 1.5.2" "Heimdal crypto library" \" -*- nroff -*-
2 .ad l
3 .nh
4 .SH NAME
5 DES crypto functions \- 
6 .SS "Functions"
7
8 .in +1c
9 .ti -1c
10 .RI "void \fBDES_set_odd_parity\fP (DES_cblock *key)"
11 .br
12 .ti -1c
13 .RI "int HC_DEPRECATED \fBDES_check_key_parity\fP (DES_cblock *key)"
14 .br
15 .ti -1c
16 .RI "int \fBDES_is_weak_key\fP (DES_cblock *key)"
17 .br
18 .ti -1c
19 .RI "int HC_DEPRECATED \fBDES_set_key\fP (DES_cblock *key, DES_key_schedule *ks)"
20 .br
21 .ti -1c
22 .RI "int \fBDES_set_key_unchecked\fP (DES_cblock *key, DES_key_schedule *ks)"
23 .br
24 .ti -1c
25 .RI "int \fBDES_set_key_checked\fP (DES_cblock *key, DES_key_schedule *ks)"
26 .br
27 .ti -1c
28 .RI "int \fBDES_key_sched\fP (DES_cblock *key, DES_key_schedule *ks)"
29 .br
30 .ti -1c
31 .RI "void \fBDES_encrypt\fP (uint32_t u[2], DES_key_schedule *ks, int encp)"
32 .br
33 .ti -1c
34 .RI "void \fBDES_ecb_encrypt\fP (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks, int encp)"
35 .br
36 .ti -1c
37 .RI "void \fBDES_cbc_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)"
38 .br
39 .ti -1c
40 .RI "void \fBDES_pcbc_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int encp)"
41 .br
42 .ti -1c
43 .RI "void \fBDES_ecb3_encrypt\fP (DES_cblock *input, DES_cblock *output, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, int encp)"
44 .br
45 .ti -1c
46 .RI "void \fBDES_ede3_cbc_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks1, DES_key_schedule *ks2, DES_key_schedule *ks3, DES_cblock *iv, int encp)"
47 .br
48 .ti -1c
49 .RI "void \fBDES_cfb64_encrypt\fP (const void *in, void *out, long length, DES_key_schedule *ks, DES_cblock *iv, int *num, int encp)"
50 .br
51 .ti -1c
52 .RI "uint32_t \fBDES_cbc_cksum\fP (const void *in, DES_cblock *output, long length, DES_key_schedule *ks, DES_cblock *iv)"
53 .br
54 .ti -1c
55 .RI "void \fBDES_string_to_key\fP (const char *str, DES_cblock *key)"
56 .br
57 .ti -1c
58 .RI "int HC_DEPRECATED \fBDES_new_random_key\fP (DES_cblock *key)"
59 .br
60 .ti -1c
61 .RI "void HC_DEPRECATED \fBDES_init_random_number_generator\fP (DES_cblock *seed)"
62 .br
63 .ti -1c
64 .RI "void HC_DEPRECATED \fBDES_random_key\fP (DES_cblock *key)"
65 .br
66 .in -1c
67 .SH "Detailed Description"
68 .PP 
69 See the \fBDES - Data Encryption Standard crypto interface\fP for description and examples. 
70 .SH "Function Documentation"
71 .PP 
72 .SS "uint32_t DES_cbc_cksum (const void * in, DES_cblock * output, long length, DES_key_schedule * ks, DES_cblock * iv)"
73 .PP
74 Crete a checksum using DES in CBC encryption mode. This mode is only used for Kerberos 4, and it should stay that way.
75 .PP
76 The IV must always be diffrent for diffrent input data blocks.
77 .PP
78 \fBParameters:\fP
79 .RS 4
80 \fIin\fP data to checksum 
81 .br
82 \fIoutput\fP the checksum 
83 .br
84 \fIlength\fP length of data 
85 .br
86 \fIks\fP key schedule to use 
87 .br
88 \fIiv\fP initial vector to use 
89 .RE
90 .PP
91
92 .SS "void DES_cbc_encrypt (const void * in, void * out, long length, DES_key_schedule * ks, DES_cblock * iv, int encp)"
93 .PP
94 Encrypt/decrypt a block using DES in Chain Block Cipher mode (cbc).
95 .PP
96 The IV must always be diffrent for diffrent input data blocks.
97 .PP
98 \fBParameters:\fP
99 .RS 4
100 \fIin\fP data to encrypt 
101 .br
102 \fIout\fP data to encrypt 
103 .br
104 \fIlength\fP length of data 
105 .br
106 \fIks\fP key schedule to use 
107 .br
108 \fIiv\fP initial vector to use 
109 .br
110 \fIencp\fP if non zero, encrypt. if zero, decrypt. 
111 .RE
112 .PP
113
114 .SS "void DES_cfb64_encrypt (const void * in, void * out, long length, DES_key_schedule * ks, DES_cblock * iv, int * num, int encp)"
115 .PP
116 Encrypt/decrypt using DES in cipher feedback mode with 64 bit feedback.
117 .PP
118 The IV must always be diffrent for diffrent input data blocks.
119 .PP
120 \fBParameters:\fP
121 .RS 4
122 \fIin\fP data to encrypt 
123 .br
124 \fIout\fP data to encrypt 
125 .br
126 \fIlength\fP length of data 
127 .br
128 \fIks\fP key schedule to use 
129 .br
130 \fIiv\fP initial vector to use 
131 .br
132 \fInum\fP offset into in cipher block encryption/decryption stop last time. 
133 .br
134 \fIencp\fP if non zero, encrypt. if zero, decrypt. 
135 .RE
136 .PP
137
138 .SS "int HC_DEPRECATED DES_check_key_parity (DES_cblock * key)"
139 .PP
140 Check if the key have correct parity.
141 .PP
142 \fBParameters:\fP
143 .RS 4
144 \fIkey\fP key to check the parity. 
145 .RE
146 .PP
147 \fBReturns:\fP
148 .RS 4
149 1 on success, 0 on failure. 
150 .RE
151 .PP
152
153 .SS "void DES_ecb3_encrypt (DES_cblock * input, DES_cblock * output, DES_key_schedule * ks1, DES_key_schedule * ks2, DES_key_schedule * ks3, int encp)"
154 .PP
155 Encrypt/decrypt a block using triple DES using EDE mode, encrypt/decrypt/encrypt.
156 .PP
157 \fBParameters:\fP
158 .RS 4
159 \fIinput\fP data to encrypt 
160 .br
161 \fIoutput\fP data to encrypt 
162 .br
163 \fIks1\fP key schedule to use 
164 .br
165 \fIks2\fP key schedule to use 
166 .br
167 \fIks3\fP key schedule to use 
168 .br
169 \fIencp\fP if non zero, encrypt. if zero, decrypt. 
170 .RE
171 .PP
172
173 .SS "void DES_ecb_encrypt (DES_cblock * input, DES_cblock * output, DES_key_schedule * ks, int encp)"
174 .PP
175 Encrypt/decrypt a block using DES.
176 .PP
177 \fBParameters:\fP
178 .RS 4
179 \fIinput\fP data to encrypt 
180 .br
181 \fIoutput\fP data to encrypt 
182 .br
183 \fIks\fP key schedule to use 
184 .br
185 \fIencp\fP if non zero, encrypt. if zero, decrypt. 
186 .RE
187 .PP
188
189 .SS "void DES_ede3_cbc_encrypt (const void * in, void * out, long length, DES_key_schedule * ks1, DES_key_schedule * ks2, DES_key_schedule * ks3, DES_cblock * iv, int encp)"
190 .PP
191 Encrypt/decrypt using Triple DES in Chain Block Cipher mode (cbc).
192 .PP
193 The IV must always be diffrent for diffrent input data blocks.
194 .PP
195 \fBParameters:\fP
196 .RS 4
197 \fIin\fP data to encrypt 
198 .br
199 \fIout\fP data to encrypt 
200 .br
201 \fIlength\fP length of data 
202 .br
203 \fIks1\fP key schedule to use 
204 .br
205 \fIks2\fP key schedule to use 
206 .br
207 \fIks3\fP key schedule to use 
208 .br
209 \fIiv\fP initial vector to use 
210 .br
211 \fIencp\fP if non zero, encrypt. if zero, decrypt. 
212 .RE
213 .PP
214
215 .SS "void DES_encrypt (uint32_t u[2], DES_key_schedule * ks, int encp)"
216 .PP
217 Encrypt/decrypt a block using DES. Also called ECB mode
218 .PP
219 \fBParameters:\fP
220 .RS 4
221 \fIu\fP data to encrypt 
222 .br
223 \fIks\fP key schedule to use 
224 .br
225 \fIencp\fP if non zero, encrypt. if zero, decrypt. 
226 .RE
227 .PP
228
229 .SS "void HC_DEPRECATED DES_init_random_number_generator (DES_cblock * seed)"
230 .PP
231 Seed the random number generator. Deprecated, use \fBRAND - random number\fP
232 .PP
233 \fBParameters:\fP
234 .RS 4
235 \fIseed\fP a seed to seed that random number generate with. 
236 .RE
237 .PP
238
239 .SS "int DES_is_weak_key (DES_cblock * key)"
240 .PP
241 Checks if the key is any of the weaks keys that makes DES attacks trival.
242 .PP
243 \fBParameters:\fP
244 .RS 4
245 \fIkey\fP key to check.
246 .RE
247 .PP
248 \fBReturns:\fP
249 .RS 4
250 1 if the key is weak, 0 otherwise. 
251 .RE
252 .PP
253
254 .SS "int DES_key_sched (DES_cblock * key, DES_key_schedule * ks)"
255 .PP
256 Compatibility function for eay libdes, works just like \fBDES_set_key_checked()\fP.
257 .PP
258 \fBParameters:\fP
259 .RS 4
260 \fIkey\fP a key to initialize the key schedule with. 
261 .br
262 \fIks\fP a key schedule to initialize.
263 .RE
264 .PP
265 \fBReturns:\fP
266 .RS 4
267 0 on success, -1 on invalid parity, -2 on weak key. 
268 .RE
269 .PP
270
271 .SS "int HC_DEPRECATED DES_new_random_key (DES_cblock * key)"
272 .PP
273 Generate a random des key using a random block, fixup parity and skip weak keys.
274 .PP
275 \fBParameters:\fP
276 .RS 4
277 \fIkey\fP is set to a random key.
278 .RE
279 .PP
280 \fBReturns:\fP
281 .RS 4
282 0 on success, non zero on random number generator failure. 
283 .RE
284 .PP
285
286 .SS "void DES_pcbc_encrypt (const void * in, void * out, long length, DES_key_schedule * ks, DES_cblock * iv, int encp)"
287 .PP
288 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.
289 .PP
290 The IV must always be diffrent for diffrent input data blocks.
291 .PP
292 \fBParameters:\fP
293 .RS 4
294 \fIin\fP data to encrypt 
295 .br
296 \fIout\fP data to encrypt 
297 .br
298 \fIlength\fP length of data 
299 .br
300 \fIks\fP key schedule to use 
301 .br
302 \fIiv\fP initial vector to use 
303 .br
304 \fIencp\fP if non zero, encrypt. if zero, decrypt. 
305 .RE
306 .PP
307
308 .SS "void HC_DEPRECATED DES_random_key (DES_cblock * key)"
309 .PP
310 Generate a random key, deprecated since it doesn't return an error code, use \fBDES_new_random_key()\fP.
311 .PP
312 \fBParameters:\fP
313 .RS 4
314 \fIkey\fP is set to a random key. 
315 .RE
316 .PP
317
318 .SS "int HC_DEPRECATED DES_set_key (DES_cblock * key, DES_key_schedule * ks)"
319 .PP
320 Setup a des key schedule from a key. Deprecated function, use \fBDES_set_key_unchecked()\fP or \fBDES_set_key_checked()\fP instead.
321 .PP
322 \fBParameters:\fP
323 .RS 4
324 \fIkey\fP a key to initialize the key schedule with. 
325 .br
326 \fIks\fP a key schedule to initialize.
327 .RE
328 .PP
329 \fBReturns:\fP
330 .RS 4
331 0 on success 
332 .RE
333 .PP
334
335 .SS "int DES_set_key_checked (DES_cblock * key, DES_key_schedule * ks)"
336 .PP
337 Just like \fBDES_set_key_unchecked()\fP except checking that the key is not weak for or have correct parity.
338 .PP
339 \fBParameters:\fP
340 .RS 4
341 \fIkey\fP a key to initialize the key schedule with. 
342 .br
343 \fIks\fP a key schedule to initialize.
344 .RE
345 .PP
346 \fBReturns:\fP
347 .RS 4
348 0 on success, -1 on invalid parity, -2 on weak key. 
349 .RE
350 .PP
351
352 .SS "int DES_set_key_unchecked (DES_cblock * key, DES_key_schedule * ks)"
353 .PP
354 Setup a des key schedule from a key. The key is no longer needed after this transaction and can cleared.
355 .PP
356 Does NOT check that the key is weak for or have wrong parity.
357 .PP
358 \fBParameters:\fP
359 .RS 4
360 \fIkey\fP a key to initialize the key schedule with. 
361 .br
362 \fIks\fP a key schedule to initialize.
363 .RE
364 .PP
365 \fBReturns:\fP
366 .RS 4
367 0 on success 
368 .RE
369 .PP
370
371 .SS "void DES_set_odd_parity (DES_cblock * key)"
372 .PP
373 Set the parity of the key block, used to generate a des key from a random key. See \fBDES key generation\fP.
374 .PP
375 \fBParameters:\fP
376 .RS 4
377 \fIkey\fP key to fixup the parity for. 
378 .RE
379 .PP
380
381 .SS "void DES_string_to_key (const char * str, DES_cblock * key)"
382 .PP
383 Convert a string to a DES key. Use something like \fBPKCS5_PBKDF2_HMAC_SHA1()\fP to create key from passwords.
384 .PP
385 \fBParameters:\fP
386 .RS 4
387 \fIstr\fP The string to convert to a key 
388 .br
389 \fIkey\fP the resulting key 
390 .RE
391 .PP
392