Changes between 0.9.7l and 0.9.7m [xx XXX xxxx]
+ *) New perl script mkfipsscr.pl to create shell scripts or batch files to
+ run algorithm test programs.
+ [Steve Henson]
+
*) Make algorithm test programs more tolerant of whitespace.
[Steve Henson]
$(MAKE) PERL='${PERL}' CC='$(CC)' CFLAG='${CFLAG}' INSTALLTOP='${INSTALLTOP}' PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' dclean ); \
done;
+FIPS_EX_OBJ= ../crypto/aes/aes_cbc.o \
+ ../crypto/aes/aes_cfb.o \
+ ../crypto/aes/aes_ecb.o \
+ ../crypto/aes/aes_ofb.o \
+ ../crypto/asn1/a_bitstr.o \
+ ../crypto/asn1/a_bytes.o \
+ ../crypto/asn1/a_dup.o \
+ ../crypto/asn1/a_int.o \
+ ../crypto/asn1/a_object.o \
+ ../crypto/asn1/asn1_err.o \
+ ../crypto/asn1/asn1_lib.o \
+ ../crypto/asn1/a_type.o \
+ ../crypto/asn1/evp_asn1.o \
+ ../crypto/asn1/tasn_dec.o \
+ ../crypto/asn1/tasn_enc.o \
+ ../crypto/asn1/tasn_fre.o \
+ ../crypto/asn1/tasn_new.o \
+ ../crypto/asn1/tasn_typ.o \
+ ../crypto/asn1/tasn_utl.o \
+ ../crypto/asn1/t_pkey.o \
+ ../crypto/asn1/x_algor.o \
+ ../crypto/asn1/x_bignum.o \
+ ../crypto/asn1/x_long.o \
+ ../crypto/asn1/x_sig.o \
+ ../crypto/bio/bio_err.o \
+ ../crypto/bio/bio_lib.o \
+ ../crypto/bio/b_print.o \
+ ../crypto/bio/bss_file.o \
+ ../crypto/bn/bn_add.o \
+ ../crypto/bn/bn_blind.o \
+ ../crypto/bn/bn_ctx.o \
+ ../crypto/bn/bn_div.o \
+ ../crypto/bn/bn_err.o \
+ ../crypto/bn/bn_exp2.o \
+ ../crypto/bn/bn_exp.o \
+ ../crypto/bn/bn_gcd.o \
+ ../crypto/bn/bn_lib.o \
+ ../crypto/bn/bn_mod.o \
+ ../crypto/bn/bn_mont.o \
+ ../crypto/bn/bn_mul.o \
+ ../crypto/bn/bn_prime.o \
+ ../crypto/bn/bn_print.o \
+ ../crypto/bn/bn_rand.o \
+ ../crypto/bn/bn_recp.o \
+ ../crypto/bn/bn_shift.o \
+ ../crypto/bn/bn_sqr.o \
+ ../crypto/bn/bn_word.o \
+ ../crypto/bn/bn_x931p.o \
+ ../crypto/buffer/buf_err.o \
+ ../crypto/buffer/buffer.o \
+ ../crypto/conf/conf_err.o \
+ ../crypto/cpt_err.o \
+ ../crypto/cryptlib.o \
+ ../crypto/des/cfb64ede.o \
+ ../crypto/des/cfb64enc.o \
+ ../crypto/des/cfb_enc.o \
+ ../crypto/des/des_enc.o \
+ ../crypto/des/ecb3_enc.o \
+ ../crypto/des/ecb_enc.o \
+ ../crypto/des/ofb64ede.o \
+ ../crypto/des/ofb64enc.o \
+ ../crypto/dh/dh_err.o \
+ ../crypto/dh/dh_lib.o \
+ ../crypto/dsa/dsa_asn1.o \
+ ../crypto/dsa/dsa_err.o \
+ ../crypto/dsa/dsa_lib.o \
+ ../crypto/dsa/dsa_sign.o \
+ ../crypto/dsa/dsa_vrf.o \
+ ../crypto/dso/dso_err.o \
+ ../crypto/ec/ec_err.o \
+ ../crypto/engine/eng_err.o \
+ ../crypto/engine/eng_init.o \
+ ../crypto/engine/eng_lib.o \
+ ../crypto/engine/eng_list.o \
+ ../crypto/engine/eng_table.o \
+ ../crypto/engine/tb_cipher.o \
+ ../crypto/engine/tb_dh.o \
+ ../crypto/engine/tb_digest.o \
+ ../crypto/engine/tb_dsa.o \
+ ../crypto/engine/tb_rand.o \
+ ../crypto/engine/tb_rsa.o \
+ ../crypto/err/err_all.o \
+ ../crypto/err/err.o \
+ ../crypto/err/err_prn.o \
+ ../crypto/evp/digest.o \
+ ../crypto/evp/e_aes.o \
+ ../crypto/evp/e_des3.o \
+ ../crypto/evp/e_des.o \
+ ../crypto/evp/evp_enc.o \
+ ../crypto/evp/evp_err.o \
+ ../crypto/evp/evp_lib.o \
+ ../crypto/evp/m_sha1.o \
+ ../crypto/evp/p_lib.o \
+ ../crypto/evp/p_sign.o \
+ ../crypto/evp/p_verify.o \
+ ../crypto/ex_data.o \
+ ../crypto/lhash/lhash.o \
+ ../crypto/mem_clr.o \
+ ../crypto/mem_dbg.o \
+ ../crypto/mem.o \
+ ../crypto/objects/obj_dat.o \
+ ../crypto/objects/obj_err.o \
+ ../crypto/objects/obj_lib.o \
+ ../crypto/ocsp/ocsp_err.o \
+ ../crypto/pem/pem_err.o \
+ ../crypto/pkcs12/pk12err.o \
+ ../crypto/pkcs7/pkcs7err.o \
+ ../crypto/rand/md_rand.o \
+ ../crypto/rand/rand_egd.o \
+ ../crypto/rand/rand_err.o \
+ ../crypto/rand/randfile.o \
+ ../crypto/rand/rand_lib.o \
+ ../crypto/rand/rand_os2.o \
+ ../crypto/rand/rand_unix.o \
+ ../crypto/rand/rand_win.o \
+ ../crypto/rsa/rsa_err.o \
+ ../crypto/rsa/rsa_lib.o \
+ ../crypto/rsa/rsa_none.o \
+ ../crypto/rsa/rsa_oaep.o \
+ ../crypto/rsa/rsa_pk1.o \
+ ../crypto/rsa/rsa_pss.o \
+ ../crypto/rsa/rsa_sign.o \
+ ../crypto/rsa/rsa_ssl.o \
+ ../crypto/rsa/rsa_x931.o \
+ ../crypto/stack/stack.o \
+ ../crypto/uid.o \
+ ../crypto/ui/ui_err.o \
+ ../crypto/x509v3/v3err.o \
+ ../crypto/x509v3/v3_hex.o \
+ ../crypto/x509/x509_err.o
+
# DO NOT DELETE THIS LINE -- make depend depends on it.
fips.o: ../include/openssl/aes.h ../include/openssl/asn1.h
--- /dev/null
+#!/usr/local/bin/perl -w
+
+my @fips_tests = (
+
+# FIPS test descriptions
+
+# DSA tests
+
+["dsa", "PQGGen", "fips_dssvs pqg"],
+["dsa", "KeyPair", "fips_dssvs keypair"],
+["dsa", "SigGen", "fips_dssvs siggen"],
+["dsa", "SigVer", "fips_dssvs sigver"],
+
+# SHA tests
+
+["sha", "SHA1LongMsg", "fips_shatest"],
+["sha", "SHA1Monte", "fips_shatest"],
+["sha", "SHA1ShortMsg", "fips_shatest"],
+["sha", "SHA224LongMsg", "fips_shatest"],
+["sha", "SHA224Monte", "fips_shatest"],
+["sha", "SHA224ShortMsg", "fips_shatest"],
+["sha", "SHA256LongMsg", "fips_shatest"],
+["sha", "SHA256Monte", "fips_shatest"],
+["sha", "SHA256ShortMsg", "fips_shatest"],
+["sha", "SHA384LongMsg", "fips_shatest"],
+["sha", "SHA384Monte", "fips_shatest"],
+["sha", "SHA384ShortMsg", "fips_shatest"],
+["sha", "SHA512LongMsg", "fips_shatest"],
+["sha", "SHA512Monte", "fips_shatest"],
+["sha", "SHA512ShortMsg", "fips_shatest"],
+
+# AES tests, file search mode
+["aes", "\@dir", "fips_aesavs -f"],
+
+# DES tests, file search mode
+["tdes", "\@dir", "fips_desmovs -f"],
+
+# HMAC
+
+["hmac", "HMAC", "fips_hmactest"],
+
+# RAND tests
+
+["rng", "ANSI931_TDES2MCT", "fips_rngvs mct"],
+["rng", "ANSI931_TDES2VST", "fips_rngvs vst"],
+
+# RSA tests
+
+["rsa", "SigGen15", "fips_rsastest"],
+["rsa", "SigVer15", "fips_rsavtest"],
+["rsa", "SigGenPSS", "fips_rsastest -saltlen 0"],
+["rsa", "SigVerPSS", "fips_rsavtest -saltlen 0"],
+["rsa", "SigGenRSA", "fips_rsastest -x931"],
+["rsa", "SigVerRSA", "fips_rsavtest -x931"],
+["rsa", "KeyGenRSA", "fips_rsagtest"],
+["rsa_salt_62", "SigGenPSS", "fips_rsastest -saltlen 62"],
+["rsa_salt_62", "SigVerPSS", "fips_rsavtest -saltlen 62"]
+
+);
+
+my $lnum = 0;
+my $win32 = 0;
+my $tvdir = "testvectors";
+my $ltdir = "";
+
+foreach (@ARGV)
+ {
+ if ($_ eq "--win32")
+ {
+ $win32 = 1;
+ }
+ elsif (/--dir=(.*)$/)
+ {
+ $tvdir = $1;
+ }
+ }
+
+if ($win32)
+ {
+ open(OUT, ">fipstests.bat");
+
+ print OUT <<END;
+\@echo off
+rem Test vector run script
+rem Auto generated by fipsalgtest.pl script
+rem Do not edit
+
+END
+
+ }
+else
+ {
+open(OUT, ">fipstests.sh");
+
+print OUT <<END;
+#!/bin/sh
+
+# Test vector run script
+# Auto generated by fipsalgtest.pl script
+# Do not edit
+
+END
+
+ }
+
+foreach(@fips_tests)
+ {
+ my ($tdir, $fprefix, $tcmd) = @$_;
+ $lnum++;
+ if ($tdir ne $ltdir)
+ {
+ $ltdir = $tdir;
+ test_dir($win32, $ltdir);
+ }
+ test_line($win32, $tdir, $fprefix, $tcmd);
+ }
+
+sub test_dir
+ {
+ my ($win32, $tdir) = @_;
+ if ($win32)
+ {
+ my $rsp = "..\\fips-1.0\\$tvdir\\$tdir\\rsp";
+ print OUT <<END;
+
+echo $tdir tests
+rd /s /q $rsp
+md $rsp
+END
+ }
+ else
+ {
+ my $rsp = "$tvdir/$tdir/rsp";
+ print OUT <<END;
+
+# $tdir tests
+rm -rf $rsp
+mkdir $rsp
+
+END
+ }
+ }
+
+sub test_line
+ {
+ my ($win32, $tdir, $fprefix, $tcmd) = @_;
+ if ($fprefix =~ /\@/)
+ {
+ foreach(<$tvdir/$tdir/req/*.req>)
+ {
+ if ($win32)
+ {
+ print OUT ".\\$tcmd ../fips-1.0/${_}\n";
+ }
+ else
+ {
+ print OUT <<END;
+../util/shlib_wrap.sh ../test/$tcmd $_
+END
+ }
+ }
+ return;
+ }
+ if ($win32)
+ {
+ my $req = "..\\fips-1.0\\$tvdir\\$tdir\\req\\$fprefix.req";
+ my $rsp = "..\\fips-1.0\\$tvdir\\$tdir\\rsp\\$fprefix.rsp";
+ print OUT ".\\$tcmd < $req > $rsp\n";
+END
+ }
+ else
+ {
+ my $req = "$tvdir/$tdir/req/$fprefix.req";
+ my $rsp = "$tvdir/$tdir/rsp/$fprefix.rsp";
+ print OUT <<END;
+if [ -f $req ] ; then ../util/shlib_wrap.sh ../test/$tcmd < $req > $rsp; fi
+END
+ }
+ }
+
if ($key eq "LIBOBJ")
{ $libobj=&var_add($dir,$val); }
+ if ($key eq "FIPS_EX_OBJ")
+ { $fips_ex_obj=&var_add($dir,$val); }
+
if ($key eq "FIPSLIBDIR")
{ $fipslibdir=$val;}
}
close(IN);
+foreach (split " ", $fips_ex_obj)
+ {
+ $fips_exclude_obj{$1} = 1 if (/\/([^\/]*)$/);
+ }
+
+$fips_exclude_obj{"bn_asm"} = 1;
+
+my @ltmp = split " ", $lib_obj{"CRYPTO"};
+
+
+$lib_obj{"CRYPTO"} = "";
+
+foreach(@ltmp)
+ {
+ if (/\/([^\/]*)$/ && exists $fips_exclude_obj{$1})
+ {
+ print STDERR "Excluing $_\n";
+ }
+ else
+ {
+ $lib_obj{"CRYPTO"} .= "$_ ";
+ }
+ }
+
+
+#foreach (keys %fips_exclude_obj) { print STDERR "FIPS is $_\n"; }
+
if ($fips_canister_path eq "")
{
$fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.o";
$lib_obj =~ s/\s(\S*\/rmd_dgst\S*)/ $1 \$(RMD160_ASM_OBJ)/;
$rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src);
}
+if ($_ eq "CRYPTO")
+ {
+# print STDERR "OBJ is $lib_obj\n";
+ }
$defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj);
$lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)";
$rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib);
# $ret.="\t\$(RM) \$(O_$Name)\n";
$ret.="$target: $objs\n";
$ex =' advapi32.lib';
- $ex.=" \$(FIPSLIB_D)${o}_chkstk.o" if $fips && $target =~ /O_CRYPTO/;
+ $ex.=" \$(FIPSLIB_D)${o}_chkstk.o \$(FIPSLIB_D)${o}_udivdi3.o \$(FIPSLIB_D)${o}_umoddi3.o" if $fips && $target =~ /O_CRYPTO/;
$ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n";
}
else
$ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/;
if ($fips && $target =~ /O_CRYPTO/)
{
- $ex.=" \$(FIPSLIB_D)${o}_chkstk.o";
+ $ex.=" \$(FIPSLIB_D)${o}_chkstk.o \$(FIPSLIB_D)${o}_udivdi3.o \$(FIPSLIB_D)${o}_umoddi3.o";
$ret.="$target: $objs \$(PREMAIN_DSO_EXE)\n";
$ret.="\tSET FIPS_LINK=\$(LINK)\n";
$ret.="\tSET FIPS_CC=\$(CC)\n";
if ($standalone)
{
$ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t";
- $ret.="\$(FIPSLIB_D)${o}_chkstk.o " if ($files =~ /O_FIPSCANISTER/);
+ $ret.="\$(FIPSLIB_D)${o}_chkstk.o \$(FIPSLIB_D)${o}_udivdi3.o \$(FIPSLIB_D)${o}_umoddi3.o advapi32.lib " if ($files =~ /O_FIPSCANISTER/);
$ret.="$files $libs\n<<\n";
}
elsif ($fips && !$shlib)