1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/des/des_old.c -*- mode:C; c-file-style: "eay" -*- */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The function names in here are deprecated and are only present to
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * provide an interface compatible with libdes.  OpenSSL now provides
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * functions where "des_" has been replaced with "DES_" in the names,
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * to make it possible to make incompatible changes that are needed
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * for C type security and other stuff.
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Please consider starting to use the DES_ functions rather than the
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * des_ ones.  The des_ functions will dissapear completely before
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OpenSSL 1.0!
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * project 2001.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the documentation and/or other materials provided with the
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    distribution.
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    software must display the following acknowledgment:
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    endorse or promote products derived from this software without
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    prior written permission. For written permission, please contact
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    openssl-core@openssl.org.
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5. Products derived from this software may not be called "OpenSSL"
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    nor may "OpenSSL" appear in their names without prior written
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    permission of the OpenSSL Project.
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 6. Redistributions of any form whatsoever must retain the following
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    acknowledgment:
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OF THE POSSIBILITY OF SUCH DAMAGE.
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This product includes cryptographic software written by Eric Young
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (eay@cryptsoft.com).  This product includes software written by Tim
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Hudson (tjh@cryptsoft.com).
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define OPENSSL_DES_LIBDES_COMPATIBILITY
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/des.h>
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/rand.h>
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char *_ossl_old_des_options(void)
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_options();
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ecb3_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks1,des_key_schedule ks2,
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks3, int enc)
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ecb3_encrypt((const_DES_cblock *)input, output,
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks3, enc);
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDES_LONG _ossl_old_des_cbc_cksum(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long length,des_key_schedule schedule,_ossl_old_des_cblock *ivec)
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_cbc_cksum((unsigned char *)input, output, length,
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)schedule, ivec);
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_cbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc)
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_cbc_encrypt((unsigned char *)input, (unsigned char *)output,
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		length, (DES_key_schedule *)schedule, ivec, enc);
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ncbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc)
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ncbc_encrypt((unsigned char *)input, (unsigned char *)output,
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		length, (DES_key_schedule *)schedule, ivec, enc);
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_xcbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule schedule,_ossl_old_des_cblock *ivec,
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	_ossl_old_des_cblock *inw,_ossl_old_des_cblock *outw,int enc)
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_xcbc_encrypt((unsigned char *)input, (unsigned char *)output,
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		length, (DES_key_schedule *)schedule, ivec, inw, outw, enc);
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits,
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long length,des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc)
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_cfb_encrypt(in, out, numbits, length,
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)schedule, ivec, enc);
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ecb_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks,int enc)
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ecb_encrypt(input, output, (DES_key_schedule *)ks, enc);
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_encrypt(DES_LONG *data,des_key_schedule ks, int enc)
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_encrypt1(data, (DES_key_schedule *)ks, enc);
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_encrypt2(DES_LONG *data,des_key_schedule ks, int enc)
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_encrypt2(data, (DES_key_schedule *)ks, enc);
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_encrypt3(DES_LONG *data, des_key_schedule ks1,
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks2, des_key_schedule ks3)
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_encrypt3(data, (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks3);
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_decrypt3(DES_LONG *data, des_key_schedule ks1,
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks2, des_key_schedule ks3)
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_decrypt3(data, (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks3);
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ede3_cbc_encrypt(_ossl_old_des_cblock *input, _ossl_old_des_cblock *output,
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long length, des_key_schedule ks1, des_key_schedule ks2,
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks3, _ossl_old_des_cblock *ivec, int enc)
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_cbc_encrypt((unsigned char *)input, (unsigned char *)output,
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		length, (DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks3, ivec, enc);
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ede3_cfb64_encrypt(unsigned char *in, unsigned char *out,
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long length, des_key_schedule ks1, des_key_schedule ks2,
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks3, _ossl_old_des_cblock *ivec, int *num, int enc)
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_cfb64_encrypt(in, out, length,
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks3, ivec, num, enc);
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ede3_ofb64_encrypt(unsigned char *in, unsigned char *out,
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long length, des_key_schedule ks1, des_key_schedule ks2,
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule ks3, _ossl_old_des_cblock *ivec, int *num)
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_ofb64_encrypt(in, out, length,
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks1, (DES_key_schedule *)ks2,
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		(DES_key_schedule *)ks3, ivec, num);
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0 /* broken code, preserved just in case anyone specifically looks for this */
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_xwhite_in2out(_ossl_old_des_cblock (*des_key), _ossl_old_des_cblock (*in_white),
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	_ossl_old_des_cblock (*out_white))
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_xwhite_in2out(des_key, in_white, out_white);
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint _ossl_old_des_enc_read(int fd,char *buf,int len,des_key_schedule sched,
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	_ossl_old_des_cblock *iv)
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_enc_read(fd, buf, len, (DES_key_schedule *)sched, iv);
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint _ossl_old_des_enc_write(int fd,char *buf,int len,des_key_schedule sched,
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	_ossl_old_des_cblock *iv)
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_enc_write(fd, buf, len, (DES_key_schedule *)sched, iv);
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *_ossl_old_des_fcrypt(const char *buf,const char *salt, char *ret)
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_fcrypt(buf, salt, ret);
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *_ossl_old_des_crypt(const char *buf,const char *salt)
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_crypt(buf, salt);
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *_ossl_old_crypt(const char *buf,const char *salt)
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_crypt(buf, salt);
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ofb_encrypt(unsigned char *in,unsigned char *out,
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int numbits,long length,des_key_schedule schedule,_ossl_old_des_cblock *ivec)
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ofb_encrypt(in, out, numbits, length, (DES_key_schedule *)schedule,
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ivec);
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_pcbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc)
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_pcbc_encrypt((unsigned char *)input, (unsigned char *)output,
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		length, (DES_key_schedule *)schedule, ivec, enc);
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDES_LONG _ossl_old_des_quad_cksum(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long length,int out_count,_ossl_old_des_cblock *seed)
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_quad_cksum((unsigned char *)input, output, length,
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		out_count, seed);
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_random_seed(_ossl_old_des_cblock key)
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	RAND_seed(key, sizeof(_ossl_old_des_cblock));
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_random_key(_ossl_old_des_cblock ret)
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_random_key((DES_cblock *)ret);
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint _ossl_old_des_read_password(_ossl_old_des_cblock *key, const char *prompt,
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				int verify)
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_read_password(key, prompt, verify);
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint _ossl_old_des_read_2passwords(_ossl_old_des_cblock *key1, _ossl_old_des_cblock *key2,
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const char *prompt, int verify)
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_read_2passwords(key1, key2, prompt, verify);
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_set_odd_parity(_ossl_old_des_cblock *key)
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_odd_parity(key);
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint _ossl_old_des_is_weak_key(_ossl_old_des_cblock *key)
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_is_weak_key(key);
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint _ossl_old_des_set_key(_ossl_old_des_cblock *key,des_key_schedule schedule)
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_set_key(key, (DES_key_schedule *)schedule);
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint _ossl_old_des_key_sched(_ossl_old_des_cblock *key,des_key_schedule schedule)
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return DES_key_sched(key, (DES_key_schedule *)schedule);
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_string_to_key(char *str,_ossl_old_des_cblock *key)
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_string_to_key(str, key);
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_string_to_2keys(char *str,_ossl_old_des_cblock *key1,_ossl_old_des_cblock *key2)
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_string_to_2keys(str, key1, key2);
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_cfb64_encrypt(unsigned char *in, unsigned char *out, long length,
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule schedule, _ossl_old_des_cblock *ivec, int *num, int enc)
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_cfb64_encrypt(in, out, length, (DES_key_schedule *)schedule,
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ivec, num, enc);
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid _ossl_old_des_ofb64_encrypt(unsigned char *in, unsigned char *out, long length,
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	des_key_schedule schedule, _ossl_old_des_cblock *ivec, int *num)
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ofb64_encrypt(in, out, length, (DES_key_schedule *)schedule,
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ivec, num);
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
274