torvalds/linux

View on GitHub
Documentation/ABI/stable/sysfs-class-tpm

Summary

Maintainability
Test Coverage
What:        /sys/class/tpm/tpmX/device/
Date:        April 2005
KernelVersion:    2.6.12
Contact:    linux-integrity@vger.kernel.org
Description:    The device/ directory under a specific TPM instance exposes
        the properties of that TPM chip


What:        /sys/class/tpm/tpmX/device/active
Date:        April 2006
KernelVersion:    2.6.17
Contact:    linux-integrity@vger.kernel.org
Description:    The "active" property prints a '1' if the TPM chip is accepting
        commands. An inactive TPM chip still contains all the state of
        an active chip (Storage Root Key, NVRAM, etc), and can be
        visible to the OS, but will only accept a restricted set of
        commands. See the TPM Main Specification part 2, Structures,
        section 17 for more information on which commands are
        available.

What:        /sys/class/tpm/tpmX/device/cancel
Date:        June 2005
KernelVersion:    2.6.13
Contact:    linux-integrity@vger.kernel.org
Description:    The "cancel" property allows you to cancel the currently
        pending TPM command. Writing any value to cancel will call the
        TPM vendor specific cancel operation.

What:        /sys/class/tpm/tpmX/device/caps
Date:        April 2005
KernelVersion:    2.6.12
Contact:    linux-integrity@vger.kernel.org
Description:    The "caps" property contains TPM manufacturer and version info.

        Example output::

          Manufacturer: 0x53544d20
          TCG version: 1.2
          Firmware version: 8.16

        Manufacturer is a hex dump of the 4 byte manufacturer info
        space in a TPM. TCG version shows the TCG TPM spec level that
        the chip supports. Firmware version is that of the chip and
        is manufacturer specific.

What:        /sys/class/tpm/tpmX/device/durations
Date:        March 2011
KernelVersion:    3.1
Contact:    linux-integrity@vger.kernel.org
Description:    The "durations" property shows the 3 vendor-specific values
        used to wait for a short, medium and long TPM command. All
        TPM commands are categorized as short, medium or long in
        execution time, so that the driver doesn't have to wait
        any longer than necessary before starting to poll for a
        result.

        Example output::

          3015000 4508000 180995000 [original]

        Here the short, medium and long durations are displayed in
        usecs. "[original]" indicates that the values are displayed
        unmodified from when they were queried from the chip.
        Durations can be modified in the case where a buggy chip
        reports them in msec instead of usec and they need to be
        scaled to be displayed in usecs. In this case "[adjusted]"
        will be displayed in place of "[original]".

What:        /sys/class/tpm/tpmX/device/enabled
Date:        April 2006
KernelVersion:    2.6.17
Contact:    linux-integrity@vger.kernel.org
Description:    The "enabled" property prints a '1' if the TPM chip is enabled,
        meaning that it should be visible to the OS. This property
        may be visible but produce a '0' after some operation that
        disables the TPM.

What:        /sys/class/tpm/tpmX/device/owned
Date:        April 2006
KernelVersion:    2.6.17
Contact:    linux-integrity@vger.kernel.org
Description:    The "owned" property produces a '1' if the TPM_TakeOwnership
        ordinal has been executed successfully in the chip. A '0'
        indicates that ownership hasn't been taken.

What:        /sys/class/tpm/tpmX/device/pcrs
Date:        April 2005
KernelVersion:    2.6.12
Contact:    linux-integrity@vger.kernel.org
Description:    The "pcrs" property will dump the current value of all Platform
        Configuration Registers in the TPM. Note that since these
        values may be constantly changing, the output is only valid
        for a snapshot in time.

        Example output::

          PCR-00: 3A 3F 78 0F 11 A4 B4 99 69 FC AA 80 CD 6E 39 57 C3 3B 22 75
          PCR-01: 3A 3F 78 0F 11 A4 B4 99 69 FC AA 80 CD 6E 39 57 C3 3B 22 75
          PCR-02: 3A 3F 78 0F 11 A4 B4 99 69 FC AA 80 CD 6E 39 57 C3 3B 22 75
          PCR-03: 3A 3F 78 0F 11 A4 B4 99 69 FC AA 80 CD 6E 39 57 C3 3B 22 75
          PCR-04: 3A 3F 78 0F 11 A4 B4 99 69 FC AA 80 CD 6E 39 57 C3 3B 22 75
          ...

        The number of PCRs and hex bytes needed to represent a PCR
        value will vary depending on TPM chip version. For TPM 1.1 and
        1.2 chips, PCRs represent SHA-1 hashes, which are 20 bytes
        long. Use the "caps" property to determine TPM version.

