Allow callers to omit handles from commands when RH_NULL #344
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I observed that the both the following will fail:
with a message like
because their
handle
tagged values of typetpm2.handle
, while markednullable
, were failing type assertions tohandle
during the reflection based marshalling.Investigating this led me to learn that type assertions on nil-valued interface-typed variables (such as
handle
-typed TPM command struct fields) will fail due to the design of the language.To improve the usability of go-tpm and allow callers to leave out handles in commands when NULL is desired, this change adds logic to treat any nil-valued interface-typed command variable (when annotated with
gotpm:handle
) asTPM_RH_NULL
. This allows us to remove thenullable
annotation from those fields, which makes sense. It's an interface, the user can always (try to) pass nil, and this should always meanTPM_RH_NULL
.