What does HRESULT 0x8028014C (TPM_20_E_NV_DEFINED) mean?

 
Previous Next
TPM_20_E_NV_SPACE TPM_20_E_BAD_CONTEXT

TPM_20_E_NV_DEFINED

TPM_20_E_NV_DEFINED reports a collision with an existing TPM definition. For NV provisioning, the selected NV index handle already exists. The same status family can also matter when a persistent-object handle is already occupied, so a deployment must determine which TPM namespace and command caused the error.

Why blind retry is unsafe

  • Reusing a known handle does not prove that the stored public area, Name, attributes, or policy belong to the current application version.
  • Another tenant, installer, firmware component, or an earlier version of the same product may legitimately own the existing definition.
  • Deleting the old definition to make the command succeed can erase an authorization policy, a monotonic counter, or an object required for recovery.

Verification sequence

  • For an NV index, retrieve the public area and compare its index handle, data size, attributes, policy digest, and Name with the expected provisioning manifest.
  • For a persistent object, read its public area and confirm that its Name and public template are expected before treating the error as an idempotent success.
  • Keep NV index and persistent-object ownership records separate even when a product uses adjacent numeric handles.

Correct recovery

Either adopt a matching existing definition through an explicit idempotent-provisioning rule, choose an approved vacant handle, or perform an authorized migration. The error itself is not evidence that deleting the existing handle is safe.

References: TCG TPM 2.0 Library Part 3: Commands, tpm2_nvreadpublic, and tpm2_readpublic.


Looking for a different code? Search another status or error code.