Site icon EfmSoft

What does HRESULT 0x8028003D (TPM_E_BAD_LOCALITY) mean?

 
Previous Next
TPM_E_AREA_LOCKED TPM_E_READ_ONLY

TPM_E_BAD_LOCALITY

The decisive TPM checkpoint

TPM_E_BAD_LOCALITY (0x8028003D) belongs to TPM 1.2 nonvolatile-storage policy. The base What Is page already shows the short Windows message; the additional diagnostic value is that this result marks the command locality does not satisfy the locality bitmap attached to the TPM 1.2 object or NV operation.

The first producer to identify for this HRESULT is the TPM 1.2 NV permission and lifecycle checks. TPM 1.2 NV indices combine permissions, authorization mode, locality masks and lock semantics. Two indices of the same size can behave differently because those attributes were fixed when each index was defined.

Before changing the platform

QuestionEvidence for this HRESULT
What exact state was rejected?the command locality does not satisfy the locality bitmap attached to the TPM 1.2 object or NV operation
Which layer owns the result?The TPM 1.2 NV permission and lifecycle checks.
What must be correlated?effective locality, TBS locality argument, object/NV locality attributes, platform phase, command ordinal, and caller identity
What is the controlled comparison?compare the same public metadata with a call from an authorized platform phase; do not attempt to fake locality from ordinary user mode

Record the original command or API call before this result retry logic mutates its nonces, handles, buffers or state. Also retain the full HRESULT as 0x8028003D; signed decimal logging can hide the result TPM/TBS facility and make searches less precise.

Test the contract

  1. Establish the result baseline with the same device, Windows build, account and TPM generation.
  2. Perform one narrow experiment: compare the same public metadata with a call from an authorized platform phase; do not attempt to fake locality from ordinary user mode.
  3. Compare raw this result inputs and the first response, not only the final application dialog.
  4. Stop after the first changed the checkpoint; a later error means this boundary was passed even if the whole workflow still fails.

Why another code is not equivalent

ResultDifferent diagnostic question
TPM_E_READ_ONLYThe NV area is read only and can't be written to — a separate checkpoint when compared with this result.
TPM_E_AREA_LOCKEDThe NV area is locked and not writtable — a separate checkpoint when compared with it.
TPM_E_PER_NOWRITEThere is no protection on the write to the NV area — a separate checkpoint when compared with it.

The decisive distinction for this HRESULT is that TPM_E_BAD_PRESENCE concerns physical-presence state, not the locality bitmap. The short platform wording — “The locality is incorrect for the attempted operation.” — does not supply that differential diagnosis by itself.

Evidence of success

The corrective direction is to run the command in the firmware or boot component that owns the required locality or choose an object whose locality policy matches the caller. Do not undefine a production NV index until its public attributes and authorization policy have been recorded. NV policy is established at definition time, and destructive recreation can remove counters, certificates or provisioning state.

A verified it repair reproduces the original request with the same intended security policy and passes this checkpoint. Replacing it with a broader wrapper status, silently falling back to software keys, or suppressing verification is not proof of success.

Technical references


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

Exit mobile version