Merge pull request #9 from dcbullock/master
[asdcplib.git] / src / fips-186-test-harness.pl
index a5d37787fc24f5dd6cfc8da5b906398a5b636ff2..622615969252d8d98dd90f4ceece2c4f2786eb4d 100755 (executable)
@@ -1,7 +1,6 @@
-#!/usr/bin/perl
+#!/usr/bin/env perl
 #
-#
-# Copyright (c) 2003-2008, John Hurst
+# Copyright (c) 2003-2009, John Hurst
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -39,19 +38,36 @@ my $rng_prog = $ARGV[0];
 die "Expecting RNG program name as argument" unless ( -x $rng_prog );
 
 my $test_count = 0;
+my $rounds = 2;
+my $i = 0;
 
 while ( my $line = <DATA> ) {
-    if ( $line =~ /^XKey = (\w{40})/ ) {
-       my $XKey = $1;
-       my $XSeed = <DATA>;
-       my $Xval = <DATA>;
-       die if ( $Xval !~ /^X = (\w{80})/ );
-       $Xval = $1;
-       system("$rng_prog $XKey $Xval");
-       die "Test vector failure at test $test_count: $XKey $ Xval\n" if ( $? != 0 );
-       print STDERR '.';
-       $test_count++;
-    }
+  if ( $line =~ /^<MCT>/ ) {
+    $rounds = 10000;
+    next;
+  }
+
+#  next if ($rounds == 2);
+
+  if ( $line =~ /^b = (\d+)/ ) {
+    my $vlen = $1;
+
+    my $XKey = <DATA>;
+    die if ( $XKey !~ /^XKey = (\w+)/ );
+    $XKey = $1;
+
+    my $XSeed = <DATA>;
+
+    my $Xval = <DATA>;
+    die if ( $Xval !~ /^X = (\w+)/ );
+    $Xval = $1;
+
+    system("$rng_prog $rounds $vlen $XKey $Xval");
+    my $ret = $?;
+    die "\nTest vector failure at test $test_count: r=$rounds b=$vlen k=$XKey v=$Xval ($ret)\n" if ( $ret != 0 );
+    print STDERR '.';
+    $test_count++;
+  }
 }
 
 print STDERR "\nfound $test_count test cases\n"
@@ -1021,3 +1037,282 @@ XKey = ffffffffffffffffffffffffffffffffffffffff
 XSeed = 0000000000000000000000000000000000000000
 X = ce8dd97eb53de8b8997d71af15eed31ffc822deb269cb566a0a9645811a3d9c977c5d8fbe8ddf6bb
 
