Enhance mkfipsscr.pl to handle different testvector paths and perform
sanity checks. Make AES/TDES algorithm test programs quiet if VERBOSE is zero.
This commit is contained in:
6
CHANGES
6
CHANGES
@@ -4,6 +4,12 @@
|
|||||||
|
|
||||||
Changes between 0.9.8e and 0.9.8f-fips [xx XXX xxxx]
|
Changes between 0.9.8e and 0.9.8f-fips [xx XXX xxxx]
|
||||||
|
|
||||||
|
*) Enhance mkfipsscr.pl to cope with different directory layouts. It now
|
||||||
|
relies on the filename and makes no assumptions about the pathname.
|
||||||
|
In the case of PSS it scans the file to determine the salt length.
|
||||||
|
Paths can be filtered. Also reports duplicate and missing files.
|
||||||
|
[Steve Henson]
|
||||||
|
|
||||||
*) Updates to WIN32 build system. Make use of AES assembly language routines.
|
*) Updates to WIN32 build system. Make use of AES assembly language routines.
|
||||||
Use assembly language routines in FIPS compilation.
|
Use assembly language routines in FIPS compilation.
|
||||||
[Steve Henson]
|
[Steve Henson]
|
||||||
|
|||||||
@@ -647,11 +647,13 @@ int proc_file(char *rqfile)
|
|||||||
strncpy(amode, xp+1, n);
|
strncpy(amode, xp+1, n);
|
||||||
amode[n] = '\0';
|
amode[n] = '\0';
|
||||||
/* amode[3] = '\0'; */
|
/* amode[3] = '\0'; */
|
||||||
|
if (VERBOSE)
|
||||||
printf("Test = %s, Mode = %s\n", atest, amode);
|
printf("Test = %s, Mode = %s\n", atest, amode);
|
||||||
}
|
}
|
||||||
else if (strncasecmp(pp, "Key Length : ", 13) == 0)
|
else if (strncasecmp(pp, "Key Length : ", 13) == 0)
|
||||||
{
|
{
|
||||||
akeysz = atoi(pp+13);
|
akeysz = atoi(pp+13);
|
||||||
|
if (VERBOSE)
|
||||||
printf("Key size = %d\n", akeysz);
|
printf("Key size = %d\n", akeysz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -899,6 +901,7 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
strtok(fn, "\r\n");
|
strtok(fn, "\r\n");
|
||||||
strcpy(rfn, fn);
|
strcpy(rfn, fn);
|
||||||
|
if (VERBOSE)
|
||||||
printf("Processing: %s\n", rfn);
|
printf("Processing: %s\n", rfn);
|
||||||
if (proc_file(rfn))
|
if (proc_file(rfn))
|
||||||
{
|
{
|
||||||
@@ -910,6 +913,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else /* single file */
|
else /* single file */
|
||||||
{
|
{
|
||||||
|
if (VERBOSE)
|
||||||
printf("Processing: %s\n", fn);
|
printf("Processing: %s\n", fn);
|
||||||
if (proc_file(fn))
|
if (proc_file(fn))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -379,6 +379,7 @@ int proc_file(char *rqfile)
|
|||||||
strncpy(amode, xp+1, n);
|
strncpy(amode, xp+1, n);
|
||||||
amode[n] = '\0';
|
amode[n] = '\0';
|
||||||
/* amode[3] = '\0'; */
|
/* amode[3] = '\0'; */
|
||||||
|
if (VERBOSE)
|
||||||
printf("Test=%s, Mode=%s\n",atest,amode);
|
printf("Test=%s, Mode=%s\n",atest,amode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -682,6 +683,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else /* single file */
|
else /* single file */
|
||||||
{
|
{
|
||||||
|
if (VERBOSE)
|
||||||
printf("Processing: %s\n", fn);
|
printf("Processing: %s\n", fn);
|
||||||
if (proc_file(fn))
|
if (proc_file(fn))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,75 +1,273 @@
|
|||||||
#!/usr/local/bin/perl -w
|
#!/usr/local/bin/perl -w
|
||||||
|
|
||||||
my @fips_tests = (
|
my %fips_tests = (
|
||||||
|
|
||||||
# FIPS test descriptions
|
# FIPS test definitions
|
||||||
|
|
||||||
# DSA tests
|
# DSA tests
|
||||||
|
|
||||||
["dsa", "PQGGen", "fips_dssvs pqg"],
|
"PQGGen" => "fips_dssvs pqg",
|
||||||
["dsa", "KeyPair", "fips_dssvs keypair"],
|
"KeyPair" => "fips_dssvs keypair",
|
||||||
["dsa", "SigGen", "fips_dssvs siggen"],
|
"SigGen" => "fips_dssvs siggen",
|
||||||
["dsa", "SigVer", "fips_dssvs sigver"],
|
"SigVer" => "fips_dssvs sigver",
|
||||||
|
|
||||||
# SHA tests
|
# SHA tests
|
||||||
|
|
||||||
["sha", "SHA1LongMsg", "fips_shatest"],
|
"SHA1LongMsg" => "fips_shatest",
|
||||||
["sha", "SHA1Monte", "fips_shatest"],
|
"SHA1Monte" => "fips_shatest",
|
||||||
["sha", "SHA1ShortMsg", "fips_shatest"],
|
"SHA1ShortMsg" => "fips_shatest",
|
||||||
["sha", "SHA224LongMsg", "fips_shatest"],
|
"SHA224LongMsg" => "fips_shatest",
|
||||||
["sha", "SHA224Monte", "fips_shatest"],
|
"SHA224Monte" => "fips_shatest",
|
||||||
["sha", "SHA224ShortMsg", "fips_shatest"],
|
"SHA224ShortMsg" => "fips_shatest",
|
||||||
["sha", "SHA256LongMsg", "fips_shatest"],
|
"SHA256LongMsg" => "fips_shatest",
|
||||||
["sha", "SHA256Monte", "fips_shatest"],
|
"SHA256Monte" => "fips_shatest",
|
||||||
["sha", "SHA256ShortMsg", "fips_shatest"],
|
"SHA256ShortMsg" => "fips_shatest",
|
||||||
["sha", "SHA384LongMsg", "fips_shatest"],
|
"SHA384LongMsg" => "fips_shatest",
|
||||||
["sha", "SHA384Monte", "fips_shatest"],
|
"SHA384Monte" => "fips_shatest",
|
||||||
["sha", "SHA384ShortMsg", "fips_shatest"],
|
"SHA384ShortMsg" => "fips_shatest",
|
||||||
["sha", "SHA512LongMsg", "fips_shatest"],
|
"SHA512LongMsg" => "fips_shatest",
|
||||||
["sha", "SHA512Monte", "fips_shatest"],
|
"SHA512Monte" => "fips_shatest",
|
||||||
["sha", "SHA512ShortMsg", "fips_shatest"],
|
"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", "HMAC", "fips_hmactest"],
|
"HMAC" => "fips_hmactest",
|
||||||
|
|
||||||
# RAND tests
|
# RAND tests
|
||||||
|
|
||||||
["rng", "ANSI931_AES128MCT", "fips_rngvs mct"],
|
"ANSI931_AES128MCT" => "fips_rngvs mct",
|
||||||
["rng", "ANSI931_AES192MCT", "fips_rngvs mct"],
|
"ANSI931_AES192MCT" => "fips_rngvs mct",
|
||||||
["rng", "ANSI931_AES256MCT", "fips_rngvs mct"],
|
"ANSI931_AES256MCT" => "fips_rngvs mct",
|
||||||
["rng", "ANSI931_AES128VST", "fips_rngvs vst"],
|
"ANSI931_AES128VST" => "fips_rngvs vst",
|
||||||
["rng", "ANSI931_AES192VST", "fips_rngvs vst"],
|
"ANSI931_AES192VST" => "fips_rngvs vst",
|
||||||
["rng", "ANSI931_AES256VST", "fips_rngvs vst"],
|
"ANSI931_AES256VST" => "fips_rngvs vst",
|
||||||
|
|
||||||
# RSA tests
|
# RSA tests
|
||||||
|
|
||||||
["rsa", "SigGen15", "fips_rsastest"],
|
"SigGen15" => "fips_rsastest",
|
||||||
["rsa", "SigVer15", "fips_rsavtest"],
|
"SigVer15" => "fips_rsavtest",
|
||||||
["rsa", "SigGenPSS", "fips_rsastest -saltlen 0"],
|
"SigGenPSS" => "fips_rsastest -saltlen SALT",
|
||||||
["rsa", "SigVerPSS", "fips_rsavtest -saltlen 0"],
|
"SigVerPSS" => "fips_rsavtest -saltlen SALT",
|
||||||
["rsa", "SigGenRSA", "fips_rsastest -x931"],
|
"SigGenRSA" => "fips_rsastest -x931",
|
||||||
["rsa", "SigVerRSA", "fips_rsavtest -x931"],
|
"SigVerRSA" => "fips_rsavtest -x931",
|
||||||
["rsa", "KeyGenRSA", "fips_rsagtest"],
|
"KeyGenRSA" => "fips_rsagtest",
|
||||||
["rsa_salt_62", "SigGenPSS", "fips_rsastest -saltlen 62"],
|
|
||||||
["rsa_salt_62", "SigVerPSS", "fips_rsavtest -saltlen 62"]
|
# AES tests
|
||||||
|
|
||||||
|
"CBCGFSbox128" => "fips_aesavs -f",
|
||||||
|
"CBCGFSbox192" => "fips_aesavs -f",
|
||||||
|
"CBCGFSbox256" => "fips_aesavs -f",
|
||||||
|
"CBCKeySbox128" => "fips_aesavs -f",
|
||||||
|
"CBCKeySbox192" => "fips_aesavs -f",
|
||||||
|
"CBCKeySbox256" => "fips_aesavs -f",
|
||||||
|
"CBCMCT128" => "fips_aesavs -f",
|
||||||
|
"CBCMCT192" => "fips_aesavs -f",
|
||||||
|
"CBCMCT256" => "fips_aesavs -f",
|
||||||
|
"CBCMMT128" => "fips_aesavs -f",
|
||||||
|
"CBCMMT192" => "fips_aesavs -f",
|
||||||
|
"CBCMMT256" => "fips_aesavs -f",
|
||||||
|
"CBCVarKey128" => "fips_aesavs -f",
|
||||||
|
"CBCVarKey192" => "fips_aesavs -f",
|
||||||
|
"CBCVarKey256" => "fips_aesavs -f",
|
||||||
|
"CBCVarTxt128" => "fips_aesavs -f",
|
||||||
|
"CBCVarTxt192" => "fips_aesavs -f",
|
||||||
|
"CBCVarTxt256" => "fips_aesavs -f",
|
||||||
|
"CFB128GFSbox128" => "fips_aesavs -f",
|
||||||
|
"CFB128GFSbox192" => "fips_aesavs -f",
|
||||||
|
"CFB128GFSbox256" => "fips_aesavs -f",
|
||||||
|
"CFB128KeySbox128" => "fips_aesavs -f",
|
||||||
|
"CFB128KeySbox192" => "fips_aesavs -f",
|
||||||
|
"CFB128KeySbox256" => "fips_aesavs -f",
|
||||||
|
"CFB128MCT128" => "fips_aesavs -f",
|
||||||
|
"CFB128MCT192" => "fips_aesavs -f",
|
||||||
|
"CFB128MCT256" => "fips_aesavs -f",
|
||||||
|
"CFB128MMT128" => "fips_aesavs -f",
|
||||||
|
"CFB128MMT192" => "fips_aesavs -f",
|
||||||
|
"CFB128MMT256" => "fips_aesavs -f",
|
||||||
|
"CFB128VarKey128" => "fips_aesavs -f",
|
||||||
|
"CFB128VarKey192" => "fips_aesavs -f",
|
||||||
|
"CFB128VarKey256" => "fips_aesavs -f",
|
||||||
|
"CFB128VarTxt128" => "fips_aesavs -f",
|
||||||
|
"CFB128VarTxt192" => "fips_aesavs -f",
|
||||||
|
"CFB128VarTxt256" => "fips_aesavs -f",
|
||||||
|
"CFB8GFSbox128" => "fips_aesavs -f",
|
||||||
|
"CFB8GFSbox192" => "fips_aesavs -f",
|
||||||
|
"CFB8GFSbox256" => "fips_aesavs -f",
|
||||||
|
"CFB8KeySbox128" => "fips_aesavs -f",
|
||||||
|
"CFB8KeySbox192" => "fips_aesavs -f",
|
||||||
|
"CFB8KeySbox256" => "fips_aesavs -f",
|
||||||
|
"CFB8MCT128" => "fips_aesavs -f",
|
||||||
|
"CFB8MCT192" => "fips_aesavs -f",
|
||||||
|
"CFB8MCT256" => "fips_aesavs -f",
|
||||||
|
"CFB8MMT128" => "fips_aesavs -f",
|
||||||
|
"CFB8MMT192" => "fips_aesavs -f",
|
||||||
|
"CFB8MMT256" => "fips_aesavs -f",
|
||||||
|
"CFB8VarKey128" => "fips_aesavs -f",
|
||||||
|
"CFB8VarKey192" => "fips_aesavs -f",
|
||||||
|
"CFB8VarKey256" => "fips_aesavs -f",
|
||||||
|
"CFB8VarTxt128" => "fips_aesavs -f",
|
||||||
|
"CFB8VarTxt192" => "fips_aesavs -f",
|
||||||
|
"CFB8VarTxt256" => "fips_aesavs -f",
|
||||||
|
"ECBGFSbox128" => "fips_aesavs -f",
|
||||||
|
"ECBGFSbox192" => "fips_aesavs -f",
|
||||||
|
"ECBGFSbox256" => "fips_aesavs -f",
|
||||||
|
"ECBKeySbox128" => "fips_aesavs -f",
|
||||||
|
"ECBKeySbox192" => "fips_aesavs -f",
|
||||||
|
"ECBKeySbox256" => "fips_aesavs -f",
|
||||||
|
"ECBMCT128" => "fips_aesavs -f",
|
||||||
|
"ECBMCT192" => "fips_aesavs -f",
|
||||||
|
"ECBMCT256" => "fips_aesavs -f",
|
||||||
|
"ECBMMT128" => "fips_aesavs -f",
|
||||||
|
"ECBMMT192" => "fips_aesavs -f",
|
||||||
|
"ECBMMT256" => "fips_aesavs -f",
|
||||||
|
"ECBVarKey128" => "fips_aesavs -f",
|
||||||
|
"ECBVarKey192" => "fips_aesavs -f",
|
||||||
|
"ECBVarKey256" => "fips_aesavs -f",
|
||||||
|
"ECBVarTxt128" => "fips_aesavs -f",
|
||||||
|
"ECBVarTxt192" => "fips_aesavs -f",
|
||||||
|
"ECBVarTxt256" => "fips_aesavs -f",
|
||||||
|
"OFBGFSbox128" => "fips_aesavs -f",
|
||||||
|
"OFBGFSbox192" => "fips_aesavs -f",
|
||||||
|
"OFBGFSbox256" => "fips_aesavs -f",
|
||||||
|
"OFBKeySbox128" => "fips_aesavs -f",
|
||||||
|
"OFBKeySbox192" => "fips_aesavs -f",
|
||||||
|
"OFBKeySbox256" => "fips_aesavs -f",
|
||||||
|
"OFBMCT128" => "fips_aesavs -f",
|
||||||
|
"OFBMCT192" => "fips_aesavs -f",
|
||||||
|
"OFBMCT256" => "fips_aesavs -f",
|
||||||
|
"OFBMMT128" => "fips_aesavs -f",
|
||||||
|
"OFBMMT192" => "fips_aesavs -f",
|
||||||
|
"OFBMMT256" => "fips_aesavs -f",
|
||||||
|
"OFBVarKey128" => "fips_aesavs -f",
|
||||||
|
"OFBVarKey192" => "fips_aesavs -f",
|
||||||
|
"OFBVarKey256" => "fips_aesavs -f",
|
||||||
|
"OFBVarTxt128" => "fips_aesavs -f",
|
||||||
|
"OFBVarTxt192" => "fips_aesavs -f",
|
||||||
|
"OFBVarTxt256" => "fips_aesavs -f",
|
||||||
|
|
||||||
|
# Triple DES tests
|
||||||
|
|
||||||
|
"TCBCinvperm" => "fips_desmovs -f",
|
||||||
|
"TCBCMMT1" => "fips_desmovs -f",
|
||||||
|
"TCBCMMT2" => "fips_desmovs -f",
|
||||||
|
"TCBCMMT3" => "fips_desmovs -f",
|
||||||
|
"TCBCMonte1" => "fips_desmovs -f",
|
||||||
|
"TCBCMonte2" => "fips_desmovs -f",
|
||||||
|
"TCBCMonte3" => "fips_desmovs -f",
|
||||||
|
"TCBCpermop" => "fips_desmovs -f",
|
||||||
|
"TCBCsubtab" => "fips_desmovs -f",
|
||||||
|
"TCBCvarkey" => "fips_desmovs -f",
|
||||||
|
"TCBCvartext" => "fips_desmovs -f",
|
||||||
|
"TCFB64invperm" => "fips_desmovs -f",
|
||||||
|
"TCFB64MMT1" => "fips_desmovs -f",
|
||||||
|
"TCFB64MMT2" => "fips_desmovs -f",
|
||||||
|
"TCFB64MMT3" => "fips_desmovs -f",
|
||||||
|
"TCFB64Monte1" => "fips_desmovs -f",
|
||||||
|
"TCFB64Monte2" => "fips_desmovs -f",
|
||||||
|
"TCFB64Monte3" => "fips_desmovs -f",
|
||||||
|
"TCFB64permop" => "fips_desmovs -f",
|
||||||
|
"TCFB64subtab" => "fips_desmovs -f",
|
||||||
|
"TCFB64varkey" => "fips_desmovs -f",
|
||||||
|
"TCFB64vartext" => "fips_desmovs -f",
|
||||||
|
"TCFB8invperm" => "fips_desmovs -f",
|
||||||
|
"TCFB8MMT1" => "fips_desmovs -f",
|
||||||
|
"TCFB8MMT2" => "fips_desmovs -f",
|
||||||
|
"TCFB8MMT3" => "fips_desmovs -f",
|
||||||
|
"TCFB8Monte1" => "fips_desmovs -f",
|
||||||
|
"TCFB8Monte2" => "fips_desmovs -f",
|
||||||
|
"TCFB8Monte3" => "fips_desmovs -f",
|
||||||
|
"TCFB8permop" => "fips_desmovs -f",
|
||||||
|
"TCFB8subtab" => "fips_desmovs -f",
|
||||||
|
"TCFB8varkey" => "fips_desmovs -f",
|
||||||
|
"TCFB8vartext" => "fips_desmovs -f",
|
||||||
|
"TECBinvperm" => "fips_desmovs -f",
|
||||||
|
"TECBMMT1" => "fips_desmovs -f",
|
||||||
|
"TECBMMT2" => "fips_desmovs -f",
|
||||||
|
"TECBMMT3" => "fips_desmovs -f",
|
||||||
|
"TECBMonte1" => "fips_desmovs -f",
|
||||||
|
"TECBMonte2" => "fips_desmovs -f",
|
||||||
|
"TECBMonte3" => "fips_desmovs -f",
|
||||||
|
"TECBpermop" => "fips_desmovs -f",
|
||||||
|
"TECBsubtab" => "fips_desmovs -f",
|
||||||
|
"TECBvarkey" => "fips_desmovs -f",
|
||||||
|
"TECBvartext" => "fips_desmovs -f",
|
||||||
|
"TOFBinvperm" => "fips_desmovs -f",
|
||||||
|
"TOFBMMT1" => "fips_desmovs -f",
|
||||||
|
"TOFBMMT2" => "fips_desmovs -f",
|
||||||
|
"TOFBMMT3" => "fips_desmovs -f",
|
||||||
|
"TOFBMonte1" => "fips_desmovs -f",
|
||||||
|
"TOFBMonte2" => "fips_desmovs -f",
|
||||||
|
"TOFBMonte3" => "fips_desmovs -f",
|
||||||
|
"TOFBpermop" => "fips_desmovs -f",
|
||||||
|
"TOFBsubtab" => "fips_desmovs -f",
|
||||||
|
"TOFBvarkey" => "fips_desmovs -f",
|
||||||
|
"TOFBvartext" => "fips_desmovs -f",
|
||||||
|
"TCBCinvperm" => "fips_desmovs -f",
|
||||||
|
"TCBCMMT1" => "fips_desmovs -f",
|
||||||
|
"TCBCMMT2" => "fips_desmovs -f",
|
||||||
|
"TCBCMMT3" => "fips_desmovs -f",
|
||||||
|
"TCBCMonte1" => "fips_desmovs -f",
|
||||||
|
"TCBCMonte2" => "fips_desmovs -f",
|
||||||
|
"TCBCMonte3" => "fips_desmovs -f",
|
||||||
|
"TCBCpermop" => "fips_desmovs -f",
|
||||||
|
"TCBCsubtab" => "fips_desmovs -f",
|
||||||
|
"TCBCvarkey" => "fips_desmovs -f",
|
||||||
|
"TCBCvartext" => "fips_desmovs -f",
|
||||||
|
"TCFB64invperm" => "fips_desmovs -f",
|
||||||
|
"TCFB64MMT1" => "fips_desmovs -f",
|
||||||
|
"TCFB64MMT2" => "fips_desmovs -f",
|
||||||
|
"TCFB64MMT3" => "fips_desmovs -f",
|
||||||
|
"TCFB64Monte1" => "fips_desmovs -f",
|
||||||
|
"TCFB64Monte2" => "fips_desmovs -f",
|
||||||
|
"TCFB64Monte3" => "fips_desmovs -f",
|
||||||
|
"TCFB64permop" => "fips_desmovs -f",
|
||||||
|
"TCFB64subtab" => "fips_desmovs -f",
|
||||||
|
"TCFB64varkey" => "fips_desmovs -f",
|
||||||
|
"TCFB64vartext" => "fips_desmovs -f",
|
||||||
|
"TCFB8invperm" => "fips_desmovs -f",
|
||||||
|
"TCFB8MMT1" => "fips_desmovs -f",
|
||||||
|
"TCFB8MMT2" => "fips_desmovs -f",
|
||||||
|
"TCFB8MMT3" => "fips_desmovs -f",
|
||||||
|
"TCFB8Monte1" => "fips_desmovs -f",
|
||||||
|
"TCFB8Monte2" => "fips_desmovs -f",
|
||||||
|
"TCFB8Monte3" => "fips_desmovs -f",
|
||||||
|
"TCFB8permop" => "fips_desmovs -f",
|
||||||
|
"TCFB8subtab" => "fips_desmovs -f",
|
||||||
|
"TCFB8varkey" => "fips_desmovs -f",
|
||||||
|
"TCFB8vartext" => "fips_desmovs -f",
|
||||||
|
"TECBinvperm" => "fips_desmovs -f",
|
||||||
|
"TECBMMT1" => "fips_desmovs -f",
|
||||||
|
"TECBMMT2" => "fips_desmovs -f",
|
||||||
|
"TECBMMT3" => "fips_desmovs -f",
|
||||||
|
"TECBMonte1" => "fips_desmovs -f",
|
||||||
|
"TECBMonte2" => "fips_desmovs -f",
|
||||||
|
"TECBMonte3" => "fips_desmovs -f",
|
||||||
|
"TECBpermop" => "fips_desmovs -f",
|
||||||
|
"TECBsubtab" => "fips_desmovs -f",
|
||||||
|
"TECBvarkey" => "fips_desmovs -f",
|
||||||
|
"TECBvartext" => "fips_desmovs -f",
|
||||||
|
"TOFBinvperm" => "fips_desmovs -f",
|
||||||
|
"TOFBMMT1" => "fips_desmovs -f",
|
||||||
|
"TOFBMMT2" => "fips_desmovs -f",
|
||||||
|
"TOFBMMT3" => "fips_desmovs -f",
|
||||||
|
"TOFBMonte1" => "fips_desmovs -f",
|
||||||
|
"TOFBMonte2" => "fips_desmovs -f",
|
||||||
|
"TOFBMonte3" => "fips_desmovs -f",
|
||||||
|
"TOFBpermop" => "fips_desmovs -f",
|
||||||
|
"TOFBsubtab" => "fips_desmovs -f",
|
||||||
|
"TOFBvarkey" => "fips_desmovs -f",
|
||||||
|
"TOFBvartext" => "fips_desmovs -f"
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
my $lnum = 0;
|
|
||||||
my $win32 = 0;
|
my $win32 = 0;
|
||||||
my $onedir = 0;
|
my $onedir = 0;
|
||||||
my $ltdir = "";
|
my $filter = "";
|
||||||
my $tvdir;
|
my $tvdir;
|
||||||
my $tvprefix;
|
|
||||||
my $tprefix;
|
my $tprefix;
|
||||||
my $shwrap_prefix;
|
my $shwrap_prefix;
|
||||||
|
my $debug = 0;
|
||||||
|
my $quiet = 0;
|
||||||
|
|
||||||
foreach (@ARGV)
|
foreach (@ARGV)
|
||||||
{
|
{
|
||||||
@@ -81,40 +279,41 @@ foreach (@ARGV)
|
|||||||
{
|
{
|
||||||
$onedir = 1;
|
$onedir = 1;
|
||||||
}
|
}
|
||||||
|
elsif ($_ eq "--debug")
|
||||||
|
{
|
||||||
|
$debug = 1;
|
||||||
|
}
|
||||||
|
elsif ($_ eq "--quiet")
|
||||||
|
{
|
||||||
|
$quiet = 1;
|
||||||
|
}
|
||||||
elsif (/--dir=(.*)$/)
|
elsif (/--dir=(.*)$/)
|
||||||
{
|
{
|
||||||
$tvdir = $1;
|
$tvdir = $1;
|
||||||
|
# $tvdir .= "/" unless $tvdir =~ /\/$/;
|
||||||
}
|
}
|
||||||
elsif (/--tprefix=(.*)$/)
|
elsif (/--tprefix=(.*)$/)
|
||||||
{
|
{
|
||||||
$tprefix = $1;
|
$tprefix = $1;
|
||||||
}
|
}
|
||||||
elsif (/--tvprefix=(.*)$/)
|
|
||||||
{
|
|
||||||
$tvprefix = $1;
|
|
||||||
}
|
|
||||||
elsif (/--shwrap_prefix=(.*)$/)
|
elsif (/--shwrap_prefix=(.*)$/)
|
||||||
{
|
{
|
||||||
$shwrap_prefix = $1;
|
$shwrap_prefix = $1;
|
||||||
}
|
}
|
||||||
|
elsif (/--filter=(.*)$/)
|
||||||
|
{
|
||||||
|
$filter = $1;
|
||||||
|
}
|
||||||
elsif (/--outfile=(.*)$/)
|
elsif (/--outfile=(.*)$/)
|
||||||
{
|
{
|
||||||
$outfile = $1;
|
$outfile = $1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$tvdir = "testvectors" unless defined $tvdir;
|
$tvdir = "." unless defined $tvdir;
|
||||||
|
|
||||||
if ($win32)
|
if ($win32)
|
||||||
{
|
{
|
||||||
if ($onedir)
|
|
||||||
{
|
|
||||||
$tvprefix = "" unless defined $tvprefix;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$tvprefix = "..\\fips-1.0\\" unless defined $tvprefix;
|
|
||||||
}
|
|
||||||
$tprefix = ".\\" unless defined $tprefix;
|
$tprefix = ".\\" unless defined $tprefix;
|
||||||
$outfile = "fipstests.bat" unless defined $outfile;
|
$outfile = "fipstests.bat" unless defined $outfile;
|
||||||
open(OUT, ">$outfile");
|
open(OUT, ">$outfile");
|
||||||
@@ -130,7 +329,6 @@ END
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$tvprefix = "" unless defined $tvprefix;
|
|
||||||
if ($onedir)
|
if ($onedir)
|
||||||
{
|
{
|
||||||
$tprefix = "./" unless defined $tprefix;
|
$tprefix = "./" unless defined $tprefix;
|
||||||
@@ -154,40 +352,87 @@ else
|
|||||||
END
|
END
|
||||||
|
|
||||||
}
|
}
|
||||||
|
my %fips_found;
|
||||||
foreach(@fips_tests)
|
foreach (keys %fips_tests)
|
||||||
{
|
{
|
||||||
my ($tdir, $fprefix, $tcmd) = @$_;
|
$fips_found{$_} = 0;
|
||||||
$lnum++;
|
|
||||||
if ($tdir ne $ltdir)
|
|
||||||
{
|
|
||||||
$ltdir = $tdir;
|
|
||||||
test_dir($win32, $ltdir);
|
|
||||||
}
|
}
|
||||||
test_line($win32, $tdir, $fprefix, $tcmd);
|
|
||||||
|
recurse_test($win32, $tprefix, $filter, $tvdir);
|
||||||
|
|
||||||
|
while (($key, $value) = each %fips_found)
|
||||||
|
{
|
||||||
|
if ($value == 0)
|
||||||
|
{
|
||||||
|
print STDERR "WARNING: test file $key not found\n" unless $quiet;
|
||||||
|
}
|
||||||
|
elsif ($value > 1)
|
||||||
|
{
|
||||||
|
print STDERR "WARNING: test file $key found $value times\n" unless $quiet;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print STDERR "Found test file $key\n" if $debug;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub recurse_test
|
||||||
|
{
|
||||||
|
my ($win32, $tprefix, $filter, $dir) = @_;
|
||||||
|
my $dirh;
|
||||||
|
opendir($dirh, $dir);
|
||||||
|
while ($_ = readdir($dirh))
|
||||||
|
{
|
||||||
|
next if ($_ eq "." || $_ eq "..");
|
||||||
|
$_ = "$dir/$_";
|
||||||
|
if (-f "$_")
|
||||||
|
{
|
||||||
|
next unless /$filter.*\.req$/i;
|
||||||
|
if (/\/([^\/]*)\.req$/ && exists $fips_tests{$1})
|
||||||
|
{
|
||||||
|
$fips_found{$1}++;
|
||||||
|
test_line($win32, $_, $tprefix, $fips_tests{$1});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print STDERR "WARNING: unrecognized filename $_\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif (-d "$_")
|
||||||
|
{
|
||||||
|
if (/$filter.*req$/i)
|
||||||
|
{
|
||||||
|
test_dir($win32, $_);
|
||||||
|
}
|
||||||
|
recurse_test($win32, $tprefix, $filter, $_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dirh);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub test_dir
|
sub test_dir
|
||||||
{
|
{
|
||||||
my ($win32, $tdir) = @_;
|
my ($win32, $req) = @_;
|
||||||
|
my $rsp = $req;
|
||||||
|
$rsp =~ s/req$/rsp/;
|
||||||
if ($win32)
|
if ($win32)
|
||||||
{
|
{
|
||||||
my $rsp = "$tvprefix$tvdir\\$tdir\\rsp";
|
$rsp =~ tr|/|\\|;
|
||||||
print OUT <<END;
|
print OUT <<END;
|
||||||
|
|
||||||
echo $tdir tests
|
echo Running tests in $req
|
||||||
if exist $rsp rd /s /q $rsp
|
if exist "$rsp" rd /s /q "$rsp"
|
||||||
md $rsp
|
md $rsp
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my $rsp = "$tvdir/$tdir/rsp";
|
|
||||||
print OUT <<END;
|
print OUT <<END;
|
||||||
|
|
||||||
# $tdir tests
|
echo Running tests in "$req"
|
||||||
rm -rf $rsp
|
rm -rf "$rsp"
|
||||||
mkdir $rsp
|
mkdir "$rsp"
|
||||||
|
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
@@ -195,38 +440,56 @@ END
|
|||||||
|
|
||||||
sub test_line
|
sub test_line
|
||||||
{
|
{
|
||||||
my ($win32, $tdir, $fprefix, $tcmd) = @_;
|
my ($win32, $req, $tprefix, $tcmd) = @_;
|
||||||
if ($fprefix =~ /\@/)
|
if ($tcmd =~ /-f$/)
|
||||||
{
|
|
||||||
foreach(<$tvprefix$tvdir/$tdir/req/*.req>)
|
|
||||||
{
|
{
|
||||||
if ($win32)
|
if ($win32)
|
||||||
{
|
{
|
||||||
$_ =~ tr|/|\\|;
|
$req =~ tr|/|\\|;
|
||||||
print OUT "$tprefix$tcmd $_\n";
|
print OUT "$tprefix$tcmd \"$req\"\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print OUT <<END;
|
print OUT <<END;
|
||||||
${shwrap_prefix}shlib_wrap.sh $tprefix$tcmd $_ || { echo $tcmd failure ; exit 1
|
${shwrap_prefix}shlib_wrap.sh $tprefix$tcmd "$req" || { echo "$req failure" ; exit 1
|
||||||
}
|
}
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ($tcmd =~ /SALT$/)
|
||||||
|
{
|
||||||
|
open (IN, $req) || die "Can't Open File $req";
|
||||||
|
my $saltlen;
|
||||||
|
while (<IN>)
|
||||||
|
{
|
||||||
|
if (/^\s*#\s*salt\s+len:\s+(\d+)\s+$/i)
|
||||||
|
{
|
||||||
|
my $sl = $1;
|
||||||
|
print STDERR "$req salt length $sl\n" if $debug;
|
||||||
|
$tcmd =~ s/SALT$/$sl/;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close IN;
|
||||||
|
if ($tcmd =~ /SALT$/)
|
||||||
|
{
|
||||||
|
die "Can't detect salt length for $req";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $rsp = $req;
|
||||||
|
$rsp =~ s/req\/([^\/]*).req$/rsp\/$1.rsp/;
|
||||||
if ($win32)
|
if ($win32)
|
||||||
{
|
{
|
||||||
my $req = "$tvprefix$tvdir\\$tdir\\req\\$fprefix.req";
|
$req =~ tr|/|\\|;
|
||||||
my $rsp = "$tvprefix$tvdir\\$tdir\\rsp\\$fprefix.rsp";
|
$rsp =~ tr|/|\\|;
|
||||||
print OUT "$tprefix$tcmd < $req > $rsp\n";
|
print OUT "$tprefix$tcmd < \"$req\" > \"$rsp\"\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my $req = "$tvdir/$tdir/req/$fprefix.req";
|
|
||||||
my $rsp = "$tvdir/$tdir/rsp/$fprefix.rsp";
|
|
||||||
print OUT <<END;
|
print OUT <<END;
|
||||||
if [ -f $req ] ; then ${shwrap_prefix}shlib_wrap.sh $tprefix$tcmd < $req > $rsp || { echo $tcmd failure ; exit 1; } ; fi
|
${shwrap_prefix}shlib_wrap.sh $tprefix$tcmd < "$req" > "$rsp" || { echo "$req failure" ; exit 1; }
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user