svn commit: r348017 - user/ngie/bug-237403/tests/sys/opencrypto

Enji Cooper ngie at FreeBSD.org
Mon May 20 22:21:44 UTC 2019


Author: ngie
Date: Mon May 20 22:21:42 2019
New Revision: 348017
URL: https://svnweb.freebsd.org/changeset/base/348017

Log:
  Fix up KatCCMParser test usage
  
  This applies r346610 to the relevant test methods, along with the needed
  iterator and delayed evaluation of the global reading logic.

Modified:
  user/ngie/bug-237403/tests/sys/opencrypto/cryptodev.py
  user/ngie/bug-237403/tests/sys/opencrypto/cryptotest.py

Modified: user/ngie/bug-237403/tests/sys/opencrypto/cryptodev.py
==============================================================================
--- user/ngie/bug-237403/tests/sys/opencrypto/cryptodev.py	Mon May 20 22:04:01 2019	(r348016)
+++ user/ngie/bug-237403/tests/sys/opencrypto/cryptodev.py	Mon May 20 22:21:42 2019	(r348017)
@@ -413,19 +413,25 @@ class KATParser:
 
             yield values
 
-if sys.version_info[0] < 3:
-    KATParser.next = KATParser.__next__
-
 # The CCM files use a bit of a different syntax that doesn't quite fit
 # the generic KATParser.  In particular, some keys are set globally at
 # the start of the file, and some are set globally at the start of a
 # section.
 class KATCCMParser:
     def __init__(self, fname):
-        self.fp = open(fname)
         self._pending = None
+        self.fname = fname
+        self.fp = None
+
+    def __enter__(self):
+        self.fp = open(self.fname)
         self.read_globals()
+        return self
 
+    def __exit__(self, exc_type, exc_value, exc_tb):
+        if self.fp is not None:
+            self.fp.close()
+
     def read_globals(self):
         self.global_values = {}
         while True:
@@ -485,6 +491,9 @@ class KATCCMParser:
             self.section_values[f] = v
 
     def __iter__(self):
+        return self
+
+    def __next__(self):
         while True:
             if self._pending:
                 line = self._pending
@@ -492,7 +501,7 @@ class KATCCMParser:
             else:
                 line = self.fp.readline()
                 if not line:
-                    return
+                    raise StopIteration
 
             if (line and line[0] == '#') or not line.strip():
                 continue
@@ -521,10 +530,13 @@ class KATCCMParser:
 
             yield values
 
-
 def _spdechex(s):
     return binascii.hexlify(''.join(s.split()))
 
+if sys.version_info[0] < 3:
+    KATCCMParser.next = KATCCMParser.__next__
+    KATParser.next = KATParser.__next__
+
 if __name__ == '__main__':
     if True:
         try:
@@ -540,11 +552,13 @@ if __name__ == '__main__':
             except IOError:
                 pass
     elif False:
-        kp = KATParser('/usr/home/jmg/aesni.testing/format tweak value input - data unit seq no/XTSGenAES128.rsp', [ 'COUNT', 'DataUnitLen', 'Key', 'DataUnitSeqNumber', 'PT', 'CT' ])
-        for mode, ni in kp:
-            print(i, ni)
-            for j in ni:
-                print(j)
+        columns = [ 'COUNT', 'DataUnitLen', 'Key', 'DataUnitSeqNumber', 'PT', 'CT' ]
+        fname = '/usr/home/jmg/aesni.testing/format tweak value input - data unit seq no/XTSGenAES128.rsp'
+        with KATParser(fname, columns) as kp:
+            for mode, ni in kp:
+                print(i, ni)
+                for j in ni:
+                    print(j)
     elif False:
         key = _spdechex('c939cc13397c1d37de6ae0e1cb7c423c')
         iv = _spdechex('00000000000000000000000000000001')

Modified: user/ngie/bug-237403/tests/sys/opencrypto/cryptotest.py
==============================================================================
--- user/ngie/bug-237403/tests/sys/opencrypto/cryptotest.py	Mon May 20 22:04:01 2019	(r348016)
+++ user/ngie/bug-237403/tests/sys/opencrypto/cryptotest.py	Mon May 20 22:21:42 2019	(r348017)
@@ -243,7 +243,11 @@ def GenTestCase(cname):
                     self.assertEqual(r, ct)
 
         def runCCMEncrypt(self, fname):
-            for data in cryptodev.KATCCMParser(fname):
+            with cryptodev.KATCCMParser(fname) as parser:
+                self.runCCMEncryptWithParser(parser)
+
+        def runCCMEncryptWithParser(self, parser):
+            for data in next(parser):
                 Nlen = int(data['Nlen'])
                 if Nlen != 12:
                     # OCF only supports 12 byte IVs
@@ -278,11 +282,15 @@ def GenTestCase(cname):
                     repr(data) + " on " + cname)
 
         def runCCMDecrypt(self, fname):
+            with cryptodev.KATCCMParser(fname) as parser:
+                self.runCCMDecryptWithParser(parser)
+
+        def runCCMDecryptWithParser(self, parser):
             # XXX: Note that all of the current CCM
             # decryption test vectors use IV and tag sizes
             # that aren't supported by OCF none of the
             # tests are actually ran.
-            for data in cryptodev.KATCCMParser(fname):
+            for data in next(parser):
                 Nlen = int(data['Nlen'])
                 if Nlen != 12:
                     # OCF only supports 12 byte IVs


More information about the svn-src-user mailing list