From 3229fd6afed4a92e86af8da9a1b53b17c3873643 Mon Sep 17 00:00:00 2001 From: Ben Laurie Date: Thu, 18 Dec 2003 14:26:50 +0000 Subject: [PATCH] Who invented these tests? Reconstruct internal state in order to follow bizarre CFB test algorithm. --- fips/des/fips_desmovs.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/fips/des/fips_desmovs.c b/fips/des/fips_desmovs.c index 13ccc46d50..3fdde2978f 100644 --- a/fips/des/fips_desmovs.c +++ b/fips/des/fips_desmovs.c @@ -282,7 +282,6 @@ void do_mct(char *amode, int j; int n; EVP_CIPHER_CTX ctx; - unsigned char old_iv[8]; int kp=akeysz/64; fprintf(rfp,"\nCOUNT = %d\n",i); @@ -305,6 +304,10 @@ void do_mct(char *amode, for(j=0 ; j < 10000 ; ++j) { + unsigned char old_iv[8]; + unsigned char old_text[8]; + + memcpy(old_text,text,8); if(j == 0) { memcpy(old_iv,ivec,8); @@ -327,6 +330,14 @@ void do_mct(char *amode, if(dir && (imode == CFB1 || imode == CFB8 || imode == CFB64 || imode == CBC)) memcpy(text,old_iv,8); + + if(!dir && imode == CFB64) + { + /* the test specifies using the output of the raw DES operation + which we don't have, so reconstruct it... */ + for(n=0 ; n < 8 ; ++n) + text[n]^=old_text[n]; + } } for(n=0 ; n < 8 ; ++n) akey[n]^=nk[16+n]; -- 2.25.1