OpenSSL
1.0.1c
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
crypto
des
des_old.c
Go to the documentation of this file.
1
/* crypto/des/des_old.c -*- mode:C; c-file-style: "eay" -*- */
2
3
/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4
*
5
* The function names in here are deprecated and are only present to
6
* provide an interface compatible with libdes. OpenSSL now provides
7
* functions where "des_" has been replaced with "DES_" in the names,
8
* to make it possible to make incompatible changes that are needed
9
* for C type security and other stuff.
10
*
11
* Please consider starting to use the DES_ functions rather than the
12
* des_ ones. The des_ functions will dissapear completely before
13
* OpenSSL 1.0!
14
*
15
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
16
*/
17
18
/* Written by Richard Levitte (
[email protected]
) for the OpenSSL
19
* project 2001.
20
*/
21
/* ====================================================================
22
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
23
*
24
* Redistribution and use in source and binary forms, with or without
25
* modification, are permitted provided that the following conditions
26
* are met:
27
*
28
* 1. Redistributions of source code must retain the above copyright
29
* notice, this list of conditions and the following disclaimer.
30
*
31
* 2. Redistributions in binary form must reproduce the above copyright
32
* notice, this list of conditions and the following disclaimer in
33
* the documentation and/or other materials provided with the
34
* distribution.
35
*
36
* 3. All advertising materials mentioning features or use of this
37
* software must display the following acknowledgment:
38
* "This product includes software developed by the OpenSSL Project
39
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
40
*
41
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
42
* endorse or promote products derived from this software without
43
* prior written permission. For written permission, please contact
44
*
[email protected]
.
45
*
46
* 5. Products derived from this software may not be called "OpenSSL"
47
* nor may "OpenSSL" appear in their names without prior written
48
* permission of the OpenSSL Project.
49
*
50
* 6. Redistributions of any form whatsoever must retain the following
51
* acknowledgment:
52
* "This product includes software developed by the OpenSSL Project
53
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
54
*
55
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
56
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
57
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
58
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
59
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
60
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
61
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
62
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
63
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
64
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
65
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
66
* OF THE POSSIBILITY OF SUCH DAMAGE.
67
* ====================================================================
68
*
69
* This product includes cryptographic software written by Eric Young
70
* (
[email protected]
). This product includes software written by Tim
71
* Hudson (
[email protected]
).
72
*
73
*/
74
75
#define OPENSSL_DES_LIBDES_COMPATIBILITY
76
#include <
openssl/des.h
>
77
#include <
openssl/rand.h
>
78
79
const
char
*
_ossl_old_des_options
(
void
)
80
{
81
return
DES_options
();
82
}
83
void
_ossl_old_des_ecb3_encrypt
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
84
des_key_schedule
ks1,
des_key_schedule
ks2,
85
des_key_schedule
ks3,
int
enc
)
86
{
87
DES_ecb3_encrypt
((
const_DES_cblock
*)input, output,
88
(
DES_key_schedule
*)ks1, (
DES_key_schedule
*)ks2,
89
(
DES_key_schedule
*)ks3, enc);
90
}
91
DES_LONG
_ossl_old_des_cbc_cksum
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
92
long
length
,
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec)
93
{
94
return
DES_cbc_cksum
((
unsigned
char
*)input, output, length,
95
(
DES_key_schedule
*)schedule, ivec);
96
}
97
void
_ossl_old_des_cbc_encrypt
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
long
length
,
98
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec,
int
enc
)
99
{
100
DES_cbc_encrypt
((
unsigned
char
*)input, (
unsigned
char
*)output,
101
length, (
DES_key_schedule
*)schedule, ivec, enc);
102
}
103
void
_ossl_old_des_ncbc_encrypt
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
long
length
,
104
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec,
int
enc
)
105
{
106
DES_ncbc_encrypt
((
unsigned
char
*)input, (
unsigned
char
*)output,
107
length, (
DES_key_schedule
*)schedule, ivec, enc);
108
}
109
void
_ossl_old_des_xcbc_encrypt
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
long
length
,
110
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec,
111
_ossl_old_des_cblock
*inw,
_ossl_old_des_cblock
*outw,
int
enc
)
112
{
113
DES_xcbc_encrypt
((
unsigned
char
*)input, (
unsigned
char
*)output,
114
length, (
DES_key_schedule
*)schedule, ivec, inw, outw, enc);
115
}
116
void
_ossl_old_des_cfb_encrypt
(
unsigned
char
*in,
unsigned
char
*out,
int
numbits,
117
long
length
,
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec,
int
enc
)
118
{
119
DES_cfb_encrypt
(in, out, numbits, length,
120
(
DES_key_schedule
*)schedule, ivec, enc);
121
}
122
void
_ossl_old_des_ecb_encrypt
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
123
des_key_schedule
ks,
int
enc
)
124
{
125
DES_ecb_encrypt
(input, output, (
DES_key_schedule
*)ks, enc);
126
}
127
void
_ossl_old_des_encrypt
(DES_LONG *
data
,
des_key_schedule
ks,
int
enc
)
128
{
129
DES_encrypt1
(data, (
DES_key_schedule
*)ks, enc);
130
}
131
void
_ossl_old_des_encrypt2
(DES_LONG *
data
,
des_key_schedule
ks,
int
enc
)
132
{
133
DES_encrypt2
(data, (
DES_key_schedule
*)ks, enc);
134
}
135
void
_ossl_old_des_encrypt3
(DES_LONG *
data
,
des_key_schedule
ks1,
136
des_key_schedule
ks2,
des_key_schedule
ks3)
137
{
138
DES_encrypt3
(data, (
DES_key_schedule
*)ks1, (
DES_key_schedule
*)ks2,
139
(
DES_key_schedule
*)ks3);
140
}
141
void
_ossl_old_des_decrypt3
(DES_LONG *
data
,
des_key_schedule
ks1,
142
des_key_schedule
ks2,
des_key_schedule
ks3)
143
{
144
DES_decrypt3
(data, (
DES_key_schedule
*)ks1, (
DES_key_schedule
*)ks2,
145
(
DES_key_schedule
*)ks3);
146
}
147
void
_ossl_old_des_ede3_cbc_encrypt
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
148
long
length
,
des_key_schedule
ks1,
des_key_schedule
ks2,
149
des_key_schedule
ks3,
_ossl_old_des_cblock
*ivec,
int
enc
)
150
{
151
DES_ede3_cbc_encrypt
((
unsigned
char
*)input, (
unsigned
char
*)output,
152
length, (
DES_key_schedule
*)ks1, (
DES_key_schedule
*)ks2,
153
(
DES_key_schedule
*)ks3, ivec, enc);
154
}
155
void
_ossl_old_des_ede3_cfb64_encrypt
(
unsigned
char
*in,
unsigned
char
*out,
156
long
length
,
des_key_schedule
ks1,
des_key_schedule
ks2,
157
des_key_schedule
ks3,
_ossl_old_des_cblock
*ivec,
int
*
num
,
int
enc
)
158
{
159
DES_ede3_cfb64_encrypt
(in, out, length,
160
(
DES_key_schedule
*)ks1, (
DES_key_schedule
*)ks2,
161
(
DES_key_schedule
*)ks3, ivec, num, enc);
162
}
163
void
_ossl_old_des_ede3_ofb64_encrypt
(
unsigned
char
*in,
unsigned
char
*out,
164
long
length
,
des_key_schedule
ks1,
des_key_schedule
ks2,
165
des_key_schedule
ks3,
_ossl_old_des_cblock
*ivec,
int
*
num
)
166
{
167
DES_ede3_ofb64_encrypt
(in, out, length,
168
(
DES_key_schedule
*)ks1, (
DES_key_schedule
*)ks2,
169
(
DES_key_schedule
*)ks3, ivec, num);
170
}
171
172
#if 0
/* broken code, preserved just in case anyone specifically looks for this */
173
void
_ossl_old_des_xwhite_in2out(
_ossl_old_des_cblock
(*des_key),
_ossl_old_des_cblock
(*in_white),
174
_ossl_old_des_cblock
(*out_white))
175
{
176
DES_xwhite_in2out(des_key, in_white, out_white);
177
}
178
#endif
179
180
int
_ossl_old_des_enc_read
(
int
fd,
char
*buf,
int
len
,
des_key_schedule
sched,
181
_ossl_old_des_cblock
*iv)
182
{
183
return
DES_enc_read
(fd, buf, len, (
DES_key_schedule
*)sched, iv);
184
}
185
int
_ossl_old_des_enc_write
(
int
fd,
char
*buf,
int
len
,
des_key_schedule
sched,
186
_ossl_old_des_cblock
*iv)
187
{
188
return
DES_enc_write
(fd, buf, len, (
DES_key_schedule
*)sched, iv);
189
}
190
char
*
_ossl_old_des_fcrypt
(
const
char
*buf,
const
char
*salt,
char
*ret)
191
{
192
return
DES_fcrypt
(buf, salt, ret);
193
}
194
char
*
_ossl_old_des_crypt
(
const
char
*buf,
const
char
*salt)
195
{
196
return
DES_crypt
(buf, salt);
197
}
198
char
*
_ossl_old_crypt
(
const
char
*buf,
const
char
*salt)
199
{
200
return
DES_crypt
(buf, salt);
201
}
202
void
_ossl_old_des_ofb_encrypt
(
unsigned
char
*in,
unsigned
char
*out,
203
int
numbits,
long
length
,
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec)
204
{
205
DES_ofb_encrypt
(in, out, numbits, length, (
DES_key_schedule
*)schedule,
206
ivec);
207
}
208
void
_ossl_old_des_pcbc_encrypt
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
long
length
,
209
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec,
int
enc
)
210
{
211
DES_pcbc_encrypt
((
unsigned
char
*)input, (
unsigned
char
*)output,
212
length, (
DES_key_schedule
*)schedule, ivec, enc);
213
}
214
DES_LONG
_ossl_old_des_quad_cksum
(
_ossl_old_des_cblock
*input,
_ossl_old_des_cblock
*output,
215
long
length
,
int
out_count,
_ossl_old_des_cblock
*
seed
)
216
{
217
return
DES_quad_cksum
((
unsigned
char
*)input, output, length,
218
out_count, seed);
219
}
220
void
_ossl_old_des_random_seed
(
_ossl_old_des_cblock
key
)
221
{
222
RAND_seed
(key,
sizeof
(
_ossl_old_des_cblock
));
223
}
224
void
_ossl_old_des_random_key
(
_ossl_old_des_cblock
ret)
225
{
226
DES_random_key
((
DES_cblock
*)ret);
227
}
228
int
_ossl_old_des_read_password
(
_ossl_old_des_cblock
*
key
,
const
char
*prompt,
229
int
verify)
230
{
231
return
DES_read_password
(key, prompt, verify);
232
}
233
int
_ossl_old_des_read_2passwords
(
_ossl_old_des_cblock
*key1,
_ossl_old_des_cblock
*key2,
234
const
char
*prompt,
int
verify)
235
{
236
return
DES_read_2passwords
(key1, key2, prompt, verify);
237
}
238
void
_ossl_old_des_set_odd_parity
(
_ossl_old_des_cblock
*
key
)
239
{
240
DES_set_odd_parity
(key);
241
}
242
int
_ossl_old_des_is_weak_key
(
_ossl_old_des_cblock
*
key
)
243
{
244
return
DES_is_weak_key
(key);
245
}
246
int
_ossl_old_des_set_key
(
_ossl_old_des_cblock
*
key
,
des_key_schedule
schedule)
247
{
248
return
DES_set_key
(key, (
DES_key_schedule
*)schedule);
249
}
250
int
_ossl_old_des_key_sched
(
_ossl_old_des_cblock
*
key
,
des_key_schedule
schedule)
251
{
252
return
DES_key_sched
(key, (
DES_key_schedule
*)schedule);
253
}
254
void
_ossl_old_des_string_to_key
(
char
*str,
_ossl_old_des_cblock
*
key
)
255
{
256
DES_string_to_key
(str, key);
257
}
258
void
_ossl_old_des_string_to_2keys
(
char
*str,
_ossl_old_des_cblock
*key1,
_ossl_old_des_cblock
*key2)
259
{
260
DES_string_to_2keys
(str, key1, key2);
261
}
262
void
_ossl_old_des_cfb64_encrypt
(
unsigned
char
*in,
unsigned
char
*out,
long
length
,
263
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec,
int
*
num
,
int
enc
)
264
{
265
DES_cfb64_encrypt
(in, out, length, (
DES_key_schedule
*)schedule,
266
ivec, num, enc);
267
}
268
void
_ossl_old_des_ofb64_encrypt
(
unsigned
char
*in,
unsigned
char
*out,
long
length
,
269
des_key_schedule
schedule,
_ossl_old_des_cblock
*ivec,
int
*
num
)
270
{
271
DES_ofb64_encrypt
(in, out, length, (
DES_key_schedule
*)schedule,
272
ivec, num);
273
}
Generated on Thu Jan 10 2013 09:53:35 for OpenSSL by
1.8.2