---
name: "Tspi_TPM_GetCapability"
section: "3"
platform: "linux"
package: "libtspi-dev"
version: "0.3.15-0.4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Tspi_TPM_GetCapability"
---

# Tspi\_TPM\_GetCapability(3)

get information on the capabilities of the TPM

TCG Software Stack Developer's Reference

## NAME

Tspi\_TPM\_GetCapability - get information on the capabilities of the TPM

## SYNOPSIS

```
#include <tss/platform.h>
#include <tss/tcpa_defines.h>
#include <tss/tcpa_typedef.h>
#include <tss/tcpa_struct.h>
#include <tss/tss_typedef.h>
#include <tss/tss_structs.h>
#include <tss/tspi.h>

TSS_RESULT Tspi_TPM_GetCapability(TSS_HTPM hTPM,              TSS_FLAG capArea,
                                  UINT32   ulSubCapLength,    BYTE*    rgbSubCap,
                                  UINT32*  pulRespDataLength, BYTE**   prgbRespData);
```

## DESCRIPTION

**Tspi\_TPM\_GetCapability** gets information on various capabilities of the TPM. This command can be used to learn how many PCRs the TPM supports, etc.

## PARAMETERS

### hTPM

The *hTPM* parameter is used to specify the handle of the TPM object.

### capArea

The *capArea* parameter is the flag indicating the attribute to query. Possible values are:

### ulSubCapLength

The *ulSubCapLength* parameter is the length in bytes of the *rgbSubCap* parameter.

### rgbSubCap

The *rgbSubCap* parameter is the data indicating the attribute to query. Possible values are:

### pulRespDataLength

The *pulRespDataLength* parameter is the length in bytes of the *prgbRespData* parameter.

### prgbRespData

The *prgbRespData* parameter receives a pointer to the actual data of the specified attribute.

## NOTES

The following Capability Areas and Sub-Capability Areas are supported by 1.1 TSS's:

**TSS\_TPMCAP\_ORD** - query whether an ordinal is supported by the TPM. \
         subCaps: TPM\_ORD\_\* (see tcpa\_literals.h)

**TSS\_TPMCAP\_FLAG** - query for the volatile and non-volatile flags inside the TPM. (Must be owner authorized). In this case, the 2 UINT32 values will be returned concatenated together in prgbRespData. \
         subCaps: ignored.

**TSS\_TPMCAP\_ALG** - query whether an algorithm is supported by the TPM. \
         subCaps: TSS\_ALG\_RSA\
                  TSS\_ALG\_DES\
                  TSS\_ALG\_3DES\
                  TSS\_ALG\_SHA\
                  TSS\_ALG\_HMAC\
                  TSS\_ALG\_AES

**TSS\_TPMCAP\_PROPERTY** - query a property of the TPM. \
         subCaps: TSS\_TPMCAP\_PROP\_PCR\
                  TSS\_TPMCAP\_PROP\_DIR\
                  TSS\_TPMCAP\_PROP\_MANUFACTURER\
                  TSS\_TPMCAP\_PROP\_SLOTS

**TSS\_TPMCAP\_VERSION** - get the TSS\_VERSION structure tha identifies the TPM. \
         subCaps: ignored.

## RETURN CODES

**Tspi\_TPM\_GetCapability** returns TSS\_SUCCESS on success, otherwise one of the following values is returned:

- TSS\_E\_INVALID\_HANDLE

  *hTPM* is not a valid handle.

- TSS\_E\_INTERNAL\_ERROR

  An internal SW error has been detected.

- TSS\_E\_BAD\_PARAMETER

  One or more parameters is bad.

## CONFORMING TO

**Tspi\_TPM\_GetCapability** conforms to the Trusted Computing Group Software Specification version 1.1 Golden

## SEE ALSO

**Tspi\_TPM\_GetCapabilitySigned**(3), [**Tspi\_TPM\_GetEvent**(3)](/Tspi_TPM_GetEvent/3.md).
