[v3] selftests: tpm: upgrade TPM2 tests from Python 2 to Python 3
diff mbox series

Message ID 20200625163754.7165-1-pengfei.xu@intel.com
State Superseded
Headers show
Series
  • [v3] selftests: tpm: upgrade TPM2 tests from Python 2 to Python 3
Related show

Commit Message

Pengfei Xu June 25, 2020, 4:37 p.m. UTC
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(-)

Comments

Jarkko Sakkinen June 25, 2020, 9:51 p.m. UTC | #1
On Fri, Jun 26, 2020 at 12:37:54AM +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>
> ---
>  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..88a0e7776a23 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=''.encode(),
> +                 session_attributes=0, hmac=''.encode()):

Initialize these just directly as empty bytes objects (e.g.
nonce=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=''.encode(), data=''.encode()):

Ditto.

>          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=''.encode(), parameters=''.encode(),
> +                 unique=''.encode()):

Ditto.

>          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 = ''.encode()):
>          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 = ''.encode()
>  
>          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 |
> -- 
> 2.17.1
> 

Otherwise, starts to look good.

/Jarkko
Pengfei Xu June 26, 2020, 3:34 a.m. UTC | #2
Hi Jarkko,
  I missed this improvement in previous mail.
  Will do.

Thanks!
BR.

On 2020-06-26 at 00:51:45 +0300, Jarkko Sakkinen wrote:
> On Fri, Jun 26, 2020 at 12:37:54AM +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>
> > ---
> >  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..88a0e7776a23 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=''.encode(),
> > +                 session_attributes=0, hmac=''.encode()):
> 
> Initialize these just directly as empty bytes objects (e.g.
> nonce=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=''.encode(), data=''.encode()):
> 
> Ditto.
> 
> >          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=''.encode(), parameters=''.encode(),
> > +                 unique=''.encode()):
> 
> Ditto.
> 
> >          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 = ''.encode()):
> >          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 = ''.encode()
> >  
> >          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 |
> > -- 
> > 2.17.1
> > 
> 
> Otherwise, starts to look good.
> 
> /Jarkko

Patch
diff mbox series

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..88a0e7776a23 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=''.encode(),
+                 session_attributes=0, hmac=''.encode()):
         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=''.encode(), data=''.encode()):
         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=''.encode(), parameters=''.encode(),
+                 unique=''.encode()):
         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 = ''.encode()):
         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 = ''.encode()
 
         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 |