Skip to main content

TPM 2.0 TSS Bindings for Python

Reason this release was yanked:

Outdated and broken, use master

Project description

tpm2-pytss

Build Status Total alerts Language grade: Python Code style: black PyPI version

TPM2 TSS Python bindings for Enhanced System API (ESYS).

Supported versions of Python are

  • 3.5
  • 3.6
  • 3.7

Specification

This package primarily exposes the TPM 2.0 Enhanced System API. The specification for the ESAPI can be found here:

https://trustedcomputinggroup.org/resource/tcg-tss-2-0-enhanced-system-api-esapi-specification/

Dependencies

This has been tested against TPM2 TSS 2.3.1 and SWIG 3.

tpm2-tss

You need to install tpm2-tss prior to installing this, INSTALL.md.

pkg-config

You need to install pkg-config

swig

You need to install swig

Ubuntu

$ sudo apt-get -y install swig pkg-config

ldconfig

When you ran ./configure for tpm2-tss if you didn't supply a prefix it usually defaults to /usr/local/. When you ran make install it then installed the libraries under that path. Your pacakge manager usually installs libraries to /usr. If you properly configure the ldconfig tool, it'll make the libraries you just installed available from within /usr/local (which means they won't clash with things your package manager installs). If you don't configure it then you might get this error:

ImportError: libtss2-esys.so.0: cannot open shared object file: No such file or directory

We make a config file that tells ldconfig to look in /usr/local/lib for shared libraries, then we run ldconfig.

$ sudo mkdir -p /etc/ld.so.conf.d/
$ echo 'include /etc/ld.so.conf.d/*.conf' | sudo tee -a /etc/ld.so.conf
$ echo '/usr/local/lib' | sudo tee -a /etc/ld.so.conf.d/libc.conf
$ sudo ldconfig

More info on ldconfig error: https://stackoverflow.com/a/17653893/3969496

Install

Install from PyPi.

$ python3 -m pip install tpm2-pytss

Or install from the master branch via GitHub

$ python3 -m pip install git+https://github.com/tpm2-software/tpm2-pytss

See tests/ folder for example usage.

Testing

You need to have tpm_server installed in your path to run the tests.

Download the latest version from https://sourceforge.net/projects/ibmswtpm2/files/ and put it somewher in your $PATH.

$ python3 setup.py test

Logging

To get traces of all calls into the TSS, use the TPM2_PYTSS_LOG_LEVEL environment variable.

$ export TPM2_PYTSS_LOG_LEVEL=debug

Example logs:

test_random_length (tests.test_esys_get_random.TestGetRandom) ... DEBUG:asyncio:Using selector: EpollSelector
DEBUG:tpm2_pytss.util.swig:Tss2_TctiLdr_Initialize_Ex(
    name: mssim,
    conf: port=63684,
    context: <Swig Object of type 'TSS2_TCTI_CONTEXT **' at 0x7f5e63d8ea50>,
)
DEBUG:tpm2_pytss.util.swig:new_ctx_ptr(

)
DEBUG:tpm2_pytss.util.swig:Esys_Initialize(
    esys_context: <Swig Object of type 'ESYS_CONTEXT **' at 0x7f5e63d8e9f0>,
    tcti: <Swig Object of type 'TSS2_TCTI_CONTEXT *' at 0x7f5e63d8e5d0>,
    abiVersion: <tpm2_pytss.binding.TSS2_ABI_VERSION; proxy of <Swig Object of type 'TSS2_ABI_VERSION *' at 0x7f5e6337ab10> >,
)
DEBUG:tpm2_pytss.util.swig:ctx_ptr_value(
    obj: <Swig Object of type 'ESYS_CONTEXT **' at 0x7f5e63d8e9f0>,
)
DEBUG:tpm2_pytss.util.swig:Esys_Startup(
    esysContext: <Swig Object of type 'ESYS_CONTEXT *' at 0x7f5e63d8e7e0>,
    startupType: 0,
)
DEBUG:tpm2_pytss.util.swig:Esys_SetTimeout(
    esys_context: <Swig Object of type 'ESYS_CONTEXT *' at 0x7f5e63d8e7e0>,
    timeout: -1,
)
DEBUG:tpm2_pytss.util.swig:Esys_GetRandom(
    esysContext: <Swig Object of type 'ESYS_CONTEXT *' at 0x7f5e63d8e7e0>,
    shandle1: 4095,
    shandle2: 4095,
    shandle3: 4095,
    bytesRequested: 11,
    randomBytes: <Swig Object of type 'TPM2B_NONCE **' at 0x7f5e63d8e8d0>,
)
DEBUG:tpm2_pytss.util.swig:Esys_Finalize(
    context: <Swig Object of type 'ESYS_CONTEXT **' at 0x7f5e63d8e9f0>,
)
DEBUG:tpm2_pytss.util.swig:delete_ctx_ptr(
    obj: <Swig Object of type 'ESYS_CONTEXT **' at 0x7f5e63d8e9f0>,
)

Contributing

TODO

  • Document need for ctypes for certain values, example
  • ESYS_TR_PTR should be SessionContext

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tpm2-pytss-0.0.5.tar.gz (284.8 kB view details)

Uploaded Source

File details

Details for the file tpm2-pytss-0.0.5.tar.gz.

File metadata

  • Download URL: tpm2-pytss-0.0.5.tar.gz
  • Upload date:
  • Size: 284.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for tpm2-pytss-0.0.5.tar.gz
Algorithm Hash digest
SHA256 ab32ef147a963a56d6c6b60414b55ff86a6853c24ca5692e145bbea7ae5cc218
MD5 1a50668c8494ac7d235c22f34c5126b7
BLAKE2b-256 8159617f4323bdbd68c3199a99e7514e2b553ce8134c61f0c39a5d9c3e8a07a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page