Who invented these tests? Reconstruct internal state in order to follow

bizarre CFB test algorithm.
This commit is contained in:
Ben Laurie 2003-12-18 14:26:50 +00:00
parent cba1c06e5f
commit 3229fd6afe

View File

@ -282,7 +282,6 @@ void do_mct(char *amode,
int j; int j;
int n; int n;
EVP_CIPHER_CTX ctx; EVP_CIPHER_CTX ctx;
unsigned char old_iv[8];
int kp=akeysz/64; int kp=akeysz/64;
fprintf(rfp,"\nCOUNT = %d\n",i); fprintf(rfp,"\nCOUNT = %d\n",i);
@ -305,6 +304,10 @@ void do_mct(char *amode,
for(j=0 ; j < 10000 ; ++j) for(j=0 ; j < 10000 ; ++j)
{ {
unsigned char old_iv[8];
unsigned char old_text[8];
memcpy(old_text,text,8);
if(j == 0) if(j == 0)
{ {
memcpy(old_iv,ivec,8); memcpy(old_iv,ivec,8);
@ -327,6 +330,14 @@ void do_mct(char *amode,
if(dir && (imode == CFB1 || imode == CFB8 || imode == CFB64 if(dir && (imode == CFB1 || imode == CFB8 || imode == CFB64
|| imode == CBC)) || imode == CBC))
memcpy(text,old_iv,8); 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) for(n=0 ; n < 8 ; ++n)
akey[n]^=nk[16+n]; akey[n]^=nk[16+n];