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