1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/des/des.h */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HEADER_NEW_DES_H
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HEADER_NEW_DES_H
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/e_os2.h>	/* OPENSSL_EXTERN, OPENSSL_NO_DES,
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				   DES_LONG (via openssl/opensslconf.h */
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_NO_DES
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#error DES is disabled.
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_BUILD_SHLIBCRYPTO
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# undef OPENSSL_EXTERN
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define OPENSSL_EXTERN OPENSSL_EXPORT
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern "C" {
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef unsigned char DES_cblock[8];
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef /* const */ unsigned char const_DES_cblock[8];
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* With "const", gcc 2.8.1 on Solaris thinks that DES_cblock *
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * and const_DES_cblock * are incompatible pointer types. */
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct DES_ks
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    union
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_cblock cblock;
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* make sure things are correct size on machines with
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	 * 8 byte longs */
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_LONG deslong[2];
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} ks[16];
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    } DES_key_schedule;
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifndef OPENSSL_ENABLE_OLD_DES_SUPPORT
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define OPENSSL_ENABLE_OLD_DES_SUPPORT
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_ENABLE_OLD_DES_SUPPORT
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# include <openssl/des_old.h>
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_KEY_SZ 	(sizeof(DES_cblock))
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_SCHEDULE_SZ (sizeof(DES_key_schedule))
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_ENCRYPT	1
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_DECRYPT	0
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_CBC_MODE	0
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_PCBC_MODE	1
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_ecb2_encrypt(i,o,k1,k2,e) \
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e))
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e))
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e))
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOPENSSL_DECLARE_GLOBAL(int,DES_check_key);	/* defaults to false */
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_check_key OPENSSL_GLOBAL_REF(DES_check_key)
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOPENSSL_DECLARE_GLOBAL(int,DES_rw_mode);	/* defaults to DES_PCBC_MODE */
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_rw_mode OPENSSL_GLOBAL_REF(DES_rw_mode)
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char *DES_options(void);
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      DES_key_schedule *ks1,DES_key_schedule *ks2,
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      DES_key_schedule *ks3, int enc);
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDES_LONG DES_cbc_cksum(const unsigned char *input,DES_cblock *output,
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		       long length,DES_key_schedule *schedule,
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		       const_DES_cblock *ivec);
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* DES_cbc_encrypt does not update the IV!  Use DES_ncbc_encrypt instead. */
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_cbc_encrypt(const unsigned char *input,unsigned char *output,
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     long length,DES_key_schedule *schedule,DES_cblock *ivec,
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     int enc);
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ncbc_encrypt(const unsigned char *input,unsigned char *output,
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      long length,DES_key_schedule *schedule,DES_cblock *ivec,
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      int enc);
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_xcbc_encrypt(const unsigned char *input,unsigned char *output,
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      long length,DES_key_schedule *schedule,DES_cblock *ivec,
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      const_DES_cblock *inw,const_DES_cblock *outw,int enc);
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_cfb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     long length,DES_key_schedule *schedule,DES_cblock *ivec,
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     int enc);
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ecb_encrypt(const_DES_cblock *input,DES_cblock *output,
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     DES_key_schedule *ks,int enc);
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 	This is the DES encryption function that gets called by just about
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	every other DES routine in the library.  You should not use this
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	function except to implement 'modes' of DES.  I say this because the
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	functions that call this routine do the conversion from 'char *' to
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long, and this needs to be done to make sure 'non-aligned' memory
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	access do not occur.  The characters are loaded 'little endian'.
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	Data is a pointer to 2 unsigned long's and ks is the
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_key_schedule to use.  enc, is non zero specifies encryption,
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	zero if decryption. */
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_encrypt1(DES_LONG *data,DES_key_schedule *ks, int enc);
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 	This functions is the same as DES_encrypt1() except that the DES
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	initial permutation (IP) and final permutation (FP) have been left
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	out.  As for DES_encrypt1(), you should not use this function.
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	It is used by the routines in the library that implement triple DES.
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	IP() DES_encrypt2() DES_encrypt2() DES_encrypt2() FP() is the same
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	as DES_encrypt1() DES_encrypt1() DES_encrypt1() except faster :-). */
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_encrypt2(DES_LONG *data,DES_key_schedule *ks, int enc);
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1,
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		  DES_key_schedule *ks2, DES_key_schedule *ks3);
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		  DES_key_schedule *ks2, DES_key_schedule *ks3);
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ede3_cbc_encrypt(const unsigned char *input,unsigned char *output,
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  long length,
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  DES_key_schedule *ks1,DES_key_schedule *ks2,
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  DES_key_schedule *ks3,DES_cblock *ivec,int enc);
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ede3_cbcm_encrypt(const unsigned char *in,unsigned char *out,
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   long length,
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   DES_key_schedule *ks1,DES_key_schedule *ks2,
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   DES_key_schedule *ks3,
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   DES_cblock *ivec1,DES_cblock *ivec2,
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			   int enc);
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ede3_cfb64_encrypt(const unsigned char *in,unsigned char *out,
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			    long length,DES_key_schedule *ks1,
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			    DES_key_schedule *ks2,DES_key_schedule *ks3,
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			    DES_cblock *ivec,int *num,int enc);
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ede3_cfb_encrypt(const unsigned char *in,unsigned char *out,
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  int numbits,long length,DES_key_schedule *ks1,
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  DES_key_schedule *ks2,DES_key_schedule *ks3,
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			  DES_cblock *ivec,int enc);
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ede3_ofb64_encrypt(const unsigned char *in,unsigned char *out,
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			    long length,DES_key_schedule *ks1,
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			    DES_key_schedule *ks2,DES_key_schedule *ks3,
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			    DES_cblock *ivec,int *num);
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_xwhite_in2out(const_DES_cblock *DES_key,const_DES_cblock *in_white,
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		       DES_cblock *out_white);
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_enc_read(int fd,void *buf,int len,DES_key_schedule *sched,
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		 DES_cblock *iv);
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_enc_write(int fd,const void *buf,int len,DES_key_schedule *sched,
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		  DES_cblock *iv);
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *DES_fcrypt(const char *buf,const char *salt, char *ret);
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *DES_crypt(const char *buf,const char *salt);
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ofb_encrypt(const unsigned char *in,unsigned char *out,int numbits,
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		     long length,DES_key_schedule *schedule,DES_cblock *ivec);
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_pcbc_encrypt(const unsigned char *input,unsigned char *output,
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      long length,DES_key_schedule *schedule,DES_cblock *ivec,
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		      int enc);
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDES_LONG DES_quad_cksum(const unsigned char *input,DES_cblock output[],
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			long length,int out_count,DES_cblock *seed);
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_random_key(DES_cblock *ret);
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_set_odd_parity(DES_cblock *key);
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_check_key_parity(const_DES_cblock *key);
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_is_weak_key(const_DES_cblock *key);
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* DES_set_key (= set_key = DES_key_sched = key_sched) calls
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DES_set_key_checked if global variable DES_check_key is set,
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DES_set_key_unchecked otherwise. */
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_set_key(const_DES_cblock *key,DES_key_schedule *schedule);
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_key_sched(const_DES_cblock *key,DES_key_schedule *schedule);
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_set_key_checked(const_DES_cblock *key,DES_key_schedule *schedule);
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_set_key_unchecked(const_DES_cblock *key,DES_key_schedule *schedule);
227392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_FIPS
228392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromvoid private_DES_set_key_unchecked(const_DES_cblock *key,DES_key_schedule *schedule);
229392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_string_to_key(const char *str,DES_cblock *key);
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_string_to_2keys(const char *str,DES_cblock *key1,DES_cblock *key2);
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_cfb64_encrypt(const unsigned char *in,unsigned char *out,long length,
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		       DES_key_schedule *schedule,DES_cblock *ivec,int *num,
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		       int enc);
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid DES_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length,
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		       DES_key_schedule *schedule,DES_cblock *ivec,int *num);
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_read_password(DES_cblock *key, const char *prompt, int verify);
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint DES_read_2passwords(DES_cblock *key1, DES_cblock *key2, const char *prompt,
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int verify);
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_fixup_key_parity DES_set_odd_parity
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
249