mkfipsscr.pl 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. #!/usr/local/bin/perl -w
  2. my @fips_tests = (
  3. # FIPS test descriptions
  4. # DSA tests
  5. ["dsa", "PQGGen", "fips_dssvs pqg"],
  6. ["dsa", "KeyPair", "fips_dssvs keypair"],
  7. ["dsa", "SigGen", "fips_dssvs siggen"],
  8. ["dsa", "SigVer", "fips_dssvs sigver"],
  9. # SHA tests
  10. ["sha", "SHA1LongMsg", "fips_shatest"],
  11. ["sha", "SHA1Monte", "fips_shatest"],
  12. ["sha", "SHA1ShortMsg", "fips_shatest"],
  13. ["sha", "SHA224LongMsg", "fips_shatest"],
  14. ["sha", "SHA224Monte", "fips_shatest"],
  15. ["sha", "SHA224ShortMsg", "fips_shatest"],
  16. ["sha", "SHA256LongMsg", "fips_shatest"],
  17. ["sha", "SHA256Monte", "fips_shatest"],
  18. ["sha", "SHA256ShortMsg", "fips_shatest"],
  19. ["sha", "SHA384LongMsg", "fips_shatest"],
  20. ["sha", "SHA384Monte", "fips_shatest"],
  21. ["sha", "SHA384ShortMsg", "fips_shatest"],
  22. ["sha", "SHA512LongMsg", "fips_shatest"],
  23. ["sha", "SHA512Monte", "fips_shatest"],
  24. ["sha", "SHA512ShortMsg", "fips_shatest"],
  25. # AES tests, file search mode
  26. ["aes", "\@dir", "fips_aesavs -f"],
  27. # DES tests, file search mode
  28. ["tdes", "\@dir", "fips_desmovs -f"],
  29. # HMAC
  30. ["hmac", "HMAC", "fips_hmactest"],
  31. # RAND tests
  32. ["rng", "ANSI931_TDES2MCT", "fips_rngvs mct"],
  33. ["rng", "ANSI931_TDES2VST", "fips_rngvs vst"],
  34. # RSA tests
  35. ["rsa", "SigGen15", "fips_rsastest"],
  36. ["rsa", "SigVer15", "fips_rsavtest"],
  37. ["rsa", "SigGenPSS", "fips_rsastest -saltlen 0"],
  38. ["rsa", "SigVerPSS", "fips_rsavtest -saltlen 0"],
  39. ["rsa", "SigGenRSA", "fips_rsastest -x931"],
  40. ["rsa", "SigVerRSA", "fips_rsavtest -x931"],
  41. ["rsa", "KeyGenRSA", "fips_rsagtest"],
  42. ["rsa_salt_62", "SigGenPSS", "fips_rsastest -saltlen 62"],
  43. ["rsa_salt_62", "SigVerPSS", "fips_rsavtest -saltlen 62"]
  44. );
  45. my $lnum = 0;
  46. my $win32 = 0;
  47. my $tvdir = "testvectors";
  48. my $ltdir = "";
  49. foreach (@ARGV)
  50. {
  51. if ($_ eq "--win32")
  52. {
  53. $win32 = 1;
  54. }
  55. elsif (/--dir=(.*)$/)
  56. {
  57. $tvdir = $1;
  58. }
  59. }
  60. if ($win32)
  61. {
  62. open(OUT, ">fipstests.bat");
  63. print OUT <<END;
  64. \@echo off
  65. rem Test vector run script
  66. rem Auto generated by mkfipsscr.pl script
  67. rem Do not edit
  68. END
  69. }
  70. else
  71. {
  72. open(OUT, ">fipstests.sh");
  73. print OUT <<END;
  74. #!/bin/sh
  75. # Test vector run script
  76. # Auto generated by mkfipsscr.pl script
  77. # Do not edit
  78. END
  79. }
  80. foreach(@fips_tests)
  81. {
  82. my ($tdir, $fprefix, $tcmd) = @$_;
  83. $lnum++;
  84. if ($tdir ne $ltdir)
  85. {
  86. $ltdir = $tdir;
  87. test_dir($win32, $ltdir);
  88. }
  89. test_line($win32, $tdir, $fprefix, $tcmd);
  90. }
  91. sub test_dir
  92. {
  93. my ($win32, $tdir) = @_;
  94. if ($win32)
  95. {
  96. my $rsp = "..\\fips-1.0\\$tvdir\\$tdir\\rsp";
  97. print OUT <<END;
  98. echo $tdir tests
  99. rd /s /q $rsp
  100. md $rsp
  101. END
  102. }
  103. else
  104. {
  105. my $rsp = "$tvdir/$tdir/rsp";
  106. print OUT <<END;
  107. # $tdir tests
  108. rm -rf $rsp
  109. mkdir $rsp
  110. END
  111. }
  112. }
  113. sub test_line
  114. {
  115. my ($win32, $tdir, $fprefix, $tcmd) = @_;
  116. if ($fprefix =~ /\@/)
  117. {
  118. foreach(<$tvdir/$tdir/req/*.req>)
  119. {
  120. if ($win32)
  121. {
  122. print OUT ".\\$tcmd ../fips-1.0/${_}\n";
  123. }
  124. else
  125. {
  126. print OUT <<END;
  127. ../util/shlib_wrap.sh ../test/$tcmd $_
  128. END
  129. }
  130. }
  131. return;
  132. }
  133. if ($win32)
  134. {
  135. my $req = "..\\fips-1.0\\$tvdir\\$tdir\\req\\$fprefix.req";
  136. my $rsp = "..\\fips-1.0\\$tvdir\\$tdir\\rsp\\$fprefix.rsp";
  137. print OUT ".\\$tcmd < $req > $rsp\n";
  138. END
  139. }
  140. else
  141. {
  142. my $req = "$tvdir/$tdir/req/$fprefix.req";
  143. my $rsp = "$tvdir/$tdir/rsp/$fprefix.rsp";
  144. print OUT <<END;
  145. if [ -f $req ] ; then ../util/shlib_wrap.sh ../test/$tcmd < $req > $rsp; fi
  146. END
  147. }
  148. }