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