提交 288fe07a 编写于 作者: D Dr. Stephen Henson

Fix 3DES Monte Carlo test file output which previously outputted

extra bogus lines. Update fipsalgtest.pl to tolerate the old format.
上级 7fdcb457
......@@ -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,7 +440,7 @@ static int proc_file(char *rqfile, char *rspfile)
numkeys=atoi(ibuf+10);
break;
}
if (echo)
fputs(ibuf, rfp);
if(!fips_strncasecmp(ibuf,"KEY = ",6))
{
......@@ -495,6 +496,7 @@ static int proc_file(char *rqfile, char *rspfile)
break;
case 3: /* IV = xxxx */
if (echo)
fputs(ibuf, rfp);
if (fips_strncasecmp(ibuf, "IV = ", 5) != 0)
{
......@@ -516,6 +518,7 @@ static int proc_file(char *rqfile, char *rspfile)
break;
case 4: /* PLAINTEXT = xxxx */
if (echo)
fputs(ibuf, rfp);
if (fips_strncasecmp(ibuf, "PLAINTEXT = ", 12) != 0)
{
......@@ -558,6 +561,7 @@ static int proc_file(char *rqfile, char *rspfile)
break;
case 5: /* CIPHERTEXT = xxxx */
if (echo)
fputs(ibuf, rfp);
if (fips_strncasecmp(ibuf, "CIPHERTEXT = ", 13) != 0)
{
......
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册