Commit 288fe07a authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Fix 3DES Monte Carlo test file output which previously outputted

extra bogus lines. Update fipsalgtest.pl to tolerate the old format.
parent 7fdcb457
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -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)
		{
+17 −0
Original line number Diff line number Diff line
@@ -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;