+#  CAVS 5.0
+#  "FIPS 186 - General Purpose" information for "rngtestvalues"
+#  Generators selected: Xorg Xchange
+#  G-Functions selected: SHA-1 DES
+#  Generated on Wed Feb 08 15:20:53 2006
+
+<MCT>
+[Xorg - SHA1]
+
+COUNT = 0
+b = 160
+XKey = 1c670cfd3b421f21fdb0f3885a204eb659ca9740
+XSeed = 0000000000000000000000000000000000000000
+X = e5121116d1a99e62902ffd279261500e0e16b0f3
+
+COUNT = 1
+b = 168
+XKey = d87f639afea75ba44bbc6bd0fb5ac84a12c2c6ed95
+XSeed = 000000000000000000000000000000000000000000
+X = 09328f082e48135784d39f9f0ec67911ef708788
+
+COUNT = 2
+b = 176
+XKey = f0ecfa38f93823dcf6c918432d1d72731f02d74cbafa
+XSeed = 00000000000000000000000000000000000000000000
+X = 1675536299b8a05236cc460944e691e952adbb80
+
+COUNT = 3
+b = 184
+XKey = 574508895ccfdcf4a1ad8284ad94eb3321f5d1a4a6244b
+XSeed = 0000000000000000000000000000000000000000000000
+X = f90c11ae695df29ae707a187a2eeeea92dcbd84b
+
+COUNT = 4
+b = 192
+XKey = 6e9d90254b9534d3ae680c9ab38d434114a58715fd00758b
+XSeed = 000000000000000000000000000000000000000000000000
+X = d562e8d50a86de701d6fb076a378282bae721849
+
+COUNT = 5
+b = 200
+XKey = 3477f6949b5278183169e9decf0010e683be87afe3b1b357a1
+XSeed = 00000000000000000000000000000000000000000000000000
+X = d954bc9c0537484f8ec13f4dde1905e3441dbac0
+
+COUNT = 6
+b = 208
+XKey = 533acb38c61100b152c326c7b4ea027df73b07c94309ca3cf60a
+XSeed = 0000000000000000000000000000000000000000000000000000
+X = 14b266d8c1fd4871104dd4f91c6d6d15c8e76c37
+
+COUNT = 7
+b = 216
+XKey = 21392b55c4e3af82523cdf81eaf1868055bd3e3ea18236c30b9833
+XSeed = 000000000000000000000000000000000000000000000000000000
+X = 7318576beb22084349f749d7ca615f1333f6bff4
+
+COUNT = 8
+b = 224
+XKey = b33ba749e3057b7a8aa61f3c78771655710157323bc1fecef62842d5
+XSeed = 00000000000000000000000000000000000000000000000000000000
+X = a24fa133c2e5ae5a2378af37e6097e1b5f503dd0
+
+COUNT = 9
+b = 232
+XKey = 2c685c7482c85777d9de02ee550fc2f5aa0e0f76319f27043ba10407a5
+XSeed = 0000000000000000000000000000000000000000000000000000000000
+X = fceae60fcdda5782a43916d23c133d4aa59588f9
+
+COUNT = 10
+b = 240
+XKey = aaa6e9a6525a0dbebf306a487f168bb31411ac5b3d761e5b775deda2c253
+XSeed = 000000000000000000000000000000000000000000000000000000000000
+X = c87d4f6f1dfff1c7c0517a3ba478ea3db40c915d
+
+COUNT = 11
+b = 248
+XKey = 5061d23eb06b7844fcad7e0b55d6abd6455775cca2bc0cf1b53d9a559c90c9
+XSeed = 00000000000000000000000000000000000000000000000000000000000000
+X = 96116ca45240c44249b8265d736572a3555d4bd8
+
+COUNT = 12
+b = 256
+XKey = b436c1e06d76015c85d145cfb2f513f2dbffa7682b3ea09f6539f8f777f33926
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000
+X = 8123d23bdb6379a8383a25fda023af25ec0dd8d0
+
+COUNT = 13
+b = 264
+XKey = b6fb9e128dc5985f3a49ab84ee0336f8954318a9b681bbef9bf052beb3555e2134
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000
+X = dcbd4dc592d2eadff08c532614ae28c030e9b60c
+
+COUNT = 14
+b = 272
+XKey = fe9e57d121e2bd431c41f1f757d2bd5b141c98daa47e795fdbcfed15c14168728a8b
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000
+X = 1945ac66fd792852da50b72e33bac69ed3ce9bbd
+
+COUNT = 15
+b = 280
+XKey = 635debc0f6a35bea4b6de3db176b06600370d9840375feb1e3e1d6172308f35104f1cc
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000
+X = 72b363e7676288180c41d42a0934714c745bdbb0
+
+COUNT = 16
+b = 288
+XKey = 66682eeb3ba396a7654d5e3e1230376d9c8d710f00bb13e493112a92f00661e93597d26b
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000
+X = 1d7d5a287a2198fc2ed407838521c6be1d7cd11d
+
+COUNT = 17
+b = 296
+XKey = 575289a193c212b874e690bf22d807b568c63a66b9eaccf871bca5c05e66975a7f7841f80b
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000
+X = 5c9f11ba4939c6ce67bdc0c35aaa418151b0b9d0
+
+COUNT = 18
+b = 304
+XKey = 6df2a963884ec9a615e398d010cc91026060845b01c0de2362ac2b490c9bd910850a3f057414
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 6a244d9944384feb512d4e080d308096ddfe8066
+
+COUNT = 19
+b = 312
+XKey = 2c4b6df63cb790996f0c032657e608a76b2af9d9ff30df77732841bbaab63a23bde0ce71f12a7e
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = f2c6c8fe88d73a1940d0de419ffebc5b2070c5c7
+
+COUNT = 20
+b = 320
+XKey = dfb6bfe8d24fd6395c811928a7953aee1a2de5d6e484f69fd9f7e9227ec591355f130dcea933f96c
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 54c4809627894c7be99d752be77a41a71e1177bc
+
+COUNT = 21
+b = 328
+XKey = 5ae22f47f7301856ada0553c6191977adfb39b64791df5d4f19a0d1f9a446748b95527743139d49e60
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 44ed62cc4a46740532b1178c75919e55598a3094
+
+COUNT = 22
+b = 336
+XKey = ee2ef8ae409bc544bda6637166568b93721db4d7a9b194ac0e17e378c000628922591c4e3a1eebc7576f
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 98e18826178499f6b5e9f7dbbc7fbb5ea8ece400
+
+COUNT = 23
+b = 344
+XKey = d071c39a5d2e9a2aaf716f1ad84c16ba74411d3597615dcd04b6cf68a0dfa14c26fa89271bc75a520509d5
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 5f8264026559da35e0bea1fdab8bc967079b1fd9
+
+COUNT = 24
+b = 352
+XKey = 369b80c1a1c6fb9d69a01c727cece3547371544418631d4a252079c44f1d54fd831fb00170ae47b045c67212
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 148e0ecee150cb59b1ee70586e0f493b74dda65d
+
+COUNT = 25
+b = 360
+XKey = d0a014bda380b171255b36e40f20a69821957dae52eff01229a077f36b708976f6cfa6abed699bc015fc02747f
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 1a67a8bcdffd0e07606288fb0bb0726b36b259bf
+
+COUNT = 26
+b = 368
+XKey = aae6ae0f2eb856f812733764e7ec1cfc7d49e92e61703738a5c03f83dffef933749285fc17f3c9378c605c35b2d1
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 10b3ebf6cd54131ce1e902829a0ab251f193eb24
+
+COUNT = 27
+b = 376
+XKey = f36b395eb02579985875f6183210e452b91c20bd58e4172772d1e44ba596b8a550aa7f8552fbc06315e1c572cc50fd
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 110bb9281f2e1ffac8252473be9f1ef2629513f0
+
+COUNT = 28
+b = 384
+XKey = 7af1449287ffbf7428814dd6217aee8695d7f463760a121e40f6b642e70b98720db293f279ebb56ac53492e656aedd20
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 08ea8feab6b529788d904bdbd43b9db583c95b3c
+
+COUNT = 29
+b = 392
+XKey = 94a62f890e754bda69b6d2a71a9c7cda337b99902d80f76ee4a00638e3ce3a9fe271b15b8d15167a8760c5f8af482f8fa2
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = c65ba4525e3bb1f083ac1bd971d952d8fb4ea820
+
+COUNT = 30
+b = 400
+XKey = 417891bdbf562d87c93ca9c53aac522161c793e8a762bcbe725b0391492dc9cb38c31ecc768a869745cafdcb1a363ad6fec2
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 09ffcbaca867d86fb5a90e44ad5d60b96b52e090
+
+COUNT = 31
+b = 408
+XKey = 999a1eeca775bdbe61f3772f6cfc28ff95f13745ac35100e95ecd4479c024edd096f2a22f4ba61735bbcf81872a7ea6b3a4763
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = f2fef1651d92847c0facc14799153aac54289afc
+
+COUNT = 32
+b = 416
+XKey = 41f80eca8e883ceb6a772453131c922d542749c2a93248a4a4994c2c8f8c96275362eecd9930e8f32e9b6681acea5e255760de49
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = e750fd8a3815189e7b1ffba65760c6896773195f
+
+COUNT = 33
+b = 424
+XKey = 7eae482dcfa5e02acf05e105db48283f440640439a24ca3b2a482228c58f3f32c383db3c4847d4bcc615d3cac3eb2b77dd80045f0b
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 26e00f1ea68d5bde0c820837c18f564347507dc9
+
+COUNT = 34
+b = 432
+XKey = d8143b6190d098d8c0b9af5c175344b602e6d086732e6b96e054ef688e1d5b110f62754a0ac0b4c53a905cbdb919ebd17f05b4122512
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 60ac25c92a8c7da14edfebde25a97646474c9009
+
+COUNT = 35
+b = 440
+XKey = 6f54f8051f7c172493f282be71942d4a65285560bca1b61b2f9effc1fc3483a63ced314d7010c6d15d2341831aaf97d56743a97740bb73
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 1130c281c88ecad60736ac5bf6c9db4fc2e8334a
+
+COUNT = 36
+b = 448
+XKey = ca82c17fc3ac423e00c8b7c6f48bd0976d9e60c973f460fe735c37959d5239208a1b6d18221193d0bd3b65a888201e832bdd397ba8767bd3
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 8da6754cadeb3f9121239381de1ff40061abe07e
+
+COUNT = 37
+b = 456
+XKey = 058f0d2e2a8b17581ab00d8b7ed2fef2e21dfaa60b120fd28acc771591880f2706640bc0d667e8b58cc2a3642255295316750e14c1ed816ce5
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 5fd13163fb1fe4417fe96d7fb13ef2577f5868b2
+
+COUNT = 38
+b = 464
+XKey = a8806c3e36700c4b8b45555dc9679bcb036fa3924fe85a3d1d57c708c77a3f4469ced8fdf25320db7b930e46d8e138cd6ddf47c94343a83d5cda
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 5704c42642beaa28896816eb196d2cf6b3de61f6
+
+COUNT = 39
+b = 472
+XKey = 1a02d007f03b34ed427631283eb614db4d521f555136e7e42b4cfbee8134c63dbe3bb79b5a8b9f9f5b9f5ac61cfab1c54d197f1e3ba613f251eed6
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = f6f672ba423d82f4e86d1c7a41b4547972e859de
+
+COUNT = 40
+b = 480
+XKey = 28c1adb2742ac3b9c15d22f737ac5ffd34d0e5d79ee6ea3677b7a2cfb13cb2fe4462e7af7f0a287e9b54a91d961d62f63fc6c0128d379a3a3424665c
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 4596045105a7e36296b9ad7353723ba306353004
+
+COUNT = 41
+b = 488
+XKey = 195adc728e0ec4f0b210b57658b448860e219231ad9d56812e0b7815bfb1b50b163f9223060d922050a5ac72bb81fc136716b9af5e1167076ce04e9731
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 3e573f2a097c3568c9cf52f20eb141e63f9f776e
+
+COUNT = 42
+b = 496
+XKey = 866db552cf4745908fdf35d4c0967428d56039b1f223df315c61f2d12f178a1e4fe5d751a06efed37a022300577bc72ccf6455e3c761f775e5caaeb2479a
+XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 0077207b39f67aa80cb2ea90818440d4e5ccc414
+
+COUNT = 43
+b = 504
+XKey = 641846ce2ba4396a391651179231d553c9061c6619bd4545b29228b6511e8bb513d89a168bdb916d12eabc2b5eb1a109574d7caa250feb7b8e7debdf7f9a03
+XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = 2166c4e99be5dc0cdc747c7c6d27105a8e115ba5
+
+COUNT = 44
+b = 512
+XKey = 5cbb6d193c13bd62f5658ed4304774c6b1faf5b3dce432487840cabab415fb5d67640a739ca6e5414e760869708a9d7331e7e7ad7d55e035c711215406c3030d
+XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+X = a2322c754fe789af3afae00b9fbbbd613076ea9f
+