summaryrefslogtreecommitdiffstats
path: root/fips
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2011-09-11 18:05:40 +0000
committerDr. Stephen Henson <steve@openssl.org>2011-09-11 18:05:40 +0000
commit288fe07a6e3e4d61e71db84ce31135cc6d1789ce (patch)
tree261f18bffe37a9ed0461230e36680f81932d0c7f /fips
parent7fdcb45745c01b90b256fe97e87eae31453e11e6 (diff)
Fix 3DES Monte Carlo test file output which previously outputted
extra bogus lines. Update fipsalgtest.pl to tolerate the old format.
Diffstat (limited to 'fips')
-rw-r--r--fips/des/fips_desmovs.c18
-rw-r--r--fips/fipsalgtest.pl17
2 files changed, 28 insertions, 7 deletions
diff --git a/fips/des/fips_desmovs.c b/fips/des/fips_desmovs.c
index ee65e098d2..30fa01fa3c 100644
--- a/fips/des/fips_desmovs.c
+++ b/fips/des/fips_desmovs.c
@@ -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");
diff --git a/fips/fipsalgtest.pl b/fips/fipsalgtest.pl
index 4ab2c962ee..39ec0016a6 100644
--- a/fips/fipsalgtest.pl
+++ b/fips/fipsalgtest.pl
@@ -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;