1 | /* |
2 | * UFC-crypt: ultra fast crypt(3) implementation |
3 | * |
4 | * Copyright (C) 1991-2018 Free Software Foundation, Inc. |
5 | * |
6 | * The GNU C Library is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU Lesser General Public |
8 | * License as published by the Free Software Foundation; either |
9 | * version 2.1 of the License, or (at your option) any later version. |
10 | * |
11 | * The GNU C Library is distributed in the hope that it will be useful, |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | * Lesser General Public License for more details. |
15 | * |
16 | * You should have received a copy of the GNU Lesser General Public |
17 | * License along with the GNU C Library; if not, see |
18 | * <http://www.gnu.org/licenses/>. |
19 | * |
20 | * @(#)crypt.h 1.5 12/20/96 |
21 | * |
22 | */ |
23 | |
24 | #ifndef _CRYPT_H |
25 | #define _CRYPT_H 1 |
26 | |
27 | #include <features.h> |
28 | |
29 | __BEGIN_DECLS |
30 | |
31 | /* Encrypt at most 8 characters from KEY using salt to perturb DES. */ |
32 | extern char *crypt (const char *__key, const char *__salt) |
33 | __THROW __nonnull ((1, 2)); |
34 | |
35 | /* Setup DES tables according KEY. */ |
36 | extern void setkey (const char *__key) __THROW __nonnull ((1)); |
37 | |
38 | /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt |
39 | block in place. */ |
40 | extern void encrypt (char *__glibc_block, int __edflag) |
41 | __THROW __nonnull ((1)); |
42 | |
43 | #ifdef __USE_GNU |
44 | /* Reentrant versions of the functions above. The additional argument |
45 | points to a structure where the results are placed in. */ |
46 | struct crypt_data |
47 | { |
48 | char keysched[16 * 8]; |
49 | char sb0[32768]; |
50 | char sb1[32768]; |
51 | char sb2[32768]; |
52 | char sb3[32768]; |
53 | /* end-of-aligment-critical-data */ |
54 | char crypt_3_buf[14]; |
55 | char current_salt[2]; |
56 | long int current_saltbits; |
57 | int direction, initialized; |
58 | }; |
59 | |
60 | extern char *crypt_r (const char *__key, const char *__salt, |
61 | struct crypt_data * __restrict __data) |
62 | __THROW __nonnull ((1, 2, 3)); |
63 | |
64 | extern void setkey_r (const char *__key, |
65 | struct crypt_data * __restrict __data) |
66 | __THROW __nonnull ((1, 2)); |
67 | |
68 | extern void encrypt_r (char *__glibc_block, int __edflag, |
69 | struct crypt_data * __restrict __data) |
70 | __THROW __nonnull ((1, 3)); |
71 | #endif |
72 | |
73 | __END_DECLS |
74 | |
75 | #endif /* crypt.h */ |
76 | |