des_old.h revision 109998
10Sduke/* crypto/des/des_old.h -*- mode:C; c-file-style: "eay" -*- */ 211079Srbackman 30Sduke/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 40Sduke * 50Sduke * The function names in here are deprecated and are only present to 60Sduke * provide an interface compatible with openssl 0.9.6 and older as 70Sduke * well as libdes. OpenSSL now provides functions where "des_" has 80Sduke * been replaced with "DES_" in the names, to make it possible to 90Sduke * make incompatible changes that are needed for C type security and 100Sduke * other stuff. 110Sduke * 120Sduke * This include files has two compatibility modes: 130Sduke * 140Sduke * - If OPENSSL_DES_LIBDES_COMPATIBILITY is defined, you get an API 150Sduke * that is compatible with libdes and SSLeay. 160Sduke * - If OPENSSL_DES_LIBDES_COMPATIBILITY isn't defined, you get an 170Sduke * API that is compatible with OpenSSL 0.9.5x to 0.9.6x. 180Sduke * 191472Strims * Note that these modes break earlier snapshots of OpenSSL, where 201472Strims * libdes compatibility was the only available mode or (later on) the 211472Strims * prefered compatibility mode. However, after much consideration 220Sduke * (and more or less violent discussions with external parties), it 230Sduke * was concluded that OpenSSL should be compatible with earlier versions 240Sduke * of itself before anything else. Also, in all honesty, libdes is 250Sduke * an old beast that shouldn't really be used any more. 260Sduke * 270Sduke * Please consider starting to use the DES_ functions rather than the 280Sduke * des_ ones. The des_ functions will disappear completely before 290Sduke * OpenSSL 1.0! 300Sduke * 310Sduke * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 320Sduke */ 330Sduke 340Sduke/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL 350Sduke * project 2001. 360Sduke */ 370Sduke/* ==================================================================== 380Sduke * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. 390Sduke * 400Sduke * Redistribution and use in source and binary forms, with or without 411879Sstefank * modification, are permitted provided that the following conditions 421879Sstefank * are met: 431879Sstefank * 448413Spliden * 1. Redistributions of source code must retain the above copyright 451879Sstefank * notice, this list of conditions and the following disclaimer. 461879Sstefank * 471879Sstefank * 2. Redistributions in binary form must reproduce the above copyright 488276Scoleenp * notice, this list of conditions and the following disclaimer in 493602Scoleenp * the documentation and/or other materials provided with the 501879Sstefank * distribution. 513602Scoleenp * 521879Sstefank * 3. All advertising materials mentioning features or use of this 532062Scoleenp * software must display the following acknowledgment: 541879Sstefank * "This product includes software developed by the OpenSSL Project 551879Sstefank * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 561879Sstefank * 570Sduke * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 584507Sdrchase * endorse or promote products derived from this software without 590Sduke * prior written permission. For written permission, please contact 600Sduke * openssl-core@openssl.org. 610Sduke * 620Sduke * 5. Products derived from this software may not be called "OpenSSL" 630Sduke * nor may "OpenSSL" appear in their names without prior written 640Sduke * permission of the OpenSSL Project. 654507Sdrchase * 660Sduke * 6. Redistributions of any form whatsoever must retain the following 670Sduke * acknowledgment: 680Sduke * "This product includes software developed by the OpenSSL Project 690Sduke * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 700Sduke * 710Sduke * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 720Sduke * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 730Sduke * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 740Sduke * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 750Sduke * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 760Sduke * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 770Sduke * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 780Sduke * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 790Sduke * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 800Sduke * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 810Sduke * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 824507Sdrchase * OF THE POSSIBILITY OF SUCH DAMAGE. 830Sduke * ==================================================================== 840Sduke * 857081Sthartmann * This product includes cryptographic software written by Eric Young 860Sduke * (eay@cryptsoft.com). This product includes software written by Tim 870Sduke * Hudson (tjh@cryptsoft.com). 888818Ssspitsyn * 897081Sthartmann */ 900Sduke 910Sduke#ifndef HEADER_DES_H 920Sduke#define HEADER_DES_H 937081Sthartmann 940Sduke#ifdef OPENSSL_NO_DES 950Sduke#error DES is disabled. 967081Sthartmann#endif 970Sduke 980Sduke#ifndef HEADER_NEW_DES_H 990Sduke#error You must include des.h, not des_old.h directly. 1007081Sthartmann#endif 1017081Sthartmann 1027081Sthartmann#ifdef _KERBEROS_DES_H 1030Sduke#error <openssl/des_old.h> replaces <kerberos/des.h>. 1040Sduke#endif 1050Sduke 1068818Ssspitsyn#include <openssl/opensslconf.h> /* DES_LONG */ 1070Sduke#include <openssl/e_os2.h> /* OPENSSL_EXTERN */ 1080Sduke#include <openssl/symhacks.h> 1090Sduke 1100Sduke#ifdef OPENSSL_BUILD_SHLIBCRYPTO 1110Sduke# undef OPENSSL_EXTERN 1120Sduke# define OPENSSL_EXTERN OPENSSL_EXPORT 1130Sduke#endif 1140Sduke 1150Sduke#ifdef __cplusplus 1160Sdukeextern "C" { 1170Sduke#endif 1180Sduke 1190Sduketypedef unsigned char _ossl_old_des_cblock[8]; 1200Sduketypedef struct _ossl_old_des_ks_struct 1210Sduke { 1220Sduke union { 1230Sduke _ossl_old_des_cblock _; 1240Sduke /* make sure things are correct size on machines with 1250Sduke * 8 byte longs */ 1260Sduke DES_LONG pad[2]; 1270Sduke } ks; 1280Sduke } _ossl_old_des_key_schedule[16]; 1290Sduke 1300Sduke#ifndef OPENSSL_DES_LIBDES_COMPATIBILITY 1310Sduke#define des_cblock DES_cblock 1328819Ssspitsyn#define const_des_cblock const_DES_cblock 1330Sduke#define des_key_schedule DES_key_schedule 1340Sduke#define des_ecb3_encrypt(i,o,k1,k2,k3,e)\ 1350Sduke DES_ecb3_encrypt((i),(o),&(k1),&(k2),&(k3),(e)) 1360Sduke#define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\ 1370Sduke DES_ede3_cbc_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(e)) 1380Sduke#define des_ede3_cbcm_encrypt(i,o,l,k1,k2,k3,iv1,iv2,e)\ 1390Sduke DES_ede3_cbcm_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv1),(iv2),(e)) 1400Sduke#define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\ 1410Sduke DES_ede3_cfb64_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(n),(e)) 1420Sduke#define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\ 1430Sduke DES_ede3_ofb64_encrypt((i),(o),(l),&(k1),&(k2),&(k3),(iv),(n)) 1440Sduke#define des_options()\ 1450Sduke DES_options() 1460Sduke#define des_cbc_cksum(i,o,l,k,iv)\ 1470Sduke DES_cbc_cksum((i),(o),(l),&(k),(iv)) 1480Sduke#define des_cbc_encrypt(i,o,l,k,iv,e)\ 1490Sduke DES_cbc_encrypt((i),(o),(l),&(k),(iv),(e)) 1500Sduke#define des_ncbc_encrypt(i,o,l,k,iv,e)\ 1510Sduke DES_ncbc_encrypt((i),(o),(l),&(k),(iv),(e)) 1520Sduke#define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\ 1530Sduke DES_xcbc_encrypt((i),(o),(l),&(k),(iv),(inw),(outw),(e)) 1540Sduke#define des_cfb_encrypt(i,o,n,l,k,iv,e)\ 1550Sduke DES_cfb_encrypt((i),(o),(n),(l),&(k),(iv),(e)) 1560Sduke#define des_ecb_encrypt(i,o,k,e)\ 1570Sduke DES_ecb_encrypt((i),(o),&(k),(e)) 1580Sduke#define des_encrypt1(d,k,e)\ 1590Sduke DES_encrypt1((d),&(k),(e)) 1600Sduke#define des_encrypt2(d,k,e)\ 1610Sduke DES_encrypt2((d),&(k),(e)) 1620Sduke#define des_encrypt3(d,k1,k2,k3)\ 1630Sduke DES_encrypt3((d),&(k1),&(k2),&(k3)) 1640Sduke#define des_decrypt3(d,k1,k2,k3)\ 1650Sduke DES_decrypt3((d),&(k1),&(k2),&(k3)) 1660Sduke#define des_xwhite_in2out(k,i,o)\ 1670Sduke DES_xwhite_in2out((k),(i),(o)) 1680Sduke#define des_enc_read(f,b,l,k,iv)\ 1690Sduke DES_enc_read((f),(b),(l),&(k),(iv)) 1700Sduke#define des_enc_write(f,b,l,k,iv)\ 1710Sduke DES_enc_write((f),(b),(l),&(k),(iv)) 1720Sduke#define des_fcrypt(b,s,r)\ 1730Sduke DES_fcrypt((b),(s),(r)) 1740Sduke#define des_crypt(b,s)\ 1750Sduke DES_crypt((b),(s)) 1760Sduke#if 0 1770Sduke#if !defined(PERL5) && !defined(__FreeBSD__) && !defined(NeXT) && !defined(__OpenBSD__) 1780Sduke#define crypt(b,s)\ 1790Sduke DES_crypt((b),(s)) 1800Sduke#endif 1810Sduke#endif 1820Sduke#define des_ofb_encrypt(i,o,n,l,k,iv)\ 1830Sduke DES_ofb_encrypt((i),(o),(n),(l),&(k),(iv)) 1840Sduke#define des_pcbc_encrypt(i,o,l,k,iv,e)\ 1850Sduke DES_pcbc_encrypt((i),(o),(l),&(k),(iv),(e)) 1860Sduke#define des_quad_cksum(i,o,l,c,s)\ 1870Sduke DES_quad_cksum((i),(o),(l),(c),(s)) 1880Sduke#define des_random_seed(k)\ 1890Sduke _ossl_096_des_random_seed((k)) 1900Sduke#define des_random_key(r)\ 1910Sduke DES_random_key((r)) 1920Sduke#define des_read_password(k,p,v) \ 1930Sduke DES_read_password((k),(p),(v)) 1940Sduke#define des_read_2passwords(k1,k2,p,v) \ 1950Sduke DES_read_2passwords((k1),(k2),(p),(v)) 1960Sduke#define des_set_odd_parity(k)\ 1970Sduke DES_set_odd_parity((k)) 1980Sduke#define des_check_key_parity(k)\ 1990Sduke DES_check_key_parity((k)) 2000Sduke#define des_is_weak_key(k)\ 2010Sduke DES_is_weak_key((k)) 2020Sduke#define des_set_key(k,ks)\ 2036759Scoleenp DES_set_key((k),&(ks)) 2040Sduke#define des_key_sched(k,ks)\ 2050Sduke DES_key_sched((k),&(ks)) 2060Sduke#define des_set_key_checked(k,ks)\ 2076759Scoleenp DES_set_key_checked((k),&(ks)) 2080Sduke#define des_set_key_unchecked(k,ks)\ 2090Sduke DES_set_key_unchecked((k),&(ks)) 2100Sduke#define des_string_to_key(s,k)\ 2113602Scoleenp DES_string_to_key((s),(k)) 2120Sduke#define des_string_to_2keys(s,k1,k2)\ 2130Sduke DES_string_to_2keys((s),(k1),(k2)) 2148818Ssspitsyn#define des_cfb64_encrypt(i,o,l,ks,iv,n,e)\ 215113Scoleenp DES_cfb64_encrypt((i),(o),(l),&(ks),(iv),(n),(e)) 2160Sduke#define des_ofb64_encrypt(i,o,l,ks,iv,n)\ 2170Sduke DES_ofb64_encrypt((i),(o),(l),&(ks),(iv),(n)) 2180Sduke 2193602Scoleenp 2200Sduke#define des_ecb2_encrypt(i,o,k1,k2,e) \ 2212062Scoleenp des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) 2222062Scoleenp 2230Sduke#define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ 2240Sduke des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) 2253602Scoleenp 2263602Scoleenp#define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ 2270Sduke des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) 2280Sduke 2293602Scoleenp#define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ 2303602Scoleenp des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) 2313602Scoleenp 2323602Scoleenp#define des_check_key DES_check_key 2333602Scoleenp#define des_rw_mode DES_rw_mode 2340Sduke#else /* libdes compatibility */ 2350Sduke/* Map all symbol names to _ossl_old_des_* form, so we avoid all 2360Sduke clashes with libdes */ 2370Sduke#define des_cblock _ossl_old_des_cblock 2380Sduke#define des_key_schedule _ossl_old_des_key_schedule 2390Sduke#define des_ecb3_encrypt(i,o,k1,k2,k3,e)\ 2400Sduke _ossl_old_des_ecb3_encrypt((i),(o),(k1),(k2),(k3),(e)) 2410Sduke#define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\ 2420Sduke _ossl_old_des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(e)) 2430Sduke#define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\ 2440Sduke _ossl_old_des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n),(e)) 2450Sduke#define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\ 2460Sduke _ossl_old_des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n)) 2477081Sthartmann#define des_options()\ 2487081Sthartmann _ossl_old_des_options() 2497081Sthartmann#define des_cbc_cksum(i,o,l,k,iv)\ 2507081Sthartmann _ossl_old_des_cbc_cksum((i),(o),(l),(k),(iv)) 2517081Sthartmann#define des_cbc_encrypt(i,o,l,k,iv,e)\ 2520Sduke _ossl_old_des_cbc_encrypt((i),(o),(l),(k),(iv),(e)) 2530Sduke#define des_ncbc_encrypt(i,o,l,k,iv,e)\ 25411079Srbackman _ossl_old_des_ncbc_encrypt((i),(o),(l),(k),(iv),(e)) 25511079Srbackman#define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\ 25611079Srbackman _ossl_old_des_xcbc_encrypt((i),(o),(l),(k),(iv),(inw),(outw),(e)) 2570Sduke#define des_cfb_encrypt(i,o,n,l,k,iv,e)\ 2580Sduke _ossl_old_des_cfb_encrypt((i),(o),(n),(l),(k),(iv),(e)) 2590Sduke#define des_ecb_encrypt(i,o,k,e)\ 2600Sduke _ossl_old_des_ecb_encrypt((i),(o),(k),(e)) 2610Sduke#define des_encrypt(d,k,e)\ 2627053Sdsamersoff _ossl_old_des_encrypt((d),(k),(e)) 2633602Scoleenp#define des_encrypt2(d,k,e)\ 26411079Srbackman _ossl_old_des_encrypt2((d),(k),(e)) 2650Sduke#define des_encrypt3(d,k1,k2,k3)\ 2660Sduke _ossl_old_des_encrypt3((d),(k1),(k2),(k3)) 26711079Srbackman#define des_decrypt3(d,k1,k2,k3)\ 2680Sduke _ossl_old_des_decrypt3((d),(k1),(k2),(k3)) 2690Sduke#define des_xwhite_in2out(k,i,o)\ 2700Sduke _ossl_old_des_xwhite_in2out((k),(i),(o)) 2710Sduke#define des_enc_read(f,b,l,k,iv)\ 2720Sduke _ossl_old_des_enc_read((f),(b),(l),(k),(iv)) 2730Sduke#define des_enc_write(f,b,l,k,iv)\ 2740Sduke _ossl_old_des_enc_write((f),(b),(l),(k),(iv)) 2753724Sroland#define des_fcrypt(b,s,r)\ 2763724Sroland _ossl_old_des_fcrypt((b),(s),(r)) 277642Skvn#define des_crypt(b,s)\ 278642Skvn _ossl_old_des_crypt((b),(s)) 2798818Ssspitsyn#if 0 2800Sduke#define crypt(b,s)\ 2813602Scoleenp _ossl_old_crypt((b),(s)) 2820Sduke#endif 2830Sduke#define des_ofb_encrypt(i,o,n,l,k,iv)\ 2840Sduke _ossl_old_des_ofb_encrypt((i),(o),(n),(l),(k),(iv)) 2853602Scoleenp#define des_pcbc_encrypt(i,o,l,k,iv,e)\ 2863602Scoleenp _ossl_old_des_pcbc_encrypt((i),(o),(l),(k),(iv),(e)) 2870Sduke#define des_quad_cksum(i,o,l,c,s)\ 2880Sduke _ossl_old_des_quad_cksum((i),(o),(l),(c),(s)) 2890Sduke#define des_random_seed(k)\ 2900Sduke _ossl_old_des_random_seed((k)) 2910Sduke#define des_random_key(r)\ 2920Sduke _ossl_old_des_random_key((r)) 2930Sduke#define des_read_password(k,p,v) \ 2940Sduke _ossl_old_des_read_password((k),(p),(v)) 2950Sduke#define des_read_2passwords(k1,k2,p,v) \ 2960Sduke _ossl_old_des_read_2passwords((k1),(k2),(p),(v)) 2970Sduke#define des_set_odd_parity(k)\ 2980Sduke _ossl_old_des_set_odd_parity((k)) 2990Sduke#define des_is_weak_key(k)\ 300 _ossl_old_des_is_weak_key((k)) 301#define des_set_key(k,ks)\ 302 _ossl_old_des_set_key((k),(ks)) 303#define des_key_sched(k,ks)\ 304 _ossl_old_des_key_sched((k),(ks)) 305#define des_string_to_key(s,k)\ 306 _ossl_old_des_string_to_key((s),(k)) 307#define des_string_to_2keys(s,k1,k2)\ 308 _ossl_old_des_string_to_2keys((s),(k1),(k2)) 309#define des_cfb64_encrypt(i,o,l,ks,iv,n,e)\ 310 _ossl_old_des_cfb64_encrypt((i),(o),(l),(ks),(iv),(n),(e)) 311#define des_ofb64_encrypt(i,o,l,ks,iv,n)\ 312 _ossl_old_des_ofb64_encrypt((i),(o),(l),(ks),(iv),(n)) 313 314 315#define des_ecb2_encrypt(i,o,k1,k2,e) \ 316 des_ecb3_encrypt((i),(o),(k1),(k2),(k1),(e)) 317 318#define des_ede2_cbc_encrypt(i,o,l,k1,k2,iv,e) \ 319 des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(e)) 320 321#define des_ede2_cfb64_encrypt(i,o,l,k1,k2,iv,n,e) \ 322 des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n),(e)) 323 324#define des_ede2_ofb64_encrypt(i,o,l,k1,k2,iv,n) \ 325 des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k1),(iv),(n)) 326 327#define des_check_key DES_check_key 328#define des_rw_mode DES_rw_mode 329#endif 330 331const char *_ossl_old_des_options(void); 332void _ossl_old_des_ecb3_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output, 333 _ossl_old_des_key_schedule ks1,_ossl_old_des_key_schedule ks2, 334 _ossl_old_des_key_schedule ks3, int enc); 335DES_LONG _ossl_old_des_cbc_cksum(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output, 336 long length,_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec); 337void _ossl_old_des_cbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length, 338 _ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc); 339void _ossl_old_des_ncbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length, 340 _ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc); 341void _ossl_old_des_xcbc_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, 343 _ossl_old_des_cblock *inw,_ossl_old_des_cblock *outw,int enc); 344void _ossl_old_des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits, 345 long length,_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc); 346void _ossl_old_des_ecb_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output, 347 _ossl_old_des_key_schedule ks,int enc); 348void _ossl_old_des_encrypt(DES_LONG *data,_ossl_old_des_key_schedule ks, int enc); 349void _ossl_old_des_encrypt2(DES_LONG *data,_ossl_old_des_key_schedule ks, int enc); 350void _ossl_old_des_encrypt3(DES_LONG *data, _ossl_old_des_key_schedule ks1, 351 _ossl_old_des_key_schedule ks2, _ossl_old_des_key_schedule ks3); 352void _ossl_old_des_decrypt3(DES_LONG *data, _ossl_old_des_key_schedule ks1, 353 _ossl_old_des_key_schedule ks2, _ossl_old_des_key_schedule ks3); 354void _ossl_old_des_ede3_cbc_encrypt(_ossl_old_des_cblock *input, _ossl_old_des_cblock *output, 355 long length, _ossl_old_des_key_schedule ks1, _ossl_old_des_key_schedule ks2, 356 _ossl_old_des_key_schedule ks3, _ossl_old_des_cblock *ivec, int enc); 357void _ossl_old_des_ede3_cfb64_encrypt(unsigned char *in, unsigned char *out, 358 long length, _ossl_old_des_key_schedule ks1, _ossl_old_des_key_schedule ks2, 359 _ossl_old_des_key_schedule ks3, _ossl_old_des_cblock *ivec, int *num, int enc); 360void _ossl_old_des_ede3_ofb64_encrypt(unsigned char *in, unsigned char *out, 361 long length, _ossl_old_des_key_schedule ks1, _ossl_old_des_key_schedule ks2, 362 _ossl_old_des_key_schedule ks3, _ossl_old_des_cblock *ivec, int *num); 363 364void _ossl_old_des_xwhite_in2out(_ossl_old_des_cblock (*des_key), _ossl_old_des_cblock (*in_white), 365 _ossl_old_des_cblock (*out_white)); 366 367int _ossl_old_des_enc_read(int fd,char *buf,int len,_ossl_old_des_key_schedule sched, 368 _ossl_old_des_cblock *iv); 369int _ossl_old_des_enc_write(int fd,char *buf,int len,_ossl_old_des_key_schedule sched, 370 _ossl_old_des_cblock *iv); 371char *_ossl_old_des_fcrypt(const char *buf,const char *salt, char *ret); 372char *_ossl_old_des_crypt(const char *buf,const char *salt); 373#if !defined(PERL5) && !defined(NeXT) 374char *_ossl_old_crypt(const char *buf,const char *salt); 375#endif 376void _ossl_old_des_ofb_encrypt(unsigned char *in,unsigned char *out, 377 int numbits,long length,_ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec); 378void _ossl_old_des_pcbc_encrypt(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output,long length, 379 _ossl_old_des_key_schedule schedule,_ossl_old_des_cblock *ivec,int enc); 380DES_LONG _ossl_old_des_quad_cksum(_ossl_old_des_cblock *input,_ossl_old_des_cblock *output, 381 long length,int out_count,_ossl_old_des_cblock *seed); 382void _ossl_old_des_random_seed(_ossl_old_des_cblock key); 383void _ossl_old_des_random_key(_ossl_old_des_cblock ret); 384int _ossl_old_des_read_password(_ossl_old_des_cblock *key,const char *prompt,int verify); 385int _ossl_old_des_read_2passwords(_ossl_old_des_cblock *key1,_ossl_old_des_cblock *key2, 386 const char *prompt,int verify); 387void _ossl_old_des_set_odd_parity(_ossl_old_des_cblock *key); 388int _ossl_old_des_is_weak_key(_ossl_old_des_cblock *key); 389int _ossl_old_des_set_key(_ossl_old_des_cblock *key,_ossl_old_des_key_schedule schedule); 390int _ossl_old_des_key_sched(_ossl_old_des_cblock *key,_ossl_old_des_key_schedule schedule); 391void _ossl_old_des_string_to_key(char *str,_ossl_old_des_cblock *key); 392void _ossl_old_des_string_to_2keys(char *str,_ossl_old_des_cblock *key1,_ossl_old_des_cblock *key2); 393void _ossl_old_des_cfb64_encrypt(unsigned char *in, unsigned char *out, long length, 394 _ossl_old_des_key_schedule schedule, _ossl_old_des_cblock *ivec, int *num, int enc); 395void _ossl_old_des_ofb64_encrypt(unsigned char *in, unsigned char *out, long length, 396 _ossl_old_des_key_schedule schedule, _ossl_old_des_cblock *ivec, int *num); 397 398void _ossl_096_des_random_seed(des_cblock *key); 399 400/* The following definitions provide compatibility with the MIT Kerberos 401 * library. The _ossl_old_des_key_schedule structure is not binary compatible. */ 402 403#define _KERBEROS_DES_H 404 405#define KRBDES_ENCRYPT DES_ENCRYPT 406#define KRBDES_DECRYPT DES_DECRYPT 407 408#ifdef KERBEROS 409# define ENCRYPT DES_ENCRYPT 410# define DECRYPT DES_DECRYPT 411#endif 412 413#ifndef NCOMPAT 414# define C_Block des_cblock 415# define Key_schedule des_key_schedule 416# define KEY_SZ DES_KEY_SZ 417# define string_to_key des_string_to_key 418# define read_pw_string des_read_pw_string 419# define random_key des_random_key 420# define pcbc_encrypt des_pcbc_encrypt 421# define set_key des_set_key 422# define key_sched des_key_sched 423# define ecb_encrypt des_ecb_encrypt 424# define cbc_encrypt des_cbc_encrypt 425# define ncbc_encrypt des_ncbc_encrypt 426# define xcbc_encrypt des_xcbc_encrypt 427# define cbc_cksum des_cbc_cksum 428# define quad_cksum des_quad_cksum 429# define check_parity des_check_key_parity 430#endif 431 432#define des_fixup_key_parity DES_fixup_key_parity 433 434#ifdef __cplusplus 435} 436#endif 437 438/* for DES_read_pw_string et al */ 439#include <openssl/ui_compat.h> 440 441#endif 442