Python 2 is no longer supported by the Python upstream project, so upgrade TPM2 tests to Python 3.
Signed-off-by: Pengfei Xu pengfei.xu@intel.com --- tools/testing/selftests/tpm2/test_smoke.sh | 4 +- tools/testing/selftests/tpm2/test_space.sh | 2 +- tools/testing/selftests/tpm2/tpm2.py | 56 +++++++++++----------- tools/testing/selftests/tpm2/tpm2_tests.py | 39 +++++++-------- 4 files changed, 52 insertions(+), 49 deletions(-)
diff --git a/tools/testing/selftests/tpm2/test_smoke.sh b/tools/testing/selftests/tpm2/test_smoke.sh index 663062701d5a..d05467f6d258 100755 --- a/tools/testing/selftests/tpm2/test_smoke.sh +++ b/tools/testing/selftests/tpm2/test_smoke.sh @@ -6,8 +6,8 @@ ksft_skip=4
[ -f /dev/tpm0 ] || exit $ksft_skip
-python -m unittest -v tpm2_tests.SmokeTest -python -m unittest -v tpm2_tests.AsyncTest +python3 -m unittest -v tpm2_tests.SmokeTest +python3 -m unittest -v tpm2_tests.AsyncTest
CLEAR_CMD=$(which tpm2_clear) if [ -n $CLEAR_CMD ]; then diff --git a/tools/testing/selftests/tpm2/test_space.sh b/tools/testing/selftests/tpm2/test_space.sh index 36c9d030a1c6..151c64e8ee9f 100755 --- a/tools/testing/selftests/tpm2/test_space.sh +++ b/tools/testing/selftests/tpm2/test_space.sh @@ -6,4 +6,4 @@ ksft_skip=4
[ -f /dev/tpmrm0 ] || exit $ksft_skip
-python -m unittest -v tpm2_tests.SpaceTest +python3 -m unittest -v tpm2_tests.SpaceTest diff --git a/tools/testing/selftests/tpm2/tpm2.py b/tools/testing/selftests/tpm2/tpm2.py index d0fcb66a88a6..f34486cd7342 100644 --- a/tools/testing/selftests/tpm2/tpm2.py +++ b/tools/testing/selftests/tpm2/tpm2.py @@ -247,14 +247,14 @@ class ProtocolError(Exception): class AuthCommand(object): """TPMS_AUTH_COMMAND"""
- def __init__(self, session_handle=TPM2_RS_PW, nonce='', session_attributes=0, - hmac=''): + def __init__(self, session_handle=TPM2_RS_PW, nonce=bytes(), + session_attributes=0, hmac=bytes()): self.session_handle = session_handle self.nonce = nonce self.session_attributes = session_attributes self.hmac = hmac
- def __str__(self): + def __bytes__(self): fmt = '>I H%us B H%us' % (len(self.nonce), len(self.hmac)) return struct.pack(fmt, self.session_handle, len(self.nonce), self.nonce, self.session_attributes, len(self.hmac), @@ -268,11 +268,11 @@ class AuthCommand(object): class SensitiveCreate(object): """TPMS_SENSITIVE_CREATE"""
- def __init__(self, user_auth='', data=''): + def __init__(self, user_auth=bytes(), data=bytes()): self.user_auth = user_auth self.data = data
- def __str__(self): + def __bytes__(self): fmt = '>H%us H%us' % (len(self.user_auth), len(self.data)) return struct.pack(fmt, len(self.user_auth), self.user_auth, len(self.data), self.data) @@ -296,8 +296,9 @@ class Public(object): return '>HHIH%us%usH%us' % \ (len(self.auth_policy), len(self.parameters), len(self.unique))
- def __init__(self, object_type, name_alg, object_attributes, auth_policy='', - parameters='', unique=''): + def __init__(self, object_type, name_alg, object_attributes, + auth_policy=bytes(), parameters=bytes(), + unique=bytes()): self.object_type = object_type self.name_alg = name_alg self.object_attributes = object_attributes @@ -305,7 +306,7 @@ class Public(object): self.parameters = parameters self.unique = unique
- def __str__(self): + def __bytes__(self): return struct.pack(self.__fmt(), self.object_type, self.name_alg, @@ -343,7 +344,7 @@ def get_algorithm(name):
def hex_dump(d): d = [format(ord(x), '02x') for x in d] - d = [d[i: i + 16] for i in xrange(0, len(d), 16)] + d = [d[i: i + 16] for i in range(0, len(d), 16)] d = [' '.join(x) for x in d] d = os.linesep.join(d)
@@ -401,7 +402,7 @@ class Client: pcrsel_len = max((i >> 3) + 1, 3) pcrsel = [0] * pcrsel_len pcrsel[i >> 3] = 1 << (i & 7) - pcrsel = ''.join(map(chr, pcrsel)) + pcrsel = ''.join(map(chr, pcrsel)).encode()
fmt = '>HII IHB%us' % (pcrsel_len) cmd = struct.pack(fmt, @@ -443,7 +444,7 @@ class Client: TPM2_CC_PCR_EXTEND, i, len(auth_cmd), - str(auth_cmd), + bytes(auth_cmd), 1, bank_alg, dig)
self.send_cmd(cmd) @@ -457,7 +458,7 @@ class Client: TPM2_RH_NULL, TPM2_RH_NULL, 16, - '\0' * 16, + ('\0' * 16).encode(), 0, session_type, TPM2_ALG_NULL, @@ -472,7 +473,7 @@ class Client:
for i in pcrs: pcr = self.read_pcr(i, bank_alg) - if pcr == None: + if pcr is None: return None x += pcr
@@ -489,7 +490,7 @@ class Client: pcrsel = [0] * pcrsel_len for i in pcrs: pcrsel[i >> 3] |= 1 << (i & 7) - pcrsel = ''.join(map(chr, pcrsel)) + pcrsel = ''.join(map(chr, pcrsel)).encode()
fmt = '>HII IH%usIHB3s' % ds cmd = struct.pack(fmt, @@ -497,7 +498,8 @@ class Client: struct.calcsize(fmt), TPM2_CC_POLICY_PCR, handle, - len(dig), str(dig), + len(dig), + bytes(dig), 1, bank_alg, pcrsel_len, pcrsel) @@ -534,7 +536,7 @@ class Client:
self.send_cmd(cmd)
- def create_root_key(self, auth_value = ''): + def create_root_key(self, auth_value = bytes()): attributes = \ Public.FIXED_TPM | \ Public.FIXED_PARENT | \ @@ -570,11 +572,11 @@ class Client: TPM2_CC_CREATE_PRIMARY, TPM2_RH_OWNER, len(auth_cmd), - str(auth_cmd), + bytes(auth_cmd), len(sensitive), - str(sensitive), + bytes(sensitive), len(public), - str(public), + bytes(public), 0, 0)
return struct.unpack('>I', self.send_cmd(cmd)[10:14])[0] @@ -587,7 +589,7 @@ class Client: attributes = 0 if not policy_dig: attributes |= Public.USER_WITH_AUTH - policy_dig = '' + policy_dig = bytes()
auth_cmd = AuthCommand() sensitive = SensitiveCreate(user_auth=auth_value, data=data) @@ -608,11 +610,11 @@ class Client: TPM2_CC_CREATE, parent_key, len(auth_cmd), - str(auth_cmd), + bytes(auth_cmd), len(sensitive), - str(sensitive), + bytes(sensitive), len(public), - str(public), + bytes(public), 0, 0)
rsp = self.send_cmd(cmd) @@ -635,7 +637,7 @@ class Client: TPM2_CC_LOAD, parent_key, len(auth_cmd), - str(auth_cmd), + bytes(auth_cmd), blob)
data_handle = struct.unpack('>I', self.send_cmd(cmd)[10:14])[0] @@ -653,7 +655,7 @@ class Client: TPM2_CC_UNSEAL, data_handle, len(auth_cmd), - str(auth_cmd)) + bytes(auth_cmd))
try: rsp = self.send_cmd(cmd) @@ -675,7 +677,7 @@ class Client: TPM2_CC_DICTIONARY_ATTACK_LOCK_RESET, TPM2_RH_LOCKOUT, len(auth_cmd), - str(auth_cmd)) + bytes(auth_cmd))
self.send_cmd(cmd)
@@ -693,7 +695,7 @@ class Client: more_data, cap, cnt = struct.unpack('>BII', rsp[:9]) rsp = rsp[9:]
- for i in xrange(0, cnt): + for i in range(0, cnt): handle = struct.unpack('>I', rsp[:4])[0] handles.append(handle) rsp = rsp[4:] diff --git a/tools/testing/selftests/tpm2/tpm2_tests.py b/tools/testing/selftests/tpm2/tpm2_tests.py index 728be7c69b76..9d764306887b 100644 --- a/tools/testing/selftests/tpm2/tpm2_tests.py +++ b/tools/testing/selftests/tpm2/tpm2_tests.py @@ -20,8 +20,8 @@ class SmokeTest(unittest.TestCase): self.client.close()
def test_seal_with_auth(self): - data = 'X' * 64 - auth = 'A' * 15 + data = ('X' * 64).encode() + auth = ('A' * 15).encode()
blob = self.client.seal(self.root_key, data, auth, None) result = self.client.unseal(self.root_key, blob, auth, None) @@ -30,8 +30,8 @@ class SmokeTest(unittest.TestCase): def test_seal_with_policy(self): handle = self.client.start_auth_session(tpm2.TPM2_SE_TRIAL)
- data = 'X' * 64 - auth = 'A' * 15 + data = ('X' * 64).encode() + auth = ('A' * 15).encode() pcrs = [16]
try: @@ -58,14 +58,15 @@ class SmokeTest(unittest.TestCase): self.assertEqual(data, result)
def test_unseal_with_wrong_auth(self): - data = 'X' * 64 - auth = 'A' * 20 + data = ('X' * 64).encode() + auth = ('A' * 20).encode() rc = 0
blob = self.client.seal(self.root_key, data, auth, None) try: - result = self.client.unseal(self.root_key, blob, auth[:-1] + 'B', None) - except ProtocolError, e: + result = self.client.unseal(self.root_key, blob, + auth[:-1] + 'B'.encode(), None) + except ProtocolError as e: rc = e.rc
self.assertEqual(rc, tpm2.TPM2_RC_AUTH_FAIL) @@ -73,8 +74,8 @@ class SmokeTest(unittest.TestCase): def test_unseal_with_wrong_policy(self): handle = self.client.start_auth_session(tpm2.TPM2_SE_TRIAL)
- data = 'X' * 64 - auth = 'A' * 17 + data = ('X' * 64).encode() + auth = ('A' * 17).encode() pcrs = [16]
try: @@ -91,7 +92,7 @@ class SmokeTest(unittest.TestCase): # This should succeed.
ds = tpm2.get_digest_size(tpm2.TPM2_ALG_SHA1) - self.client.extend_pcr(1, 'X' * ds) + self.client.extend_pcr(1, ('X' * ds).encode())
handle = self.client.start_auth_session(tpm2.TPM2_SE_POLICY)
@@ -108,7 +109,7 @@ class SmokeTest(unittest.TestCase):
# Then, extend a PCR that is part of the policy and try to unseal. # This should fail. - self.client.extend_pcr(16, 'X' * ds) + self.client.extend_pcr(16, ('X' * ds).encode())
handle = self.client.start_auth_session(tpm2.TPM2_SE_POLICY)
@@ -119,7 +120,7 @@ class SmokeTest(unittest.TestCase): self.client.policy_password(handle)
result = self.client.unseal(self.root_key, blob, auth, handle) - except ProtocolError, e: + except ProtocolError as e: rc = e.rc self.client.flush_context(handle) except: @@ -130,13 +131,13 @@ class SmokeTest(unittest.TestCase):
def test_seal_with_too_long_auth(self): ds = tpm2.get_digest_size(tpm2.TPM2_ALG_SHA1) - data = 'X' * 64 - auth = 'A' * (ds + 1) + data = ('X' * 64).encode() + auth = ('A' * (ds + 1)).encode()
rc = 0 try: blob = self.client.seal(self.root_key, data, auth, None) - except ProtocolError, e: + except ProtocolError as e: rc = e.rc
self.assertEqual(rc, tpm2.TPM2_RC_SIZE) @@ -152,7 +153,7 @@ class SmokeTest(unittest.TestCase): 0xDEADBEEF)
self.client.send_cmd(cmd) - except IOError, e: + except IOError as e: rejected = True except: pass @@ -212,7 +213,7 @@ class SmokeTest(unittest.TestCase): self.client.tpm.write(cmd) rsp = self.client.tpm.read()
- except IOError, e: + except IOError as e: # read the response rsp = self.client.tpm.read() rejected = True @@ -283,7 +284,7 @@ class SpaceTest(unittest.TestCase): rc = 0 try: space1.send_cmd(cmd) - except ProtocolError, e: + except ProtocolError as e: rc = e.rc
self.assertEqual(rc, tpm2.TPM2_RC_COMMAND_CODE |
On Fri, Jun 26, 2020 at 11:40:52AM +0800, Pengfei Xu wrote:
Python 2 is no longer supported by the Python upstream project, so upgrade TPM2 tests to Python 3.
Signed-off-by: Pengfei Xu pengfei.xu@intel.com
I think that it's perfect now. Thank you.
Also
1. I checked that scripts/checkpatch.pl did not report any errors. 2. sudo python3 -m unittest -v tpm2_tests.SmokeTest 3. sudo python3 -m unittest -v tpm2_tests.SpaceTest
Reviewed-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com Tested-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com
Shuah, I could pick this up after your PR (with my earlier fixes) lands to mainline, and sort out possible merge conflicts if they uprise. Is this fine by you?
/Jarkko
On 7/2/20 1:44 PM, Jarkko Sakkinen wrote:
On Fri, Jun 26, 2020 at 11:40:52AM +0800, Pengfei Xu wrote:
Python 2 is no longer supported by the Python upstream project, so upgrade TPM2 tests to Python 3.
Signed-off-by: Pengfei Xu pengfei.xu@intel.com
I think that it's perfect now. Thank you.
Also
- I checked that scripts/checkpatch.pl did not report any errors.
- sudo python3 -m unittest -v tpm2_tests.SmokeTest
- sudo python3 -m unittest -v tpm2_tests.SpaceTest
Reviewed-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com Tested-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com
Shuah, I could pick this up after your PR (with my earlier fixes) lands to mainline, and sort out possible merge conflicts if they uprise. Is this fine by you?
Yes. I will apply them as soon as PR clears and hopefully they can go into rc5.
thanks, -- Shuah
Thanks a lot Jarkko and Shuah!
BR. Thanks!
On 2020-07-02 at 15:32:49 -0600, Shuah Khan wrote:
On 7/2/20 1:44 PM, Jarkko Sakkinen wrote:
On Fri, Jun 26, 2020 at 11:40:52AM +0800, Pengfei Xu wrote:
Python 2 is no longer supported by the Python upstream project, so upgrade TPM2 tests to Python 3.
Signed-off-by: Pengfei Xu pengfei.xu@intel.com
I think that it's perfect now. Thank you.
Also
- I checked that scripts/checkpatch.pl did not report any errors.
- sudo python3 -m unittest -v tpm2_tests.SmokeTest
- sudo python3 -m unittest -v tpm2_tests.SpaceTest
Reviewed-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com Tested-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com
Shuah, I could pick this up after your PR (with my earlier fixes) lands to mainline, and sort out possible merge conflicts if they uprise. Is this fine by you?
Yes. I will apply them as soon as PR clears and hopefully they can go into rc5.
thanks, -- Shuah
On 7/2/20 7:20 PM, Pengfei Xu wrote:
Thanks a lot Jarkko and Shuah!
BR. Thanks!
On 2020-07-02 at 15:32:49 -0600, Shuah Khan wrote:
On 7/2/20 1:44 PM, Jarkko Sakkinen wrote:
On Fri, Jun 26, 2020 at 11:40:52AM +0800, Pengfei Xu wrote:
Python 2 is no longer supported by the Python upstream project, so upgrade TPM2 tests to Python 3.
Signed-off-by: Pengfei Xu pengfei.xu@intel.com
I think that it's perfect now. Thank you.
Also
- I checked that scripts/checkpatch.pl did not report any errors.
- sudo python3 -m unittest -v tpm2_tests.SmokeTest
- sudo python3 -m unittest -v tpm2_tests.SpaceTest
Reviewed-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com Tested-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com
Shuah, I could pick this up after your PR (with my earlier fixes) lands to mainline, and sort out possible merge conflicts if they uprise. Is this fine by you?
I started applying this and then passed.
Doesn't this test fail if python3 isn't installed? Do you have to support both versions?
thanks, -- Shuah
On 7/6/20 2:12 PM, Shuah Khan wrote:
On 7/2/20 7:20 PM, Pengfei Xu wrote:
Thanks a lot Jarkko and Shuah!
BR. Thanks!
On 2020-07-02 at 15:32:49 -0600, Shuah Khan wrote:
On 7/2/20 1:44 PM, Jarkko Sakkinen wrote:
On Fri, Jun 26, 2020 at 11:40:52AM +0800, Pengfei Xu wrote:
Python 2 is no longer supported by the Python upstream project, so upgrade TPM2 tests to Python 3.
Signed-off-by: Pengfei Xu pengfei.xu@intel.com
I think that it's perfect now. Thank you.
Also
- I checked that scripts/checkpatch.pl did not report any errors.
- sudo python3 -m unittest -v tpm2_tests.SmokeTest
- sudo python3 -m unittest -v tpm2_tests.SpaceTest
Reviewed-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com Tested-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com
Shuah, I could pick this up after your PR (with my earlier fixes) lands to mainline, and sort out possible merge conflicts if they uprise. Is this fine by you?
I started applying this and then passed.
Doesn't this test fail if python3 isn't installed? Do you have to support both versions?
Never mind. Tested it on with python2. All is well. Applied to linux-kselftest fixes for Linux 5.8-rc5
thanks, -- Shuah
On Mon, Jul 06, 2020 at 02:32:13PM -0600, Shuah Khan wrote:
On 7/6/20 2:12 PM, Shuah Khan wrote:
On 7/2/20 7:20 PM, Pengfei Xu wrote:
Thanks a lot Jarkko and Shuah!
BR. Thanks!
On 2020-07-02 at 15:32:49 -0600, Shuah Khan wrote:
On 7/2/20 1:44 PM, Jarkko Sakkinen wrote:
On Fri, Jun 26, 2020 at 11:40:52AM +0800, Pengfei Xu wrote:
Python 2 is no longer supported by the Python upstream project, so upgrade TPM2 tests to Python 3.
Signed-off-by: Pengfei Xu pengfei.xu@intel.com
I think that it's perfect now. Thank you.
Also
- I checked that scripts/checkpatch.pl did not report any errors.
- sudo python3 -m unittest -v tpm2_tests.SmokeTest
- sudo python3 -m unittest -v tpm2_tests.SpaceTest
Reviewed-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com Tested-by: Jarkko Sakkinen jarkko.sakkinen@linux.intel.com
Shuah, I could pick this up after your PR (with my earlier fixes) lands to mainline, and sort out possible merge conflicts if they uprise. Is this fine by you?
I started applying this and then passed.
Doesn't this test fail if python3 isn't installed? Do you have to support both versions?
Never mind. Tested it on with python2. All is well. Applied to linux-kselftest fixes for Linux 5.8-rc5
thanks, -- Shuah
OK, great, thanks a lot!
/Jarkko
linux-kselftest-mirror@lists.linaro.org