diff options
Diffstat (limited to 'src/lib/libcrypto/des/des.h')
-rw-r--r-- | src/lib/libcrypto/des/des.h | 290 |
1 files changed, 133 insertions, 157 deletions
diff --git a/src/lib/libcrypto/des/des.h b/src/lib/libcrypto/des/des.h index 6b8a7ee11b..dfe5ff64e4 100644 --- a/src/lib/libcrypto/des/des.h +++ b/src/lib/libcrypto/des/des.h | |||
@@ -59,39 +59,52 @@ | |||
59 | #ifndef HEADER_DES_H | 59 | #ifndef HEADER_DES_H |
60 | #define HEADER_DES_H | 60 | #define HEADER_DES_H |
61 | 61 | ||
62 | #ifdef NO_DES | 62 | #ifdef OPENSSL_NO_DES |
63 | #error DES is disabled. | 63 | #error DES is disabled. |
64 | #endif | 64 | #endif |
65 | 65 | ||
66 | #ifdef _KERBEROS_DES_H | ||
67 | #error <openssl/des.h> replaces <kerberos/des.h>. | ||
68 | #endif | ||
69 | |||
70 | #include <openssl/opensslconf.h> /* DES_LONG */ | 66 | #include <openssl/opensslconf.h> /* DES_LONG */ |
71 | #include <openssl/e_os2.h> /* OPENSSL_EXTERN */ | 67 | #include <openssl/e_os2.h> /* OPENSSL_EXTERN */ |
72 | 68 | ||
69 | #ifdef OPENSSL_BUILD_SHLIBCRYPTO | ||
70 | # undef OPENSSL_EXTERN | ||
71 | # define OPENSSL_EXTERN OPENSSL_EXPORT | ||
72 | #endif | ||
73 | |||
74 | #define des_SPtrans DES_SPtrans | ||
75 | |||
73 | #ifdef __cplusplus | 76 | #ifdef __cplusplus |
74 | extern "C" { | 77 | extern "C" { |
75 | #endif | 78 | #endif |
76 | 79 | ||
77 | typedef unsigned char des_cblock[8]; | 80 | typedef unsigned char DES_cblock[8]; |
78 | typedef /* const */ unsigned char const_des_cblock[8]; | 81 | typedef /* const */ unsigned char const_DES_cblock[8]; |
79 | /* With "const", gcc 2.8.1 on Solaris thinks that des_cblock * | 82 | /* With "const", gcc 2.8.1 on Solaris thinks that DES_cblock * |
80 | * and const_des_cblock * are incompatible pointer types. */ | 83 | * and const_DES_cblock * are incompatible pointer types. */ |
81 | 84 | ||
82 | typedef struct des_ks_struct | 85 | typedef struct DES_ks |
86 | { | ||
87 | union | ||
83 | { | 88 | { |
84 | union { | 89 | DES_cblock cblock; |
85 | des_cblock cblock; | 90 | /* make sure things are correct size on machines with |
86 | /* make sure things are correct size on machines with | 91 | * 8 byte longs */ |
87 | * 8 byte longs */ | 92 | DES_LONG deslong[2]; |
88 | DES_LONG deslong[2]; | 93 | } ks[16]; |
89 | } ks; | 94 | } DES_key_schedule; |
90 | int weak_key; | 95 | |
91 | } des_key_schedule[16]; | 96 | #ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT |
97 | # ifndef OPENSSL_ENABLE_OLD_DES_SUPPORT | ||
98 | # define OPENSSL_ENABLE_OLD_DES_SUPPORT | ||
99 | # endif | ||
100 | #endif | ||
92 | 101 | ||
93 | #define DES_KEY_SZ (sizeof(des_cblock)) | 102 | #ifdef OPENSSL_ENABLE_OLD_DES_SUPPORT |
94 | #define DES_SCHEDULE_SZ (sizeof(des_key_schedule)) | 103 | # include <openssl/des_old.h> |
104 | #endif | ||
105 | |||
106 | #define DES_KEY_SZ (sizeof(DES_cblock)) | ||
107 | #define DES_SCHEDULE_SZ (sizeof(DES_key_schedule)) | ||
95 | 108 | ||
96 | #define DES_ENCRYPT 1 | 109 | #define DES_ENCRYPT 1 |
97 | #define DES_DECRYPT 0 | 110 | #define DES_DECRYPT 0 |
@@ -99,44 +112,45 @@ typedef struct des_ks_struct | |||
99 | #define DES_CBC_MODE 0 | 112 | #define DES_CBC_MODE 0 |
100 | #define DES_PCBC_MODE 1 | 113 | #define DES_PCBC_MODE 1 |
101 | 114 | ||
102 | #define des_ecb2_encrypt(i,o,k1,k2,e) \ | 115 | #define DES_ecb2_encrypt(i,o,k1,k2,e) \ |
103 | des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) | 116 | DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) |
104 | 117 | ||
105 | #define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ | 118 | #define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ |
106 | des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) | 119 | DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) |
107 | 120 | ||
108 | #define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ | 121 | #define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ |
109 | des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) | 122 | DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) |
110 | 123 | ||
111 | #define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ | 124 | #define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ |
112 | des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) | 125 | DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) |
113 | 126 | ||
114 | OPENSSL_EXTERN int des_check_key; /* defaults to false */ | 127 | OPENSSL_DECLARE_GLOBAL(int,DES_check_key); /* defaults to false */ |
115 | OPENSSL_EXTERN int des_rw_mode; /* defaults to DES_PCBC_MODE */ | 128 | #define DES_check_key OPENSSL_GLOBAL_REF(DES_check_key) |
116 | OPENSSL_EXTERN int des_set_weak_key_flag; /* set the weak key flag */ | 129 | OPENSSL_DECLARE_GLOBAL(int,DES_rw_mode); /* defaults to DES_PCBC_MODE */ |
117 | 130 | #define DES_rw_mode OPENSSL_GLOBAL_REF(DES_rw_mode) | |
118 | const char *des_options(void); | 131 | |
119 | void des_ecb3_encrypt(const_des_cblock *input, des_cblock *output, | 132 | const char *DES_options(void); |
120 | des_key_schedule ks1,des_key_schedule ks2, | 133 | void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output, |
121 | des_key_schedule ks3, int enc); | 134 | DES_key_schedule *ks1,DES_key_schedule *ks2, |
122 | DES_LONG des_cbc_cksum(const unsigned char *input,des_cblock *output, | 135 | DES_key_schedule *ks3, int enc); |
123 | long length,des_key_schedule schedule, | 136 | DES_LONG DES_cbc_cksum(const unsigned char *input,DES_cblock *output, |
124 | const_des_cblock *ivec); | 137 | long length,DES_key_schedule *schedule, |
125 | /* des_cbc_encrypt does not update the IV! Use des_ncbc_encrypt instead. */ | 138 | const_DES_cblock *ivec); |
126 | void des_cbc_encrypt(const unsigned char *input,unsigned char *output, | 139 | /* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */ |
127 | long length,des_key_schedule schedule,des_cblock *ivec, | 140 | void DES_cbc_encrypt(const unsigned char *input,unsigned char *output, |
141 | long length,DES_key_schedule *schedule,DES_cblock *ivec, | ||
128 | int enc); | 142 | int enc); |
129 | void des_ncbc_encrypt(const unsigned char *input,unsigned char *output, | 143 | void DES_ncbc_encrypt(const unsigned char *input,unsigned char *output, |
130 | long length,des_key_schedule schedule,des_cblock *ivec, | 144 | long length,DES_key_schedule *schedule,DES_cblock *ivec, |
131 | int enc); | 145 | int enc); |
132 | void des_xcbc_encrypt(const unsigned char *input,unsigned char *output, | 146 | void DES_xcbc_encrypt(const unsigned char *input,unsigned char *output, |
133 | long length,des_key_schedule schedule,des_cblock *ivec, | 147 | long length,DES_key_schedule *schedule,DES_cblock *ivec, |
134 | const_des_cblock *inw,const_des_cblock *outw,int enc); | 148 | const_DES_cblock *inw,const_DES_cblock *outw,int enc); |
135 | void des_cfb_encrypt(const unsigned char *in,unsigned char *out,int numbits, | 149 | void DES_cfb_encrypt(const unsigned char *in,unsigned char *out,int numbits, |
136 | long length,des_key_schedule schedule,des_cblock *ivec, | 150 | long length,DES_key_schedule *schedule,DES_cblock *ivec, |
137 | int enc); | 151 | int enc); |
138 | void des_ecb_encrypt(const_des_cblock *input,des_cblock *output, | 152 | void DES_ecb_encrypt(const_DES_cblock *input,DES_cblock *output, |
139 | des_key_schedule ks,int enc); | 153 | DES_key_schedule *ks,int enc); |
140 | 154 | ||
141 | /* This is the DES encryption function that gets called by just about | 155 | /* This is the DES encryption function that gets called by just about |
142 | every other DES routine in the library. You should not use this | 156 | every other DES routine in the library. You should not use this |
@@ -145,119 +159,81 @@ void des_ecb_encrypt(const_des_cblock *input,des_cblock *output, | |||
145 | long, and this needs to be done to make sure 'non-aligned' memory | 159 | long, and this needs to be done to make sure 'non-aligned' memory |
146 | access do not occur. The characters are loaded 'little endian'. | 160 | access do not occur. The characters are loaded 'little endian'. |
147 | Data is a pointer to 2 unsigned long's and ks is the | 161 | Data is a pointer to 2 unsigned long's and ks is the |
148 | des_key_schedule to use. enc, is non zero specifies encryption, | 162 | DES_key_schedule to use. enc, is non zero specifies encryption, |
149 | zero if decryption. */ | 163 | zero if decryption. */ |
150 | void des_encrypt1(DES_LONG *data,des_key_schedule ks, int enc); | 164 | void DES_encrypt1(DES_LONG *data,DES_key_schedule *ks, int enc); |
151 | 165 | ||
152 | /* This functions is the same as des_encrypt1() except that the DES | 166 | /* This functions is the same as DES_encrypt1() except that the DES |
153 | initial permutation (IP) and final permutation (FP) have been left | 167 | initial permutation (IP) and final permutation (FP) have been left |
154 | out. As for des_encrypt1(), you should not use this function. | 168 | out. As for DES_encrypt1(), you should not use this function. |
155 | It is used by the routines in the library that implement triple DES. | 169 | It is used by the routines in the library that implement triple DES. |
156 | IP() des_encrypt2() des_encrypt2() des_encrypt2() FP() is the same | 170 | IP() DES_encrypt2() DES_encrypt2() DES_encrypt2() FP() is the same |
157 | as des_encrypt1() des_encrypt1() des_encrypt1() except faster :-). */ | 171 | as DES_encrypt1() DES_encrypt1() DES_encrypt1() except faster :-). */ |
158 | void des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc); | 172 | void DES_encrypt2(DES_LONG *data,DES_key_schedule *ks, int enc); |
159 | 173 | ||
160 | void des_encrypt3(DES_LONG *data, des_key_schedule ks1, | 174 | void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, |
161 | des_key_schedule ks2, des_key_schedule ks3); | 175 | DES_key_schedule *ks2, DES_key_schedule *ks3); |
162 | void des_decrypt3(DES_LONG *data, des_key_schedule ks1, | 176 | void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, |
163 | des_key_schedule ks2, des_key_schedule ks3); | 177 | DES_key_schedule *ks2, DES_key_schedule *ks3); |
164 | void des_ede3_cbc_encrypt(const unsigned char *input,unsigned char *output, | 178 | void DES_ede3_cbc_encrypt(const unsigned char *input,unsigned char *output, |
165 | long length, | 179 | long length, |
166 | des_key_schedule ks1,des_key_schedule ks2, | 180 | DES_key_schedule *ks1,DES_key_schedule *ks2, |
167 | des_key_schedule ks3,des_cblock *ivec,int enc); | 181 | DES_key_schedule *ks3,DES_cblock *ivec,int enc); |
168 | void des_ede3_cbcm_encrypt(const unsigned char *in,unsigned char *out, | 182 | void DES_ede3_cbcm_encrypt(const unsigned char *in,unsigned char *out, |
169 | long length, | 183 | long length, |
170 | des_key_schedule ks1,des_key_schedule ks2, | 184 | DES_key_schedule *ks1,DES_key_schedule *ks2, |
171 | des_key_schedule ks3, | 185 | DES_key_schedule *ks3, |
172 | des_cblock *ivec1,des_cblock *ivec2, | 186 | DES_cblock *ivec1,DES_cblock *ivec2, |
173 | int enc); | 187 | int enc); |
174 | void des_ede3_cfb64_encrypt(const unsigned char *in,unsigned char *out, | 188 | void DES_ede3_cfb64_encrypt(const unsigned char *in,unsigned char *out, |
175 | long length,des_key_schedule ks1, | 189 | long length,DES_key_schedule *ks1, |
176 | des_key_schedule ks2,des_key_schedule ks3, | 190 | DES_key_schedule *ks2,DES_key_schedule *ks3, |
177 | des_cblock *ivec,int *num,int enc); | 191 | DES_cblock *ivec,int *num,int enc); |
178 | void des_ede3_ofb64_encrypt(const unsigned char *in,unsigned char *out, | 192 | void DES_ede3_ofb64_encrypt(const unsigned char *in,unsigned char *out, |
179 | long length,des_key_schedule ks1, | 193 | long length,DES_key_schedule *ks1, |
180 | des_key_schedule ks2,des_key_schedule ks3, | 194 | DES_key_schedule *ks2,DES_key_schedule *ks3, |
181 | des_cblock *ivec,int *num); | 195 | DES_cblock *ivec,int *num); |
182 | 196 | ||
183 | void des_xwhite_in2out(const_des_cblock *des_key,const_des_cblock *in_white, | 197 | void DES_xwhite_in2out(const_DES_cblock *DES_key,const_DES_cblock *in_white, |
184 | des_cblock *out_white); | 198 | DES_cblock *out_white); |
185 | 199 | ||
186 | int des_enc_read(int fd,void *buf,int len,des_key_schedule sched, | 200 | int DES_enc_read(int fd,void *buf,int len,DES_key_schedule *sched, |
187 | des_cblock *iv); | 201 | DES_cblock *iv); |
188 | int des_enc_write(int fd,const void *buf,int len,des_key_schedule sched, | 202 | int DES_enc_write(int fd,const void *buf,int len,DES_key_schedule *sched, |
189 | des_cblock *iv); | 203 | DES_cblock *iv); |
190 | char *des_fcrypt(const char *buf,const char *salt, char *ret); | 204 | char *DES_fcrypt(const char *buf,const char *salt, char *ret); |
191 | char *des_crypt(const char *buf,const char *salt); | 205 | char *DES_crypt(const char *buf,const char *salt); |
192 | #if !defined(PERL5) && !defined(__FreeBSD__) && !defined(NeXT) | 206 | void DES_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits, |
193 | char *crypt(const char *buf,const char *salt); | 207 | long length,DES_key_schedule *schedule,DES_cblock *ivec); |
194 | #endif | 208 | void DES_pcbc_encrypt(const unsigned char *input,unsigned char *output, |
195 | void des_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits, | 209 | long length,DES_key_schedule *schedule,DES_cblock *ivec, |
196 | long length,des_key_schedule schedule,des_cblock *ivec); | ||
197 | void des_pcbc_encrypt(const unsigned char *input,unsigned char *output, | ||
198 | long length,des_key_schedule schedule,des_cblock *ivec, | ||
199 | int enc); | 210 | int enc); |
200 | DES_LONG des_quad_cksum(const unsigned char *input,des_cblock output[], | 211 | DES_LONG DES_quad_cksum(const unsigned char *input,DES_cblock output[], |
201 | long length,int out_count,des_cblock *seed); | 212 | long length,int out_count,DES_cblock *seed); |
202 | void des_random_seed(des_cblock *key); | 213 | int DES_random_key(DES_cblock *ret); |
203 | int des_random_key(des_cblock *ret); | 214 | void DES_set_odd_parity(DES_cblock *key); |
204 | int des_read_password(des_cblock *key,const char *prompt,int verify); | 215 | int DES_check_key_parity(const_DES_cblock *key); |
205 | int des_read_2passwords(des_cblock *key1,des_cblock *key2, | 216 | int DES_is_weak_key(const_DES_cblock *key); |
206 | const char *prompt,int verify); | 217 | /* DES_set_key (= set_key = DES_key_sched = key_sched) calls |
207 | int des_read_pw_string(char *buf,int length,const char *prompt,int verify); | 218 | * DES_set_key_checked if global variable DES_check_key is set, |
208 | void des_set_odd_parity(des_cblock *key); | 219 | * DES_set_key_unchecked otherwise. */ |
209 | int des_check_key_parity(const_des_cblock *key); | 220 | int DES_set_key(const_DES_cblock *key,DES_key_schedule *schedule); |
210 | int des_is_weak_key(const_des_cblock *key); | 221 | int DES_key_sched(const_DES_cblock *key,DES_key_schedule *schedule); |
211 | /* des_set_key (= set_key = des_key_sched = key_sched) calls | 222 | int DES_set_key_checked(const_DES_cblock *key,DES_key_schedule *schedule); |
212 | * des_set_key_checked if global variable des_check_key is set, | 223 | void DES_set_key_unchecked(const_DES_cblock *key,DES_key_schedule *schedule); |
213 | * des_set_key_unchecked otherwise. */ | 224 | void DES_string_to_key(const char *str,DES_cblock *key); |
214 | int des_set_key(const_des_cblock *key,des_key_schedule schedule); | 225 | void DES_string_to_2keys(const char *str,DES_cblock *key1,DES_cblock *key2); |
215 | int des_key_sched(const_des_cblock *key,des_key_schedule schedule); | 226 | void DES_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length, |
216 | int des_set_key_checked(const_des_cblock *key,des_key_schedule schedule); | 227 | DES_key_schedule *schedule,DES_cblock *ivec,int *num, |
217 | void des_set_key_unchecked(const_des_cblock *key,des_key_schedule schedule); | ||
218 | void des_string_to_key(const char *str,des_cblock *key); | ||
219 | void des_string_to_2keys(const char *str,des_cblock *key1,des_cblock *key2); | ||
220 | void des_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length, | ||
221 | des_key_schedule schedule,des_cblock *ivec,int *num, | ||
222 | int enc); | 228 | int enc); |
223 | void des_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length, | 229 | void DES_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length, |
224 | des_key_schedule schedule,des_cblock *ivec,int *num); | 230 | DES_key_schedule *schedule,DES_cblock *ivec,int *num); |
225 | int des_read_pw(char *buf,char *buff,int size,const char *prompt,int verify); | ||
226 | |||
227 | /* The following definitions provide compatibility with the MIT Kerberos | ||
228 | * library. The des_key_schedule structure is not binary compatible. */ | ||
229 | 231 | ||
230 | #define _KERBEROS_DES_H | 232 | int DES_read_password(DES_cblock *key, const char *prompt, int verify); |
231 | 233 | int DES_read_2passwords(DES_cblock *key1, DES_cblock *key2, const char *prompt, | |
232 | #define KRBDES_ENCRYPT DES_ENCRYPT | 234 | int verify); |
233 | #define KRBDES_DECRYPT DES_DECRYPT | ||
234 | |||
235 | #ifdef KERBEROS | ||
236 | # define ENCRYPT DES_ENCRYPT | ||
237 | # define DECRYPT DES_DECRYPT | ||
238 | #endif | ||
239 | |||
240 | #ifndef NCOMPAT | ||
241 | # define C_Block des_cblock | ||
242 | # define Key_schedule des_key_schedule | ||
243 | # define KEY_SZ DES_KEY_SZ | ||
244 | # define string_to_key des_string_to_key | ||
245 | # define read_pw_string des_read_pw_string | ||
246 | # define random_key des_random_key | ||
247 | # define pcbc_encrypt des_pcbc_encrypt | ||
248 | # define set_key des_set_key | ||
249 | # define key_sched des_key_sched | ||
250 | # define ecb_encrypt des_ecb_encrypt | ||
251 | # define cbc_encrypt des_cbc_encrypt | ||
252 | # define ncbc_encrypt des_ncbc_encrypt | ||
253 | # define xcbc_encrypt des_xcbc_encrypt | ||
254 | # define cbc_cksum des_cbc_cksum | ||
255 | # define quad_cksum des_quad_cksum | ||
256 | # define check_parity des_check_key_parity | ||
257 | #endif | ||
258 | 235 | ||
259 | typedef des_key_schedule bit_64; | 236 | #define DES_fixup_key_parity DES_set_odd_parity |
260 | #define des_fixup_key_parity des_set_odd_parity | ||
261 | 237 | ||
262 | #ifdef __cplusplus | 238 | #ifdef __cplusplus |
263 | } | 239 | } |