What:        /sys/class/tpm/tpmX/device/pubek
Date:        April 2005
KernelVersion:    2.6.12
Contact:    linux-integrity@vger.kernel.org
Description:    The "pubek" property will return the TPM's public endorsement
        key if possible. If the TPM has had ownership established and
        is version 1.2, the pubek will not be available without the
        owner's authorization. Since the TPM driver doesn't store any
        secrets, it can't authorize its own request for the pubek,
        making it unaccessible. The public endorsement key is gener-
        ated at TPM manufacture time and exists for the life of the
        chip.

        Example output::

          Algorithm: 00 00 00 01
          Encscheme: 00 03
          Sigscheme: 00 01
          Parameters: 00 00 08 00 00 00 00 02 00 00 00 00
          Modulus length: 256
          Modulus:
          B4 76 41 82 C9 20 2C 10 18 40 BC 8B E5 44 4C 6C
          3A B2 92 0C A4 9B 2A 83 EB 5C 12 85 04 48 A0 B6
          1E E4 81 84 CE B2 F2 45 1C F0 85 99 61 02 4D EB
          86 C4 F7 F3 29 60 52 93 6B B2 E5 AB 8B A9 09 E3
          D7 0E 7D CA 41 BF 43 07 65 86 3C 8C 13 7A D0 8B
          82 5E 96 0B F8 1F 5F 34 06 DA A2 52 C1 A9 D5 26
          0F F4 04 4B D9 3F 2D F2 AC 2F 74 64 1F 8B CD 3E
          1E 30 38 6C 70 63 69 AB E2 50 DF 49 05 2E E1 8D
          6F 78 44 DA 57 43 69 EE 76 6C 38 8A E9 8E A3 F0
          A7 1F 3C A8 D0 12 15 3E CA 0E BD FA 24 CD 33 C6
          47 AE A4 18 83 8E 22 39 75 93 86 E6 FD 66 48 B6
          10 AD 94 14 65 F9 6A 17 78 BD 16 53 84 30 BF 70
          E0 DC 65 FD 3C C6 B0 1E BF B9 C1 B5 6C EF B1 3A
          F8 28 05 83 62 26 11 DC B4 6B 5A 97 FF 32 26 B6
          F7 02 71 CF 15 AE 16 DD D1 C1 8E A8 CF 9B 50 7B
          C3 91 FF 44 1E CF 7C 39 FE 17 77 21 20 BD CE 9B

        Possible values::

          Algorithm:    TPM_ALG_RSA            (1)
          Encscheme:    TPM_ES_RSAESPKCSv15        (2)
                TPM_ES_RSAESOAEP_SHA1_MGF1    (3)
          Sigscheme:    TPM_SS_NONE            (1)
          Parameters, a byte string of 3 u32 values:
            Key Length (bits):    00 00 08 00    (2048)
            Num primes:        00 00 00 02    (2)
            Exponent Size:        00 00 00 00    (0 means the
                                 default exp)
          Modulus Length: 256 (bytes)
          Modulus:    The 256 byte Endorsement Key modulus

What:        /sys/class/tpm/tpmX/device/temp_deactivated
Date:        April 2006
KernelVersion:    2.6.17
Contact:    linux-integrity@vger.kernel.org
Description:    The "temp_deactivated" property returns a '1' if the chip has
        been temporarily deactivated, usually until the next power
        cycle. Whether a warm boot (reboot) will clear a TPM chip
        from a temp_deactivated state is platform specific.

What:        /sys/class/tpm/tpmX/device/timeouts
Date:        March 2011
KernelVersion:    3.1
Contact:    linux-integrity@vger.kernel.org
Description:    The "timeouts" property shows the 4 vendor-specific values
        for the TPM's interface spec timeouts. The use of these
        timeouts is defined by the TPM interface spec that the chip
        conforms to.

        Example output::

          750000 750000 750000 750000 [original]

        The four timeout values are shown in usecs, with a trailing
        "[original]" or "[adjusted]" depending on whether the values
        were scaled by the driver to be reported in usec from msecs.

What:        /sys/class/tpm/tpmX/tpm_version_major
Date:        October 2019
KernelVersion:    5.5
Contact:    linux-integrity@vger.kernel.org
Description:    The "tpm_version_major" property shows the TCG spec major version
        implemented by the TPM device.

        Example output::

          2

What:        /sys/class/tpm/tpmX/pcr-<H>/<N>
Date:        March 2021
KernelVersion:    5.12
Contact:    linux-integrity@vger.kernel.org
Description:    produces output in compact hex representation for PCR
        number N from hash bank H.  N is the numeric value of
        the PCR number and H is the crypto string
        representation of the hash

        Example output::

          cat /sys/class/tpm/tpm0/pcr-sha256/7
          2ED93F199692DC6788EFA6A1FE74514AB9760B2A6CEEAEF6C808C13E4ABB0D42