Home | History | Annotate | Download | only in des
      1 /* crypto/des/des_old.h -*- 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 openssl 0.9.6 and older as
      7  * well as libdes.  OpenSSL now provides functions where "des_" has
      8  * been replaced with "DES_" in the names, to make it possible to
      9  * make incompatible changes that are needed for C type security and
     10  * other stuff.
     11  *
     12  * This include files has two compatibility modes:
     13  *
     14  *   - If OPENSSL_DES_LIBDES_COMPATIBILITY is defined, you get an API
     15  *     that is compatible with libdes and SSLeay.
     16  *   - If OPENSSL_DES_LIBDES_COMPATIBILITY isn't defined, you get an
     17  *     API that is compatible with OpenSSL 0.9.5x to 0.9.6x.
     18  *
     19  * Note that these modes break earlier snapshots of OpenSSL, where
     20  * libdes compatibility was the only available mode or (later on) the
     21  * prefered compatibility mode.  However, after much consideration
     22  * (and more or less violent discussions with external parties), it
     23  * was concluded that OpenSSL should be compatible with earlier versions
     24  * of itself before anything else.  Also, in all honesty, libdes is
     25  * an old beast that shouldn't really be used any more.
     26  *
     27  * Please consider starting to use the DES_ functions rather than the
     28  * des_ ones.  The des_ functions will disappear completely before
     29  * OpenSSL 1.0!
     30  *
     31  * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
     32  */
     33 
     34 /* Written by Richard Levitte (richard (at) levitte.org) for the OpenSSL
     35  * project 2001.
     36  */
     37 /* ====================================================================
     38  * Copyright (c) 1998-2002 The OpenSSL Project.  All rights reserved.
     39  *
     40  * Redistribution and use in source and binary forms, with or without
     41  * modification, are permitted provided that the following conditions
     42  * are met:
     43  *
     44  * 1. Redistributions of source code must retain the above copyright
     45  *    notice, this list of conditions and the following disclaimer.
     46  *
     47  * 2. Redistributions in binary form must reproduce the above copyright
     48  *    notice, this list of conditions and the following disclaimer in
     49  *    the documentation and/or other materials provided with the
     50  *    distribution.
     51  *
     52  * 3. All advertising materials mentioning features or use of this
     53  *    software must display the following acknowledgment:
     54  *    "This product includes software developed by the OpenSSL Project
     55  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
     56  *
     57  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
     58  *    endorse or promote products derived from this software without
     59  *    prior written permission. For written permission, please contact
     60  *    openssl-core (at) openssl.org.
     61  *
     62  * 5. Products derived from this software may not be called "OpenSSL"
     63  *    nor may "OpenSSL" appear in their names without prior written
     64  *    permission of the OpenSSL Project.
     65  *
     66  * 6. Redistributions of any form whatsoever must retain the following
     67  *    acknowledgment:
     68  *    "This product includes software developed by the OpenSSL Project
     69  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
     70  *
     71  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
     72  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     73  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     74  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
     75  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     76  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     77  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     78  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     79  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     80  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     81  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
     82  * OF THE POSSIBILITY OF SUCH DAMAGE.
     83  * ====================================================================
     84  *
     85  * This product includes cryptographic software written by Eric Young
     86  * (eay (at) cryptsoft.com).  This product includes software written by Tim
     87  * Hudson (tjh (at) cryptsoft.com).
     88  *
     89  */
     90 
     91 #ifndef HEADER_DES_H
     92 #define HEADER_DES_H
     93 
     94 #include <openssl/e_os2.h>	/* OPENSSL_EXTERN, OPENSSL_NO_DES, DES_LONG */
     95 
     96 #ifdef OPENSSL_NO_DES
     97 #error DES is disabled.
     98 #endif
     99 
    100 #ifndef HEADER_NEW_DES_H
    101 #error You must include des.h, not des_old.h directly.
    102 #endif
    103 
    104 #ifdef _KERBEROS_DES_H
    105 #error <openssl/des_old.h> replaces <kerberos/des.h>.
    106 #endif
    107 
    108 #include <openssl/symhacks.h>
    109 
    110 #ifdef OPENSSL_BUILD_SHLIBCRYPTO
    111 # undef OPENSSL_EXTERN
    112 # define OPENSSL_EXTERN OPENSSL_EXPORT
    113 #endif
    114 
    115 #ifdef  __cplusplus
    116 extern "C" {
    117 #endif
    118 
    119 #ifdef _
    120 #undef _
    121 #endif
    122 
    123 typedef unsigned char _ossl_old_des_cblock[8];
    124 typedef struct _ossl_old_des_ks_struct
    125 	{
    126 	union	{
    127 		_ossl_old_des_cblock _;
    128 		/* make sure things are correct size on machines with
    129 		 * 8 byte longs */
    130 		DES_LONG pad[2];
    131 		} ks;
    132 	} _ossl_old_des_key_schedule[16];
    133 
    134 #ifndef OPENSSL_DES_LIBDES_COMPATIBILITY
    135 #define des_cblock DES_cblock
    136 #define const_des_cblock const_DES_cblock
    137 #define des_key_schedule DES_key_schedule
    138 #define des_ecb3_encrypt(i,o,k1,k2,k3,e)\
    139 	DES_ecb3_encrypt((i),(o),&(k1),&(k2),&(k3),(e))
    140 #define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\
    141 	DES_ede3_cbc_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(e))
    142 #define des_ede3_cbcm_encrypt(i,o,l,k1,k2,k3,iv1,iv2,e)\
    143 	DES_ede3_cbcm_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv1),(iv2),(e))
    144 #define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\
    145 	DES_ede3_cfb64_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(n),(e))
    146 #define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\
    147 	DES_ede3_ofb64_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(n))
    148 #define des_options()\
    149 	DES_options()
    150 #define des_cbc_cksum(i,o,l,k,iv)\
    151 	DES_cbc_cksum((i),(o),(l),&(k),(iv))
    152 #define des_cbc_encrypt(i,o,l,k,iv,e)\
    153 	DES_cbc_encrypt((i),(o),(l),&(k),(iv),(e))
    154 #define des_ncbc_encrypt(i,o,l,k,iv,e)\
    155 	DES_ncbc_encrypt((i),(o),(l),&(k),(iv),(e))
    156 #define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\
    157 	DES_xcbc_encrypt((i),(o),(l),&(k),(iv),(inw),(outw),(e))
    158 #define des_cfb_encrypt(i,o,n,l,k,iv,e)\
    159 	DES_cfb_encrypt((i),(o),(n),(l),&(k),(iv),(e))
    160 #define des_ecb_encrypt(i,o,k,e)\
    161 	DES_ecb_encrypt((i),(o),&(k),(e))
    162 #define des_encrypt1(d,k,e)\
    163 	DES_encrypt1((d),&(k),(e))
    164 #define des_encrypt2(d,k,e)\
    165 	DES_encrypt2((d),&(k),(e))
    166 #define des_encrypt3(d,k1,k2,k3)\
    167 	DES_encrypt3((d),&(k1),&(k2),&(k3))
    168 #define des_decrypt3(d,k1,k2,k3)\
    169 	DES_decrypt3((d),&(k1),&(k2),&(k3))
    170 #define des_xwhite_in2out(k,i,o)\
    171 	DES_xwhite_in2out((k),(i),(o))
    172 #define des_enc_read(f,b,l,k,iv)\
    173 	DES_enc_read((f),(b),(l),&(k),(iv))
    174 #define des_enc_write(f,b,l,k,iv)\
    175 	DES_enc_write((f),(b),(l),&(k),(iv))
    176 #define des_fcrypt(b,s,r)\
    177 	DES_fcrypt((b),(s),(r))
    178 #if 0
    179 #define des_crypt(b,s)\
    180 	DES_crypt((b),(s))
    181 #if !defined(PERL5) && !defined(__FreeBSD__) && !defined(NeXT) && !defined(__OpenBSD__)
    182 #define crypt(b,s)\
    183 	DES_crypt((b),(s))
    184 #endif
    185 #endif
    186 #define des_ofb_encrypt(i,o,n,l,k,iv)\
    187 	DES_ofb_encrypt((i),(o),(n),(l),&(k),(iv))
    188 #define des_pcbc_encrypt(i,o,l,k,iv,e)\
    189 	DES_pcbc_encrypt((i),(o),(l),&(k),(iv),(e))
    190 #define des_quad_cksum(i,o,l,c,s)\
    191 	DES_quad_cksum((i),(o),(l),(c),(s))
    192 #define des_random_seed(k)\
    193 	_ossl_096_des_random_seed((k))
    194 #define des_random_key(r)\
    195 	DES_random_key((r))
    196 #define des_read_password(k,p,v) \
    197 	DES_read_password((k),(p),(v))
    198 #define des_read_2passwords(k1,k2,p,v) \
    199 	DES_read_2passwords((k1),(k2),(p),(v))
    200 #define des_set_odd_parity(k)\
    201 	DES_set_odd_parity((k))
    202 #define des_check_key_parity(k)\
    203 	DES_check_key_parity((k))
    204 #define des_is_weak_key(k)\
    205 	DES_is_weak_key((k))
    206 #define des_set_key(k,ks)\
    207 	DES_set_key((k),&(ks))
    208 #define des_key_sched(k,ks)\
    209 	DES_key_sched((k),&(ks))
    210 #define des_set_key_checked(k,ks)\
    211 	DES_set_key_checked((k),&(ks))
    212 #define des_set_key_unchecked(k,ks)\
    213 	DES_set_key_unchecked((k),&(ks))
    214 #define des_string_to_key(s,k)\
    215 	DES_string_to_key((s),(k))
    216 #define des_string_to_2keys(s,k1,k2)\
    217 	DES_string_to_2keys((s),(k1),(k2))
    218 #define des_cfb64_encrypt(i,o,l,ks,iv,n,e)\
    219 	DES_cfb64_encrypt((i),(o),(l),&(ks),(iv),(n),(e))
    220 #define des_ofb64_encrypt(i,o,l,ks,iv,n)\
    221 	DES_ofb64_encrypt((i),(o),(l),&(ks),(iv),(n))
    222 
    223 
    224 #define des_ecb2_encrypt(i,o,k1,k2,e) \
    225 	des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e))
    226 
    227 #define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \
    228 	des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e))
    229 
    230 #define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \
    231 	des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e))
    232 
    233 #define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \
    234 	des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
    235 
    236 #define des_check_key DES_check_key
    237 #define des_rw_mode DES_rw_mode
    238 #else /* libdes compatibility */
    239 /* Map all symbol names to _ossl_old_des_* form, so we avoid all
    240    clashes with libdes */
    241 #define des_cblock _ossl_old_des_cblock
    242 #define des_key_schedule _ossl_old_des_key_schedule
    243 #define des_ecb3_encrypt(i,o,k1,k2,k3,e)\
    244 	_ossl_old_des_ecb3_encrypt((i),(o),(k1),(k2),(k3),(e))
    245 #define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\
    246 	_ossl_old_des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(e))
    247 #define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\
    248 	_ossl_old_des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n),(e))
    249 #define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\
    250 	_ossl_old_des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n))
    251 #define des_options()\
    252 	_ossl_old_des_options()
    253 #define des_cbc_cksum(i,o,l,k,iv)\
    254 	_ossl_old_des_cbc_cksum((i),(o),(l),(k),(iv))
    255 #define des_cbc_encrypt(i,o,l,k,iv,e)\
    256 	_ossl_old_des_cbc_encrypt((i),(o),(l),(k),(iv),(e))
    257 #define des_ncbc_encrypt(i,o,l,k,iv,e)\
    258 	_ossl_old_des_ncbc_encrypt((i),(o),(l),(k),(iv),(e))
    259 #define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\
    260 	_ossl_old_des_xcbc_encrypt((i),(o),(l),(k),(iv),(inw),(outw),(e))
    261 #define des_cfb_encrypt(i,o,n,l,k,iv,e)\
    262 	_ossl_old_des_cfb_encrypt((i),(o),(n),(l),(k),(iv),(e))
    263 #define des_ecb_encrypt(i,o,k,e)\
    264 	_ossl_old_des_ecb_encrypt((i),(o),(k),(e))
    265 #define des_encrypt(d,k,e)\
    266 	_ossl_old_des_encrypt((d),(k),(e))
    267 #define des_encrypt2(d,k,e)\
    268 	_ossl_old_des_encrypt2((d),(k),(e))
    269 #define des_encrypt3(d,k1,k2,k3)\
    270 	_ossl_old_des_encrypt3((d),(k1),(k2),(k3))
    271 #define des_decrypt3(d,k1,k2,k3)\
    272 	_ossl_old_des_decrypt3((d),(k1),(k2),(k3))
    273 #define des_xwhite_in2out(k,i,o)\
    274 	_ossl_old_des_xwhite_in2out((k),(i),(o))
    275 #define des_enc_read(f,b,l,k,iv)\
    276 	_ossl_old_des_enc_read((f),(b),(l),(k),(iv))
    277 #define des_enc_write(f,b,l,k,iv)\
    278 	_ossl_old_des_enc_write((f),(b),(l),(k),(iv))
    279 #define des_fcrypt(b,s,r)\
    280 	_ossl_old_des_fcrypt((b),(s),(r))
    281 #define des_crypt(b,s)\
    282 	_ossl_old_des_crypt((b),(s))
    283 #if 0
    284 #define crypt(b,s)\
    285 	_ossl_old_crypt((b),(s))
    286 #endif
    287 #define des_ofb_encrypt(i,o,n,l,k,iv)\
    288 	_ossl_old_des_ofb_encrypt((i),(o),(n),(l),(k),(iv))
    289 #define des_pcbc_encrypt(i,o,l,k,iv,e)\
    290 	_ossl_old_des_pcbc_encrypt((i),(o),(l),(k),(iv),(e))
    291 #define des_quad_cksum(i,o,l,c,s)\
    292 	_ossl_old_des_quad_cksum((i),(o),(l),(c),(s))
    293 #define des_random_seed(k)\
    294 	_ossl_old_des_random_seed((k))
    295 #define des_random_key(r)\
    296 	_ossl_old_des_random_key((r))
    297 #define des_read_password(k,p,v) \
    298 	_ossl_old_des_read_password((k),(p),(v))
    299 #define des_read_2passwords(k1,k2,p,v) \
    300 	_ossl_old_des_read_2passwords((k1),(k2),(p),(v))
    301 #define des_set_odd_parity(k)\
    302 	_ossl_old_des_set_odd_parity((k))
    303 #define des_is_weak_key(k)\
    304 	_ossl_old_des_is_weak_key((k))
    305 #define des_set_key(k,ks)\
    306 	_ossl_old_des_set_key((k),(ks))
    307 #define des_key_sched(k,ks)\
    308 	_ossl_old_des_key_sched((k),(ks))
    309 #define des_string_to_key(s,k)\
    310 	_ossl_old_des_string_to_key((s),(k))
    311 #define des_string_to_2keys(s,k1,k2)\
    312 	_ossl_old_des_string_to_2keys((s),(k1),(k2))
    313 #define des_cfb64_encrypt(i,o,l,ks,iv,n,e)\
    314 	_ossl_old_des_cfb64_encrypt((i),(o),(l),(ks),(iv),(n),(e))
    315 #define des_ofb64_encrypt(i,o,l,ks,iv,n)\
    316 	_ossl_old_des_ofb64_encrypt((i),(o),(l),(ks),(iv),(n))
    317 
    318 
    319 #define des_ecb2_encrypt(i,o,k1,k2,e) \
    320 	des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e))
    321 
    322 #define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \
    323 	des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e))
    324 
    325 #define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \
    326 	des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e))
    327 
    328 #define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \
    329 	des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n))
    330 
    331 #define des_check_key DES_check_key
    332 #define des_rw_mode DES_rw_mode
    333 #endif
    334 
    335 const char *_ossl_old_des_options(void);
    336 void _ossl_old_des_ecb3_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
    337 	_ossl_old_des_key_schedule ks1,_ossl_old_des_key_schedule ks2,
    338 	_ossl_old_des_key_schedule ks3, int enc);
    339 DES_LONG _ossl_old_des_cbc_cksum(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
    340 	long length,_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec);
    341 void _ossl_old_des_cbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
    342 	_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc);
    343 void _ossl_old_des_ncbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
    344 	_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc);
    345 void _ossl_old_des_xcbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
    346 	_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,
    347 	_ossl_old_des_cblock *inw,_ossl_old_des_cblock *outw,int enc);
    348 void _ossl_old_des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits,
    349 	long length,_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc);
    350 void _ossl_old_des_ecb_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
    351 	_ossl_old_des_key_schedule ks,int enc);
    352 void _ossl_old_des_encrypt(DES_LONG *data,_ossl_old_des_key_schedule ks, int enc);
    353 void _ossl_old_des_encrypt2(DES_LONG *data,_ossl_old_des_key_schedule ks, int enc);
    354 void _ossl_old_des_encrypt3(DES_LONG *data, _ossl_old_des_key_schedule ks1,
    355 	_ossl_old_des_key_schedule ks2, _ossl_old_des_key_schedule ks3);
    356 void _ossl_old_des_decrypt3(DES_LONG *data, _ossl_old_des_key_schedule ks1,
    357 	_ossl_old_des_key_schedule ks2, _ossl_old_des_key_schedule ks3);
    358 void _ossl_old_des_ede3_cbc_encrypt(_ossl_old_des_cblock *input, _ossl_old_des_cblock *output,
    359 	long length, _ossl_old_des_key_schedule ks1, _ossl_old_des_key_schedule ks2,
    360 	_ossl_old_des_key_schedule ks3, _ossl_old_des_cblock *ivec, int enc);
    361 void _ossl_old_des_ede3_cfb64_encrypt(unsigned char *in, unsigned char *out,
    362 	long length, _ossl_old_des_key_schedule ks1, _ossl_old_des_key_schedule ks2,
    363 	_ossl_old_des_key_schedule ks3, _ossl_old_des_cblock *ivec, int *num, int enc);
    364 void _ossl_old_des_ede3_ofb64_encrypt(unsigned char *in, unsigned char *out,
    365 	long length, _ossl_old_des_key_schedule ks1, _ossl_old_des_key_schedule ks2,
    366 	_ossl_old_des_key_schedule ks3, _ossl_old_des_cblock *ivec, int *num);
    367 #if 0
    368 void _ossl_old_des_xwhite_in2out(_ossl_old_des_cblock (*des_key), _ossl_old_des_cblock (*in_white),
    369 	_ossl_old_des_cblock (*out_white));
    370 #endif
    371 
    372 int _ossl_old_des_enc_read(int fd,char *buf,int len,_ossl_old_des_key_schedule sched,
    373 	_ossl_old_des_cblock *iv);
    374 int _ossl_old_des_enc_write(int fd,char *buf,int len,_ossl_old_des_key_schedule sched,
    375 	_ossl_old_des_cblock *iv);
    376 char *_ossl_old_des_fcrypt(const char *buf,const char *salt, char *ret);
    377 char *_ossl_old_des_crypt(const char *buf,const char *salt);
    378 #if !defined(PERL5) && !defined(NeXT)
    379 char *_ossl_old_crypt(const char *buf,const char *salt);
    380 #endif
    381 void _ossl_old_des_ofb_encrypt(unsigned char *in,unsigned char *out,
    382 	int numbits,long length,_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec);
    383 void _ossl_old_des_pcbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length,
    384 	_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc);
    385 DES_LONG _ossl_old_des_quad_cksum(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,
    386 	long length,int out_count,_ossl_old_des_cblock *seed);
    387 void _ossl_old_des_random_seed(_ossl_old_des_cblock key);
    388 void _ossl_old_des_random_key(_ossl_old_des_cblock ret);
    389 int _ossl_old_des_read_password(_ossl_old_des_cblock *key,const char *prompt,int verify);
    390 int _ossl_old_des_read_2passwords(_ossl_old_des_cblock *key1,_ossl_old_des_cblock *key2,
    391 	const char *prompt,int verify);
    392 void _ossl_old_des_set_odd_parity(_ossl_old_des_cblock *key);
    393 int _ossl_old_des_is_weak_key(_ossl_old_des_cblock *key);
    394 int _ossl_old_des_set_key(_ossl_old_des_cblock *key,_ossl_old_des_key_schedule schedule);
    395 int _ossl_old_des_key_sched(_ossl_old_des_cblock *key,_ossl_old_des_key_schedule schedule);
    396 void _ossl_old_des_string_to_key(char *str,_ossl_old_des_cblock *key);
    397 void _ossl_old_des_string_to_2keys(char *str,_ossl_old_des_cblock *key1,_ossl_old_des_cblock *key2);
    398 void _ossl_old_des_cfb64_encrypt(unsigned char *in, unsigned char *out, long length,
    399 	_ossl_old_des_key_schedule schedule, _ossl_old_des_cblock *ivec, int *num, int enc);
    400 void _ossl_old_des_ofb64_encrypt(unsigned char *in, unsigned char *out, long length,
    401 	_ossl_old_des_key_schedule schedule, _ossl_old_des_cblock *ivec, int *num);
    402 
    403 void _ossl_096_des_random_seed(des_cblock *key);
    404 
    405 /* The following definitions provide compatibility with the MIT Kerberos
    406  * library. The _ossl_old_des_key_schedule structure is not binary compatible. */
    407 
    408 #define _KERBEROS_DES_H
    409 
    410 #define KRBDES_ENCRYPT DES_ENCRYPT
    411 #define KRBDES_DECRYPT DES_DECRYPT
    412 
    413 #ifdef KERBEROS
    414 #  define ENCRYPT DES_ENCRYPT
    415 #  define DECRYPT DES_DECRYPT
    416 #endif
    417 
    418 #ifndef NCOMPAT
    419 #  define C_Block des_cblock
    420 #  define Key_schedule des_key_schedule
    421 #  define KEY_SZ DES_KEY_SZ
    422 #  define string_to_key des_string_to_key
    423 #  define read_pw_string des_read_pw_string
    424 #  define random_key des_random_key
    425 #  define pcbc_encrypt des_pcbc_encrypt
    426 #  define set_key des_set_key
    427 #  define key_sched des_key_sched
    428 #  define ecb_encrypt des_ecb_encrypt
    429 #  define cbc_encrypt des_cbc_encrypt
    430 #  define ncbc_encrypt des_ncbc_encrypt
    431 #  define xcbc_encrypt des_xcbc_encrypt
    432 #  define cbc_cksum des_cbc_cksum
    433 #  define quad_cksum des_quad_cksum
    434 #  define check_parity des_check_key_parity
    435 #endif
    436 
    437 #define des_fixup_key_parity DES_fixup_key_parity
    438 
    439 #ifdef  __cplusplus
    440 }
    441 #endif
    442 
    443 /* for DES_read_pw_string et al */
    444 #include <openssl/ui_compat.h>
    445 
    446 #endif
    447