Fix 3DES Monte Carlo test file output which previously outputted
extra bogus lines. Update fipsalgtest.pl to tolerate the old format.
This commit is contained in:
parent
7fdcb45745
commit
288fe07a6e
@ -177,7 +177,6 @@ static void do_mct(char *amode,
|
||||
printf("Unrecognized mode: %s\n", amode);
|
||||
EXIT(1);
|
||||
}
|
||||
|
||||
for(i=0 ; i < 400 ; ++i)
|
||||
{
|
||||
int j;
|
||||
@ -277,7 +276,7 @@ static int proc_file(char *rqfile, char *rspfile)
|
||||
char atest[100] = "";
|
||||
int akeysz=0;
|
||||
unsigned char iVec[20], aKey[40];
|
||||
int dir = -1, err = 0, step = 0;
|
||||
int dir = -1, err = 0, step = 0, echo = 1;
|
||||
unsigned char plaintext[2048];
|
||||
unsigned char ciphertext[2048];
|
||||
char *rp;
|
||||
@ -383,6 +382,8 @@ static int proc_file(char *rqfile, char *rspfile)
|
||||
n = strlen(xp+1)-1;
|
||||
strncpy(amode, xp+1, n);
|
||||
amode[n] = '\0';
|
||||
if (!strcmp(atest, "Monte"))
|
||||
echo = 0;
|
||||
/* amode[3] = '\0'; */
|
||||
if (VERBOSE)
|
||||
printf("Test=%s, Mode=%s\n",atest,amode);
|
||||
@ -439,8 +440,8 @@ static int proc_file(char *rqfile, char *rspfile)
|
||||
numkeys=atoi(ibuf+10);
|
||||
break;
|
||||
}
|
||||
|
||||
fputs(ibuf, rfp);
|
||||
if (echo)
|
||||
fputs(ibuf, rfp);
|
||||
if(!fips_strncasecmp(ibuf,"KEY = ",6))
|
||||
{
|
||||
akeysz=64;
|
||||
@ -495,7 +496,8 @@ static int proc_file(char *rqfile, char *rspfile)
|
||||
break;
|
||||
|
||||
case 3: /* IV = xxxx */
|
||||
fputs(ibuf, rfp);
|
||||
if (echo)
|
||||
fputs(ibuf, rfp);
|
||||
if (fips_strncasecmp(ibuf, "IV = ", 5) != 0)
|
||||
{
|
||||
printf("Missing IV\n");
|
||||
@ -516,7 +518,8 @@ static int proc_file(char *rqfile, char *rspfile)
|
||||
break;
|
||||
|
||||
case 4: /* PLAINTEXT = xxxx */
|
||||
fputs(ibuf, rfp);
|
||||
if (echo)
|
||||
fputs(ibuf, rfp);
|
||||
if (fips_strncasecmp(ibuf, "PLAINTEXT = ", 12) != 0)
|
||||
{
|
||||
printf("Missing PLAINTEXT\n");
|
||||
@ -558,7 +561,8 @@ static int proc_file(char *rqfile, char *rspfile)
|
||||
break;
|
||||
|
||||
case 5: /* CIPHERTEXT = xxxx */
|
||||
fputs(ibuf, rfp);
|
||||
if (echo)
|
||||
fputs(ibuf, rfp);
|
||||
if (fips_strncasecmp(ibuf, "CIPHERTEXT = ", 13) != 0)
|
||||
{
|
||||
printf("Missing KEY\n");
|
||||
|
@ -1090,6 +1090,7 @@ sub cmp_file {
|
||||
my ( $tname, $rsp, $tst ) = @_;
|
||||
my ( $rspf, $tstf );
|
||||
my ( $rspline, $tstline );
|
||||
my $monte = 0;
|
||||
if ( !open( $rspf, $rsp ) ) {
|
||||
print STDERR "ERROR: can't open request file $rsp\n";
|
||||
return 0;
|
||||
@ -1098,6 +1099,7 @@ sub cmp_file {
|
||||
print STDERR "ERROR: can't open output file $tst\n";
|
||||
return 0;
|
||||
}
|
||||
$monte = 1 if ($rsp =~ /Monte[123]/);
|
||||
for ( ; ; ) {
|
||||
$rspline = next_line($rspf);
|
||||
$tstline = next_line($tstf);
|
||||
@ -1105,6 +1107,21 @@ sub cmp_file {
|
||||
print STDERR "DEBUG: $tname file comparison OK\n" if $debug;
|
||||
return 1;
|
||||
}
|
||||
# Workaround for old broken DES3 MCT format which added bogus
|
||||
# extra lines: after [ENCRYPT] or [DECRYPT] skip until first
|
||||
# COUNT line.
|
||||
if ($monte) {
|
||||
if ($rspline =~ /CRYPT/) {
|
||||
do {
|
||||
$rspline = next_line($rspf);
|
||||
} while (defined($rspline) && $rspline !~ /COUNT/);
|
||||
}
|
||||
if ($tstline =~ /CRYPT/) {
|
||||
do {
|
||||
$tstline = next_line($tstf);
|
||||
} while (defined($tstline) && $tstline !~ /COUNT/);
|
||||
}
|
||||
}
|
||||
if ( !defined($rspline) ) {
|
||||
print STDERR "ERROR: $tname EOF on $rsp\n";
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user