[Cryptech-Commits] [core/sha1] 01/01: Update of the Python model to support NIST dual block message test as well as a test case with a huge message.

git at cryptech.is git at cryptech.is
Tue Apr 1 07:48:25 UTC 2014


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

joachim at secworks.se pushed a commit to branch master
in repository core/sha1.

commit 077cfbc902c18fae72c79090a5ad5924fe6a2a1a
Author: Joachim Strömbergson <joachim at secworks.se>
Date:   Tue Apr 1 09:47:34 2014 +0200

    Update of the Python model to support NIST dual block message test as well as a test case with a huge message.
---
 src/model/python/sha1.py | 57 +++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 52 insertions(+), 5 deletions(-)

diff --git a/src/model/python/sha1.py b/src/model/python/sha1.py
index 4cb74bd..9bae18a 100755
--- a/src/model/python/sha1.py
+++ b/src/model/python/sha1.py
@@ -10,7 +10,7 @@
 #
 #
 # Author: Joachim Strömbergson
-# (c) 2014 SUNET
+# (c) 2014, SUNET
 # 
 # Redistribution and use in source and binary forms, with or 
 # without modification, are permitted provided that the following 
@@ -186,13 +186,14 @@ def compare_digests(digest, expected):
 # If executed tests the ChaCha class using known test vectors.
 #-------------------------------------------------------------------
 def main():
-    print("Testing the SHA-256 Python model.")
-    print("---------------------------------")
+    print("Testing the SHA-1 Python model.")
+    print("-------------------------------")
     print
 
-    my_sha1 = SHA1(verbose=1);
+    my_sha1 = SHA1(verbose=0);
 
     # TC1: NIST testcase with message "abc"
+    print("TC1: Single block NIST test case.")
     TC1_block = [0x61626380, 0x00000000, 0x00000000, 0x00000000, 
                  0x00000000, 0x00000000, 0x00000000, 0x00000000,
                  0x00000000, 0x00000000, 0x00000000, 0x00000000,
@@ -200,12 +201,58 @@ def main():
     
     TC1_expected = [0xa9993e36, 0x4706816a, 0xba3e2571,
                     0x7850c26c, 0x9cd0d89d]
-    
     my_sha1.init()
     my_sha1.next(TC1_block)
     my_digest = my_sha1.get_digest()
     compare_digests(my_digest, TC1_expected)
+    print("")
+
+
+    # TC2: NIST testcase with message two block message.
+    print("TC2: Dual block NIST test case.")
+    TC2_1_block = [0x61626364, 0x62636465, 0x63646566, 0x64656667,
+                   0x65666768, 0x66676869, 0x6768696A, 0x68696A6B,
+                   0x696A6B6C, 0x6A6B6C6D, 0x6B6C6D6E, 0x6C6D6E6F,
+                   0x6D6E6F70, 0x6E6F7071, 0x80000000, 0x00000000]
+
+
+    TC2_2_block = [0x00000000, 0x00000000, 0x00000000, 0x00000000,
+                   0x00000000, 0x00000000, 0x00000000, 0x00000000,
+                   0x00000000, 0x00000000, 0x00000000, 0x00000000,
+                   0x00000000, 0x00000000, 0x00000000, 0x000001C0]
+
+    TC2_1_expected = [0xF4286818, 0xC37B27AE, 0x0408F581,
+                      0x84677148, 0x4A566572]
+
+    TC2_2_expected = [0x84983E44, 0x1C3BD26E, 0xBAAE4AA1,
+                      0xF95129E5, 0xE54670F1]
+
+    my_sha1.init()
+    my_sha1.next(TC2_1_block)
+    my_digest = my_sha1.get_digest()
+    compare_digests(my_digest, TC2_1_expected)
+    my_sha1.next(TC2_2_block)
+    my_digest = my_sha1.get_digest()
+    compare_digests(my_digest, TC2_2_expected)
+    print("")
+
 
+    # TC3: Huge message with n blocks
+    n = 10000
+    print("TC3: Huge message with %d blocks test case." % n)
+    TC3_block = [0xaa55aa55, 0xdeadbeef, 0x55aa55aa, 0xf00ff00f,
+                 0xaa55aa55, 0xdeadbeef, 0x55aa55aa, 0xf00ff00f,
+                 0xaa55aa55, 0xdeadbeef, 0x55aa55aa, 0xf00ff00f,
+                 0xaa55aa55, 0xdeadbeef, 0x55aa55aa, 0xf00ff00f]
+
+    TC3_expected = [0xea2ebc79, 0x35516705, 0xde1e1467,
+                    0x31e55587, 0xa0038725]
+
+    my_sha1.init()
+    for i in range(n):
+        my_sha1.next(TC3_block)
+    my_digest = my_sha1.get_digest()
+    compare_digests(my_digest, TC3_expected)
     
 
 #-------------------------------------------------------------------



More information about the Commits mailing list