SecurityPkg/Tpm2CommandLib: add a new function
Tpm2GetCapabilityIsCommandImplemented REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2793 check if the commad is supported by comparing the command code with command index. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Chao Zhang <chao.b.zhang@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Signed-off-by: Qi Zhang <qi1.zhang@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
ffde22468e
commit
1b0d659e6d
|
@ -790,6 +790,22 @@ Tpm2GetCapabilityAlgorithmSet (
|
||||||
OUT UINT32 *AlgorithmSet
|
OUT UINT32 *AlgorithmSet
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function will query if the command is supported.
|
||||||
|
|
||||||
|
@param[In] Command TPM_CC command starts from TPM_CC_FIRST.
|
||||||
|
@param[out] IsCmdImpl The command is supported or not.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Operation completed successfully.
|
||||||
|
@retval EFI_DEVICE_ERROR The command was unsuccessful.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
Tpm2GetCapabilityIsCommandImplemented (
|
||||||
|
IN TPM_CC Command,
|
||||||
|
OUT BOOLEAN *IsCmdImpl
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This command is used to check to see if specific combinations of algorithm parameters are supported.
|
This command is used to check to see if specific combinations of algorithm parameters are supported.
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,8 @@ typedef struct {
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
|
#define TPMA_CC_COMMANDINDEX_MASK 0x2000FFFF
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This command returns various information regarding the TPM and its current state.
|
This command returns various information regarding the TPM and its current state.
|
||||||
|
|
||||||
|
@ -628,6 +630,44 @@ Tpm2GetCapabilityAlgorithmSet (
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function will query if the command is supported.
|
||||||
|
|
||||||
|
@param[In] Command TPM_CC command starts from TPM_CC_FIRST.
|
||||||
|
@param[out] IsCmdImpl The command is supported or not.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS Operation completed successfully.
|
||||||
|
@retval EFI_DEVICE_ERROR The command was unsuccessful.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
Tpm2GetCapabilityIsCommandImplemented (
|
||||||
|
IN TPM_CC Command,
|
||||||
|
OUT BOOLEAN *IsCmdImpl
|
||||||
|
)
|
||||||
|
{
|
||||||
|
TPMS_CAPABILITY_DATA TpmCap;
|
||||||
|
TPMI_YES_NO MoreData;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
UINT32 Attribute;
|
||||||
|
|
||||||
|
Status = Tpm2GetCapability (
|
||||||
|
TPM_CAP_COMMANDS,
|
||||||
|
Command,
|
||||||
|
1,
|
||||||
|
&MoreData,
|
||||||
|
&TpmCap
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
CopyMem (&Attribute, &TpmCap.data.command.commandAttributes[0], sizeof (UINT32));
|
||||||
|
*IsCmdImpl = (Command == (SwapBytes32(Attribute) & TPMA_CC_COMMANDINDEX_MASK));
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This command is used to check to see if specific combinations of algorithm parameters are supported.
|
This command is used to check to see if specific combinations of algorithm parameters are supported.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue