Commit 2e63f3b7 authored by Richard Levitte's avatar Richard Levitte
Browse files

Merge in DES changed from 0.9.7-stable.

parent 125cc35b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@
 *
 */

#define OPENSSL_DES_LIBDES_COMPATIBILITY
#include <openssl/des_old.h>
#include <openssl/des.h>
#include <openssl/rand.h>
+30 −13
Original line number Diff line number Diff line
@@ -3,13 +3,29 @@
/* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
 *
 * The function names in here are deprecated and are only present to
 * provide an interface compatible with libdes.  OpenSSL now provides
 * functions where "des_" has been replaced with "DES_" in the names,
 * to make it possible to make incompatible changes that are needed
 * for C type security and other stuff.
 * provide an interface compatible with openssl 0.9.6 and older as
 * well as libdes.  OpenSSL now provides functions where "des_" has
 * been replaced with "DES_" in the names, to make it possible to
 * make incompatible changes that are needed for C type security and
 * other stuff.
 *
 * This include files has two compatibility modes:
 *
 *   - If OPENSSL_DES_LIBDES_COMPATIBILITY is defined, you get an API
 *     that is compatible with libdes and SSLeay.
 *   - If OPENSSL_DES_LIBDES_COMPATIBILITY isn't defined, you get an
 *     API that is compatible with OpenSSL 0.9.5x to 0.9.6x.
 *
 * Note that these modes break earlier snapshots of OpenSSL, where
 * libdes compatibility was the only available mode or (later on) the
 * prefered compatibility mode.  However, after much consideration
 * (and more or less violent discussions with external parties), it
 * was concluded that OpenSSL should be compatible with earlier versions
 * of itself before anything else.  Also, in all honesty, libdes is
 * an old beast that shouldn't really be used any more.
 *
 * Please consider starting to use the DES_ functions rather than the
 * des_ ones.  The des_ functions will dissapear completely before
 * des_ ones.  The des_ functions will disappear completely before
 * OpenSSL 1.0!
 *
 * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
@@ -19,7 +35,7 @@
 * project 2001.
 */
/* ====================================================================
 * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
 * Copyright (c) 1998-2002 The OpenSSL Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
@@ -107,15 +123,16 @@ typedef struct _ossl_old_des_ks_struct
		} ks;
	} _ossl_old_des_key_schedule[16];

#ifdef OPENSSL_DES_PRE_0_9_7_COMPATIBILITY
#ifndef OPENSSL_DES_LIBDES_COMPATIBILITY
#define des_cblock DES_cblock
#define const_des_cblock const_DES_cblock
#define des_key_schedule DES_key_schedule
#define des_ecb3_encrypt(i,o,k1,k2,k3,e)\
	DES_ecb3_encrypt((i),(o),(k1),(k2),(k3),(e))
#define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\
	DES_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(e))
#define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\
	DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(e))
	DES_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n),(e))
#define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\
	DES_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n))
#define des_options()\
@@ -128,8 +145,8 @@ typedef struct _ossl_old_des_ks_struct
	DES_ncbc_encrypt((i),(o),(l),(k),(iv),(e))
#define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\
	DES_xcbc_encrypt((i),(o),(l),(k),(iv),(inw),(outw),(e))
#define des_cfb_encrypt(i,o,l,k,iv,e)\
	DES_cfb_encrypt((i),(o),(l),(k),(iv),(e))
#define des_cfb_encrypt(i,o,n,l,k,iv,e)\
	DES_cfb_encrypt((i),(o),(n),(l),(k),(iv),(e))
#define des_ecb_encrypt(i,o,k,e)\
	DES_ecb_encrypt((i),(o),(k),(e))
#define des_encrypt(d,k,e)\
@@ -206,7 +223,7 @@ typedef struct _ossl_old_des_ks_struct
#define des_ede3_cbc_encrypt(i,o,l,k1,k2,k3,iv,e)\
	_ossl_old_des_ede3_cbc_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(e))
#define des_ede3_cfb64_encrypt(i,o,l,k1,k2,k3,iv,n,e)\
	_ossl_old_des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(e))
	_ossl_old_des_ede3_cfb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n),(e))
#define des_ede3_ofb64_encrypt(i,o,l,k1,k2,k3,iv,n)\
	_ossl_old_des_ede3_ofb64_encrypt((i),(o),(l),(k1),(k2),(k3),(iv),(n))
#define des_options()\
@@ -219,8 +236,8 @@ typedef struct _ossl_old_des_ks_struct
	_ossl_old_des_ncbc_encrypt((i),(o),(l),(k),(iv),(e))
#define des_xcbc_encrypt(i,o,l,k,iv,inw,outw,e)\
	_ossl_old_des_xcbc_encrypt((i),(o),(l),(k),(iv),(inw),(outw),(e))
#define des_cfb_encrypt(i,o,l,k,iv,e)\
	_ossl_old_des_cfb_encrypt((i),(o),(l),(k),(iv),(e))
#define des_cfb_encrypt(i,o,n,l,k,iv,e)\
	_ossl_old_des_cfb_encrypt((i),(o),(n),(l),(k),(iv),(e))
#define des_ecb_encrypt(i,o,k,e)\
	_ossl_old_des_ecb_encrypt((i),(o),(k),(e))
#define des_encrypt(d,k,e)\
+48 −51
Original line number Diff line number Diff line
@@ -83,11 +83,8 @@ int main(int argc, char *argv[])
}
#else
#include <openssl/des.h>
#include <openssl/des_old.h>

#if defined(PERL5) || defined(__FreeBSD__)
#define crypt(c,s) (DES_crypt((c),(s)))
#endif
#define crypt(c,s) (des_crypt((c),(s)))

/* tisk tisk - the test keys don't all have odd parity :-( */
/* test data */
@@ -333,8 +330,8 @@ static int ede_cfb64_test(unsigned char *cfb_cipher);
int main(int argc, char *argv[])
	{
	int i,j,err=0;
	DES_cblock in,out,outin,iv3,iv2;
	DES_key_schedule ks,ks2,ks3;
	des_cblock in,out,outin,iv3,iv2;
	des_key_schedule ks,ks2,ks3;
	unsigned char cbc_in[40];
	unsigned char cbc_out[40];
	DES_LONG cs;
@@ -381,7 +378,7 @@ int main(int argc, char *argv[])
	/*	if (memcmp(cbc_out,cbc3_ok,
		(unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
		{
		printf("DES_ede3_cbc_encrypt encrypt error\n");
		printf("des_ede3_cbc_encrypt encrypt error\n");
		err=1;
		}
	*/
@@ -392,7 +389,7 @@ int main(int argc, char *argv[])
		{
		int n;

		printf("DES_ede3_cbcm_encrypt decrypt error\n");
		printf("des_ede3_cbcm_encrypt decrypt error\n");
		for(n=0 ; n < i ; ++n)
		    printf(" %02x",cbc_data[n]);
		printf("\n");
@@ -410,8 +407,8 @@ int main(int argc, char *argv[])
		memcpy(in,plain_data[i],8);
		memset(out,0,8);
		memset(outin,0,8);
		DES_ecb_encrypt(&in,&out,&ks,DES_ENCRYPT);
		DES_ecb_encrypt(&out,&outin,&ks,DES_DECRYPT);
		des_ecb_encrypt(&in,&out,&ks,DES_ENCRYPT);
		des_ecb_encrypt(&out,&outin,&ks,DES_DECRYPT);

		if (memcmp(out,cipher_data[i],8) != 0)
			{
@@ -438,8 +435,8 @@ int main(int argc, char *argv[])
		memcpy(in,plain_data[i],8);
		memset(out,0,8);
		memset(outin,0,8);
		DES_ecb2_encrypt(&in,&out,&ks,&ks2,DES_ENCRYPT);
		DES_ecb2_encrypt(&out,&outin,&ks,&ks2,DES_DECRYPT);
		des_ecb2_encrypt(&in,&out,&ks,&ks2,DES_ENCRYPT);
		des_ecb2_encrypt(&out,&outin,&ks,&ks2,DES_DECRYPT);

		if (memcmp(out,cipher_ecb2[i],8) != 0)
			{
@@ -466,7 +463,7 @@ int main(int argc, char *argv[])
	memset(cbc_out,0,40);
	memset(cbc_in,0,40);
	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
	DES_ncbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,&ks,
	des_ncbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,&ks,
			 &iv3,DES_ENCRYPT);
	if (memcmp(cbc_out,cbc_ok,32) != 0)
		{
@@ -475,7 +472,7 @@ int main(int argc, char *argv[])
		}

	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
	DES_ncbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,&ks,
	des_ncbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,&ks,
			 &iv3,DES_DECRYPT);
	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)) != 0)
		{
@@ -493,19 +490,19 @@ int main(int argc, char *argv[])
	memset(cbc_out,0,40);
	memset(cbc_in,0,40);
	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
	DES_xcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,&ks,
	des_xcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,&ks,
			 &iv3,&cbc2_key,&cbc3_key, DES_ENCRYPT);
	if (memcmp(cbc_out,xcbc_ok,32) != 0)
		{
		printf("DES_xcbc_encrypt encrypt error\n");
		printf("des_xcbc_encrypt encrypt error\n");
		err=1;
		}
	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
	DES_xcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,&ks,
	des_xcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,&ks,
			 &iv3,&cbc2_key,&cbc3_key, DES_DECRYPT);
	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
		{
		printf("DES_xcbc_encrypt decrypt error\n");
		printf("des_xcbc_encrypt decrypt error\n");
		err=1;
		}
#endif
@@ -532,16 +529,16 @@ int main(int argc, char *argv[])
	/* i=((i+7)/8)*8; */
	memcpy(iv3,cbc_iv,sizeof(cbc_iv));

	DES_ede3_cbc_encrypt(cbc_data,cbc_out,16L,&ks,&ks2,&ks3,&iv3,
	des_ede3_cbc_encrypt(cbc_data,cbc_out,16L,&ks,&ks2,&ks3,&iv3,
			     DES_ENCRYPT);
	DES_ede3_cbc_encrypt(&(cbc_data[16]),&(cbc_out[16]),i-16,&ks,&ks2,&ks3,
	des_ede3_cbc_encrypt(&(cbc_data[16]),&(cbc_out[16]),i-16,&ks,&ks2,&ks3,
			     &iv3,DES_ENCRYPT);
	if (memcmp(cbc_out,cbc3_ok,
		(unsigned int)(strlen((char *)cbc_data)+1+7)/8*8) != 0)
		{
		int n;

		printf("DES_ede3_cbc_encrypt encrypt error\n");
		printf("des_ede3_cbc_encrypt encrypt error\n");
		for(n=0 ; n < i ; ++n)
		    printf(" %02x",cbc_out[n]);
		printf("\n");
@@ -552,12 +549,12 @@ int main(int argc, char *argv[])
		}

	memcpy(iv3,cbc_iv,sizeof(cbc_iv));
	DES_ede3_cbc_encrypt(cbc_out,cbc_in,i,&ks,&ks2,&ks3,&iv3,DES_DECRYPT);
	des_ede3_cbc_encrypt(cbc_out,cbc_in,i,&ks,&ks2,&ks3,&iv3,DES_DECRYPT);
	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
		{
		int n;

		printf("DES_ede3_cbc_encrypt decrypt error\n");
		printf("des_ede3_cbc_encrypt decrypt error\n");
		for(n=0 ; n < i ; ++n)
		    printf(" %02x",cbc_data[n]);
		printf("\n");
@@ -576,14 +573,14 @@ int main(int argc, char *argv[])
		}
	memset(cbc_out,0,40);
	memset(cbc_in,0,40);
	DES_pcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,&ks,
	des_pcbc_encrypt(cbc_data,cbc_out,strlen((char *)cbc_data)+1,&ks,
			 &cbc_iv,DES_ENCRYPT);
	if (memcmp(cbc_out,pcbc_ok,32) != 0)
		{
		printf("pcbc_encrypt encrypt error\n");
		err=1;
		}
	DES_pcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,&ks,&cbc_iv,
	des_pcbc_encrypt(cbc_out,cbc_in,strlen((char *)cbc_data)+1,&ks,&cbc_iv,
			 DES_DECRYPT);
	if (memcmp(cbc_in,cbc_data,strlen((char *)cbc_data)+1) != 0)
		{
@@ -608,7 +605,7 @@ int main(int argc, char *argv[])

	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	for (i=0; i<sizeof(plain); i++)
		DES_cfb_encrypt(&(plain[i]),&(cfb_buf1[i]),
		des_cfb_encrypt(&(plain[i]),&(cfb_buf1[i]),
			8,1,&ks,&cfb_tmp,DES_ENCRYPT);
	if (memcmp(cfb_cipher8,cfb_buf1,sizeof(plain)) != 0)
		{
@@ -618,7 +615,7 @@ int main(int argc, char *argv[])

	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	for (i=0; i<sizeof(plain); i++)
		DES_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
		des_cfb_encrypt(&(cfb_buf1[i]),&(cfb_buf2[i]),
			8,1,&ks,&cfb_tmp,DES_DECRYPT);
	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
		{
@@ -634,7 +631,7 @@ int main(int argc, char *argv[])
	printf("Doing ofb\n");
	DES_set_key_checked(&ofb_key,&ks);
	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
	DES_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,&ks,&ofb_tmp);
	des_ofb_encrypt(plain,ofb_buf1,64,sizeof(plain)/8,&ks,&ofb_tmp);
	if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
		{
		printf("ofb_encrypt encrypt error\n");
@@ -647,7 +644,7 @@ ofb_buf1[8+4], ofb_cipher[8+5], ofb_cipher[8+6], ofb_cipher[8+7]);
		err=1;
		}
	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
	DES_ofb_encrypt(ofb_buf1,ofb_buf2,64,sizeof(ofb_buf1)/8,&ks,&ofb_tmp);
	des_ofb_encrypt(ofb_buf1,ofb_buf2,64,sizeof(ofb_buf1)/8,&ks,&ofb_tmp);
	if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
		{
		printf("ofb_encrypt decrypt error\n");
@@ -668,7 +665,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
	num=0;
	for (i=0; i<sizeof(plain); i++)
		{
		DES_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,&ks,&ofb_tmp,
		des_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,&ks,&ofb_tmp,
				  &num);
		}
	if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
@@ -678,7 +675,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
		}
	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
	num=0;
	DES_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),&ks,&ofb_tmp,
	des_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),&ks,&ofb_tmp,
			  &num);
	if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
		{
@@ -694,7 +691,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
	num=0;
	for (i=0; i<sizeof(plain); i++)
		{
		DES_ede3_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,&ks,&ks,
		des_ede3_ofb64_encrypt(&(plain[i]),&(ofb_buf1[i]),1,&ks,&ks,
				       &ks,&ofb_tmp,&num);
		}
	if (memcmp(ofb_cipher,ofb_buf1,sizeof(ofb_buf1)) != 0)
@@ -704,7 +701,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
		}
	memcpy(ofb_tmp,ofb_iv,sizeof(ofb_iv));
	num=0;
	DES_ede3_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),&ks,&ks,&ks,
	des_ede3_ofb64_encrypt(ofb_buf1,ofb_buf2,sizeof(ofb_buf1),&ks,&ks,&ks,
			       &ofb_tmp,&num);
	if (memcmp(plain,ofb_buf2,sizeof(ofb_buf2)) != 0)
		{
@@ -714,7 +711,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);

	printf("Doing cbc_cksum\n");
	DES_set_key_checked(&cbc_key,&ks);
	cs=DES_cbc_cksum(cbc_data,&cret,strlen((char *)cbc_data),&ks,&cbc_iv);
	cs=des_cbc_cksum(cbc_data,&cret,strlen((char *)cbc_data),&ks,&cbc_iv);
	if (cs != cbc_cksum_ret)
		{
		printf("bad return value (%08lX), should be %08lX\n",
@@ -728,8 +725,8 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
		}

	printf("Doing quad_cksum\n");
	cs=DES_quad_cksum(cbc_data,(DES_cblock *)lqret,
		(long)strlen((char *)cbc_data),2,(DES_cblock *)cbc_iv);
	cs=des_quad_cksum(cbc_data,(des_cblock *)lqret,
		(long)strlen((char *)cbc_data),2,(des_cblock *)cbc_iv);
	if (cs != 0x70d7a63aL)
		{
		printf("quad_cksum error, ret %08lx should be 70d7a63a\n",
@@ -793,7 +790,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
	for (i=0; i<4; i++)
		{
		printf(" %d",i);
		DES_ncbc_encrypt(&(cbc_out[i]),cbc_in,
		des_ncbc_encrypt(&(cbc_out[i]),cbc_in,
				 strlen((char *)cbc_data)+1,&ks,
				 &cbc_iv,DES_ENCRYPT);
		}
@@ -801,7 +798,7 @@ plain[8+4], plain[8+5], plain[8+6], plain[8+7]);
	for (i=0; i<4; i++)
		{
		printf(" %d",i);
		DES_ncbc_encrypt(cbc_out,&(cbc_in[i]),
		des_ncbc_encrypt(cbc_out,&(cbc_in[i]),
				 strlen((char *)cbc_data)+1,&ks,
				 &cbc_iv,DES_ENCRYPT);
		}
@@ -846,12 +843,12 @@ static char *pt(unsigned char *p)

static int cfb_test(int bits, unsigned char *cfb_cipher)
	{
	DES_key_schedule ks;
	des_key_schedule ks;
	int i,err=0;

	DES_set_key_checked(&cfb_key,&ks);
	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	DES_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),&ks,&cfb_tmp,
	des_cfb_encrypt(plain,cfb_buf1,bits,sizeof(plain),&ks,&cfb_tmp,
			DES_ENCRYPT);
	if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
		{
@@ -861,7 +858,7 @@ static int cfb_test(int bits, unsigned char *cfb_cipher)
			printf("%s\n",pt(&(cfb_buf1[i])));
		}
	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	DES_cfb_encrypt(cfb_buf1,cfb_buf2,bits,sizeof(plain),&ks,&cfb_tmp,
	des_cfb_encrypt(cfb_buf1,cfb_buf2,bits,sizeof(plain),&ks,&cfb_tmp,
			DES_DECRYPT);
	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
		{
@@ -875,14 +872,14 @@ static int cfb_test(int bits, unsigned char *cfb_cipher)

static int cfb64_test(unsigned char *cfb_cipher)
	{
	DES_key_schedule ks;
	des_key_schedule ks;
	int err=0,i,n;

	DES_set_key_checked(&cfb_key,&ks);
	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	n=0;
	DES_cfb64_encrypt(plain,cfb_buf1,12,&ks,&cfb_tmp,&n,DES_ENCRYPT);
	DES_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),sizeof(plain)-12,&ks,
	des_cfb64_encrypt(plain,cfb_buf1,12,&ks,&cfb_tmp,&n,DES_ENCRYPT);
	des_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),sizeof(plain)-12,&ks,
			  &cfb_tmp,&n,DES_ENCRYPT);
	if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
		{
@@ -893,8 +890,8 @@ static int cfb64_test(unsigned char *cfb_cipher)
		}
	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	n=0;
	DES_cfb64_encrypt(cfb_buf1,cfb_buf2,17,&ks,&cfb_tmp,&n,DES_DECRYPT);
	DES_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
	des_cfb64_encrypt(cfb_buf1,cfb_buf2,17,&ks,&cfb_tmp,&n,DES_DECRYPT);
	des_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
			  sizeof(plain)-17,&ks,&cfb_tmp,&n,DES_DECRYPT);
	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)
		{
@@ -908,15 +905,15 @@ static int cfb64_test(unsigned char *cfb_cipher)

static int ede_cfb64_test(unsigned char *cfb_cipher)
	{
	DES_key_schedule ks;
	des_key_schedule ks;
	int err=0,i,n;

	DES_set_key_checked(&cfb_key,&ks);
	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	n=0;
	DES_ede3_cfb64_encrypt(plain,cfb_buf1,12,&ks,&ks,&ks,&cfb_tmp,&n,
	des_ede3_cfb64_encrypt(plain,cfb_buf1,12,&ks,&ks,&ks,&cfb_tmp,&n,
			       DES_ENCRYPT);
	DES_ede3_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),
	des_ede3_cfb64_encrypt(&(plain[12]),&(cfb_buf1[12]),
			       sizeof(plain)-12,&ks,&ks,&ks,
			       &cfb_tmp,&n,DES_ENCRYPT);
	if (memcmp(cfb_cipher,cfb_buf1,sizeof(plain)) != 0)
@@ -928,9 +925,9 @@ static int ede_cfb64_test(unsigned char *cfb_cipher)
		}
	memcpy(cfb_tmp,cfb_iv,sizeof(cfb_iv));
	n=0;
	DES_ede3_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,&ks,&ks,&ks,
	des_ede3_cfb64_encrypt(cfb_buf1,cfb_buf2,(long)17,&ks,&ks,&ks,
			       &cfb_tmp,&n,DES_DECRYPT);
	DES_ede3_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
	des_ede3_cfb64_encrypt(&(cfb_buf1[17]),&(cfb_buf2[17]),
			       sizeof(plain)-17,&ks,&ks,&ks,
			       &cfb_tmp,&n,DES_DECRYPT);
	if (memcmp(plain,cfb_buf2,sizeof(plain)) != 0)