[Cryptech-Commits] [core/util/keywrap] 76/95: Adding a huge, self testing test case.

git at cryptech.is git at cryptech.is
Wed Mar 25 17:19:15 UTC 2020


This is an automated email from the git hooks/post-receive script.

paul at psgd.org pushed a commit to branch master
in repository core/util/keywrap.

commit 6cfcc1ec5bc0e2c944ec66bd62d58740d2b8823d
Author: Joachim Strömbergson <joachim at secworks.se>
AuthorDate: Tue Sep 11 12:37:28 2018 +0200

    Adding a huge, self testing test case.
---
 src/model/aes_keywrap.py | 83 ++++++++++++++++++++++++--------------------
 src/tb/tb_keywrap.v      | 90 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 135 insertions(+), 38 deletions(-)

diff --git a/src/model/aes_keywrap.py b/src/model/aes_keywrap.py
index 0e74ed8..d8b57fe 100755
--- a/src/model/aes_keywrap.py
+++ b/src/model/aes_keywrap.py
@@ -281,25 +281,25 @@ if __name__ == "__main__":
 
         # Test vectors from NISTs set of test vectors for SP800-38F KWP algorithm.
         # 128 bit key.
-#        def test_kwp_ae_128_1(self):
-#            self.rfc5649_test(K = "7efb9b3964de316e 7245c86186d98b5f",
-#                              Q = "3e",
-#                              C = "116a4054c13b7fea de9c22aa57b3caed")
-#
-#        def test_kwp_ae_128_2(self):
-#            self.rfc5649_test(K = "45c770fc26717507 2d70a38269c54685",
-#                              Q = "cc5fb15a17795c34",
-#                              C = "78ffa3f03b65c55b 812f355730af71ac")
-#
-#        def test_kwp_ae_128_3(self):
-#            self.rfc5649_test(K = "853e2bac0f1e6298 67acea0d2b3c087e",
-#                              Q = "49575527bc59530f be",
-#                              C = "b43781062eb0317e b2dec6329f2d64de 1c33d85570d57db6")
-
-#        def test_kwp_ae_128_4(self):
-#            self.rfc5649_test(K = "c03db3cc1416dcd1 c069a195a8d77e3d",
-#                              Q = "46f87f58cdda4200 f53d99ce2e49bdb7 6212511fe0cd4d0 b5f37a27d45a288",
-#                              C = "57e3b6699c6e8177 59a69492bb7e2cd0 0160d2ebef9bf4d 4eb16fbf798f134 0f6df6558a4fb84cd0")
+        def test_kwp_ae_128_1(self):
+            self.rfc5649_test(K = "7efb9b3964de316e 7245c86186d98b5f",
+                              Q = "3e",
+                              C = "116a4054c13b7fea de9c22aa57b3caed")
+
+        def test_kwp_ae_128_2(self):
+            self.rfc5649_test(K = "45c770fc26717507 2d70a38269c54685",
+                              Q = "cc5fb15a17795c34",
+                              C = "78ffa3f03b65c55b 812f355730af71ac")
+
+        def test_kwp_ae_128_3(self):
+            self.rfc5649_test(K = "853e2bac0f1e6298 67acea0d2b3c087e",
+                              Q = "49575527bc59530f be",
+                              C = "b43781062eb0317e b2dec6329f2d64de 1c33d85570d57db6")
+
+        def test_kwp_ae_128_4(self):
+            self.rfc5649_test(K = "c03db3cc1416dcd1 c069a195a8d77e3d",
+                              Q = "46f87f58cdda4200 f53d99ce2e49bdb7 6212511fe0cd4d0 b5f37a27d45a288",
+                              C = "57e3b6699c6e8177 59a69492bb7e2cd0 0160d2ebef9bf4d 4eb16fbf798f134 0f6df6558a4fb84cd0")
 
         def test_kwp_ae_128_5(self):
             self.rfc5649_test(K = "6b8ba9cc9b31068b a175abfcc60c1338",
@@ -309,25 +309,32 @@ if __name__ == "__main__":
                               C = "aea19443d7f8ad7d 4501c1ecadc6b5e3 f1c23c29eca60890 5f9cabdd46e34a55 e1f7ac8308e75c90 3675982bda99173a 2ba57d2ccf2e01a0 2589f89dfd4b3c7f d229ec91c9d0c46e a5dee3c048cd4611 bfeadc9bf26daa1e 02cb72e222cf3dab 120dd1e8c2dd9bd5 8bbefa5d14526abd 1e8d2170a6ba8283 c243ec2fd5ef0703 0b1ef5f69f9620e4 b17a363934100588 7b9ffc7935335947 03e5dcae67bd0ce7 a3c98ca65815a4d0 67f27e6e66d6636c ebb789732566a52a c3970e14c37310dc 2fcee0e739a16291 029fd2b4d534e304 45474b26711a8b3 [...]
 
 
-#        def test_kwp_ae_256_1(self):
-#            self.rfc5649_test(K = "2800f18237cf8d2b a1dfe361784fd751 9b0fdb0ec73e2ab1 c0b966b9173fc5b5",
-#                              Q = "ad",
-#                              C = "c1eccf2d077a385e 67aaeb35552c893c")
-#
-#        def test_kwp_ae_256_2(self):
-#            self.rfc5649_test(K = "1c997c2bb5a15a45 93e337b3249675d55 7467417917f6bc51 65c9af6a3e29504",
-#                              Q = "3e3eafc50cd4e939",
-#                              C = "163eb9e7dbc8ed00 86dffbc6ab00e329")
-#
-#        def test_kwp_ae_256_3(self):
-#            self.rfc5649_test(K = "8df1533f99be6fe6 0f951057fed1daccd 14bd4e34118f24af 677bbf46bf11fe7",
-#                              Q = "fb36b1f3907fb5ed ce",
-#                              C = "6974d7bae0221b4e d91336c26af77e327 61f6024d8bbf292")
-#
-#        def test_kwp_ae_256_4(self):
-#            self.rfc5649_test(K = "dea4667d911b5c9e c996cdb35da0e29bc 996cbfb0e0a56bac 12fccc334d732eb",
-#                              Q = "25d58d437a56a733 2a18541333201f992 9fccde11b06844c1 9ba1ca224cfd6",
-#                              C = "86d4e258391f15d7 d4f0ab3e15d6f45e6 5dd2f8caf4c67209 63bb8970fc2f3a4 a58dc74674347ec9")
+        def test_kwp_ae_256_1(self):
+            self.rfc5649_test(K = "2800f18237cf8d2b a1dfe361784fd751 9b0fdb0ec73e2ab1 c0b966b9173fc5b5",
+                              Q = "ad",
+                              C = "c1eccf2d077a385e 67aaeb35552c893c")
+
+        def test_kwp_ae_256_2(self):
+            self.rfc5649_test(K = "1c997c2bb5a15a45 93e337b3249675d55 7467417917f6bc51 65c9af6a3e29504",
+                              Q = "3e3eafc50cd4e939",
+                              C = "163eb9e7dbc8ed00 86dffbc6ab00e329")
+
+        def test_kwp_ae_256_3(self):
+            self.rfc5649_test(K = "8df1533f99be6fe6 0f951057fed1daccd 14bd4e34118f24af 677bbf46bf11fe7",
+                              Q = "fb36b1f3907fb5ed ce",
+                              C = "6974d7bae0221b4e d91336c26af77e327 61f6024d8bbf292")
+
+        def test_kwp_ae_256_4(self):
+            self.rfc5649_test(K = "dea4667d911b5c9e c996cdb35da0e29bc 996cbfb0e0a56bac 12fccc334d732eb",
+                              Q = "25d58d437a56a733 2a18541333201f992 9fccde11b06844c1 9ba1ca224cfd6",
+                              C = "86d4e258391f15d7 d4f0ab3e15d6f45e6 5dd2f8caf4c67209 63bb8970fc2f3a4 a58dc74674347ec9")
+
+
+#        # Huge test case. It fails since the expected wrapped object is wrong.
+#        def test_huge_256_1(self):
+#            self.rfc5649_test(K = "55aa55aa55aa55aa" * 4,
+#                              Q = "0101010101010101" * 2040,
+#                              C = "86d4e258391f15d7" * 2042)
 
 
 #        def test_loopback_1(self):
diff --git a/src/tb/tb_keywrap.v b/src/tb/tb_keywrap.v
index 59409e9..4d1c25c 100644
--- a/src/tb/tb_keywrap.v
+++ b/src/tb/tb_keywrap.v
@@ -1055,6 +1055,94 @@ module tb_keywrap();
   endtask // test_kwp_ad_128_2
 
 
+
+  //----------------------------------------------------------------
+  // test_big_wrap_256
+  // Implements wrap test with a huge (16 kB+) data object
+  // and 256 bit key.
+  //----------------------------------------------------------------
+  task test_big_wrap_256;
+    begin : test_big_wrap_256
+      integer i;
+      integer err;
+
+      err = 0;
+
+      tc_ctr = tc_ctr + 1;
+
+      $display("** TC test_big_wrap_256 START.");
+
+      // Write key and keylength, we also want to encrypt/wrap.
+      write_word(ADDR_KEY0,   32'h55aa55aa);
+      write_word(ADDR_KEY1,   32'h55aa55aa);
+      write_word(ADDR_KEY2,   32'h55aa55aa);
+      write_word(ADDR_KEY3,   32'h55aa55aa);
+      write_word(ADDR_KEY4,   32'h55aa55aa);
+      write_word(ADDR_KEY5,   32'h55aa55aa);
+      write_word(ADDR_KEY6,   32'h55aa55aa);
+      write_word(ADDR_KEY7,   32'h55aa55aa);
+      write_word(ADDR_CONFIG, 32'h00000003);
+
+      // Initialize the AES engine (to expand the key).
+      // Wait for init to complete.
+      // Note, not actually needed to wait. We can write R data during init.
+      $display("* Trying to initialize.");
+      write_word(ADDR_CTRL, 32'h00000001);
+      #(2 * CLK_PERIOD);
+      wait_ready();
+      $display("* Init should be done.");
+
+
+      // Set the length or R in blocks.
+      // Write the R bank to be written to.
+      // Write the R blocks to be processed.
+      write_word(ADDR_RLEN,  32'h000007f8);
+
+
+      // Write the data to be wrapped.
+      for (i = 0 ; i < 4080 ; i = i + 1)
+        write_word(MEM_BASE + i, 32'h01010101);
+
+      // Write magic words to A.
+      write_word(ADDR_A0, 32'ha65959a6);
+      write_word(ADDR_A1, 32'h00003fc0);
+
+      // Start wrapping and wait for wrap to complete.
+      $display("* Trying to start processing.");
+      write_word(ADDR_CTRL, 32'h00000002);
+      #(2 * CLK_PERIOD);
+      wait_ready();
+      $display("* Processing should be done.");
+
+
+      // Read and check the A registers.
+      read_word(ADDR_A0);
+      if (read_data != 32'h53179eb9)
+        begin
+          $display("Error A0 after wrap: 0x%08x, expected 0x53179eb9", read_data);
+          err = 1;
+        end
+
+      read_word(ADDR_A1);
+      if (read_data != 32'ha90ce632)
+        begin
+          $display("Error A1 after wrap: 0x%08x, expected 0xa90ce632", read_data);
+          err = 1;
+        end
+
+      if (err)
+        begin
+          $display("test_big_wrap_256 completed with errors.");
+          error_ctr = error_ctr + 1;
+        end
+      else
+        $display("test_big_wrap_256 completed successfully.");
+
+      $display("** TC test_big_wrap_256 END.\n");
+    end
+  endtask // test_big_wrap_256
+
+
   //----------------------------------------------------------------
   // main
   //----------------------------------------------------------------
@@ -1081,6 +1169,8 @@ module tb_keywrap();
       test_kwp_ae_128_2();
       test_kwp_ad_128_2();
 
+      test_big_wrap_256();
+
       display_test_results();
 
       $display("");



More information about the Commits mailing list