---
name: "tpm2_nvlist"
section: "1"
platform: "linux"
package: "tpm2-tools"
version: "3.1.3-2"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/tpm2_nvlist"
---

# tpm2\_nvlist(1)

display all defined Non-Volatile (NV)s indices.

## NAME

[**tpm2\_nvlist**(1)](/tpm2_nvlist/1.md) - display all defined Non-Volatile (NV)s indices.

### SYNOPSIS

**tpm2\_nvlist** \[*OPTIONS*\]

### DESCRIPTION

[**tpm2\_nvlist**(1)](/tpm2_nvlist/1.md) - display all defined Non-Volatile (NV)s indices to stdout in a YAML format.

Display metadata for all defined NV indices. Metadata includes:

- •

  The size of the defined region.

- •

  The hash algorithm used to compute the name of the index.

- •

  The auth policy.

- •

  The NV attributes as defined in section “NV Attributes”.

Example Output:

-

  ```
  0x1500015:
    hash algorithm:
      friendly: sha256
      value: 0xB
    attributes:
      friendly: ownerwrite|ownerread
      value: 0x2000200
    size: 32
    authorization policy:
  0x1500017:
    hash algorithm:
      friendly: sha256
      value: 0xB
    attributes:
      friendly: ownerwrite|ownerread
      value: 0x2000200
    size: 32
    authorization policy:
  ```

## OPTIONS

This tool takes no tool specific options.

## COMMON OPTIONS

This collection of options are common to many programs and provide information that many users may expect.

- •

  **-h**, **–help**: Display the tools manpage. This requires the manpages to be installed or on *MANPATH*, See [man(1)](/man/1.md) for more details.

- •

  **-v**, **–version**: Display version information for this tool, supported tctis and exit.

- •

  **-V**, **–verbose**: Increase the information that the tool prints to the console during its execution. When using this option the file and line number are printed.

- •

  **-Q**, **–quiet**: Silence normal tool output to stdout.

- •

  **-Z**, **–enable-errata**: Enable the application of errata fixups. Useful if an errata fixup needs to be applied to commands sent to the TPM. # TCTI ENVIRONMENT

This collection of environment variables that may be used to configure the various TCTI modules available.

The values passed through these variables can be overridden on a per-command basis using the available command line options, see the *TCTI\_OPTIONS* section.

The variables respected depend on how the software was configured.

- •

  *TPM2TOOLS\_TCTI\_NAME*: Select the TCTI used for communication with the next component down the TSS stack. In most configurations this will be the TPM but it could be a simulator or proxy. The current known TCTIs are:

  - •

    tabrmd - The new resource manager, called tabrmd (https://github.com/01org/tpm2-abrmd).

  - •

    socket - Typically used with the old resource manager, or talking directly to a simulator.

  - •

    device - Used when talking directly to a TPM device file.

- •

  *TPM2TOOLS\_DEVICE\_FILE*: When using the device TCTI, specify the TPM device file. The default is “/dev/tpm0”.

  Note: Using the tpm directly requires the users to ensure that concurrent access does not occur and that they manage the tpm resources. These tasks are usually managed by a resource manager. Linux 4.12 and greater supports an in kernel resource manager at “/dev/tpmrm”, typically “/dev/tpmrm0”.

- •

  *TPM2TOOLS\_SOCKET\_ADDRESS*: When using the socket TCTI, specify the domain name or IP address used. The default is 127.0.0.1.

- •

  *TPM2TOOLS\_SOCKET\_PORT*: When using the socket TCTI, specify the port number used. The default is 2321.

## TCTI OPTIONS

This collection of options are used to configure the varous TCTI modules available. They override any environment variables.

- •

  **-T**, **–tcti**=*TCTI\_NAME***\[**:*TCTI\_OPTIONS***\]**: Select the TCTI used for communication with the next component down the TSS stack. In most configurations this will be the resource manager: tabrmd (https://github.com/01org/tpm2-abrmd) Optionally, tcti specific options can appended to *TCTI\_NAME* by appending a **:** to *TCTI\_NAME*.

  - •

    For the device TCTI, the TPM device file for use by the device TCTI can be specified. The default is /dev/tpm0. Example: **-T device:/dev/tpm0**

  - •

    For the socket TCTI, the domain name or IP address and port number used by the socket can be specified. The default are 127.0.0.1 and 2321. Example: **-T socket:127.0.0.1:2321**

  - •

    For the abrmd TCTI, it takes no options. Example: **-T abrmd**

## NV Attributes

NV Attributes are used to control various properties of the NV defined space. When specified as an option, either the raw bitfield mask or “nice-names” may be used. The values can be found in Table 204 Part 2 of the TPM2.0 specification, which can be found here:

\<https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-01.38.pdf\>

Nice names are calculated by taking the name field of table 204 and removing the prefix **TPMA\_NV\_** and lowercasing the result. Thus, **TPMA\_NV\_PPWRITE** becomes ppwrite. Nice names can be joined using the bitwise or “\|” symbol.

Note that the **TPM\_NT** field is 4 bits wide, and thus can be set via **nt=** format. For instance, to set The fields **TPMA\_NV\_OWNERREAD**, **TPMA\_NV\_OWNERWRITE**, **TPMA\_NV\_POLICYWRITE**, and **TPMA\_NT = 0x3**, the argument would be:

**ownerread\|ownerwrite\|policywrite\|nt=0x3** # EXAMPLES

To list the defined NV indeces to stdout:

-

  ```
  tpm2_nvlist
  ```

## RETURNS

0 on success or 1 on failure.

## BUGS

Github Issues (https://github.com/01org/tpm2-tools/issues)

## HELP

See the Mailing List (https://lists.01.org/mailman/listinfo/tpm2)
