| /** @file | |
| This library is used by other modules to send TPM12 command. | |
| Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved. <BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef _TPM12_COMMAND_LIB_H_ | |
| #define _TPM12_COMMAND_LIB_H_ | |
| #include <IndustryStandard/Tpm12.h> | |
| /** | |
| Send Startup command to TPM1.2. | |
| @param TpmSt Startup Type. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12Startup ( | |
| IN TPM_STARTUP_TYPE TpmSt | |
| ); | |
| /** | |
| Send SaveState command to TPM1.2. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12SaveState ( | |
| VOID | |
| ); | |
| /** | |
| Send ForceClear command to TPM1.2. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12ForceClear ( | |
| VOID | |
| ); | |
| #pragma pack(1) | |
| typedef struct { | |
| UINT16 sizeOfSelect; | |
| UINT8 pcrSelect[3]; | |
| } TPM12_PCR_SELECTION; | |
| typedef struct { | |
| TPM12_PCR_SELECTION pcrSelection; | |
| TPM_LOCALITY_SELECTION localityAtRelease; | |
| TPM_COMPOSITE_HASH digestAtRelease; | |
| } TPM12_PCR_INFO_SHORT; | |
| typedef struct { | |
| TPM_STRUCTURE_TAG tag; | |
| TPM_NV_INDEX nvIndex; | |
| TPM12_PCR_INFO_SHORT pcrInfoRead; | |
| TPM12_PCR_INFO_SHORT pcrInfoWrite; | |
| TPM_NV_ATTRIBUTES permission; | |
| BOOLEAN bReadSTClear; | |
| BOOLEAN bWriteSTClear; | |
| BOOLEAN bWriteDefine; | |
| UINT32 dataSize; | |
| } TPM12_NV_DATA_PUBLIC; | |
| #pragma pack() | |
| /** | |
| Send NV DefineSpace command to TPM1.2. | |
| @param PubInfo The public parameters of the NV area. | |
| @param EncAuth The encrypted AuthData, only valid if the attributes require subsequent authorization. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12NvDefineSpace ( | |
| IN TPM12_NV_DATA_PUBLIC *PubInfo, | |
| IN TPM_ENCAUTH *EncAuth | |
| ); | |
| /** | |
| Send NV ReadValue command to TPM1.2. | |
| @param NvIndex The index of the area to set. | |
| @param Offset The offset into the area. | |
| @param DataSize The size of the data area. | |
| @param Data The data to set the area to. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12NvReadValue ( | |
| IN TPM_NV_INDEX NvIndex, | |
| IN UINT32 Offset, | |
| IN OUT UINT32 *DataSize, | |
| OUT UINT8 *Data | |
| ); | |
| /** | |
| Send NV WriteValue command to TPM1.2. | |
| @param NvIndex The index of the area to set. | |
| @param Offset The offset into the NV Area. | |
| @param DataSize The size of the data parameter. | |
| @param Data The data to set the area to. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12NvWriteValue ( | |
| IN TPM_NV_INDEX NvIndex, | |
| IN UINT32 Offset, | |
| IN UINT32 DataSize, | |
| IN UINT8 *Data | |
| ); | |
| /** | |
| Extend a TPM PCR. | |
| @param[in] DigestToExtend The 160 bit value representing the event to be recorded. | |
| @param[in] PcrIndex The PCR to be updated. | |
| @param[out] NewPcrValue New PCR value after extend. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_TIMEOUT The register can't run into the expected status in time. | |
| @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12Extend ( | |
| IN TPM_DIGEST *DigestToExtend, | |
| IN TPM_PCRINDEX PcrIndex, | |
| OUT TPM_DIGEST *NewPcrValue | |
| ); | |
| /** | |
| Send TSC_PhysicalPresence command to TPM. | |
| @param[in] PhysicalPresence The state to set the TPMs Physical Presence flags. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_TIMEOUT The register can't run into the expected status in time. | |
| @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12PhysicalPresence ( | |
| IN TPM_PHYSICAL_PRESENCE PhysicalPresence | |
| ); | |
| /** | |
| Send TPM_ContinueSelfTest command to TPM. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_TIMEOUT The register can't run into the expected status in time. | |
| @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12ContinueSelfTest ( | |
| VOID | |
| ); | |
| /** | |
| Get TPM capability permanent flags. | |
| @param[out] TpmPermanentFlags Pointer to the buffer for returned flag structure. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_TIMEOUT The register can't run into the expected status in time. | |
| @retval EFI_BUFFER_TOO_SMALL Response data buffer is too small. | |
| @retval EFI_DEVICE_ERROR Unexpected device behavior. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12GetCapabilityFlagPermanent ( | |
| OUT TPM_PERMANENT_FLAGS *TpmPermanentFlags | |
| ); | |
| /** | |
| Get TPM capability volatile flags. | |
| @param[out] VolatileFlags Pointer to the buffer for returned flag structure. | |
| @retval EFI_SUCCESS Operation completed successfully. | |
| @retval EFI_DEVICE_ERROR The command was unsuccessful. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| Tpm12GetCapabilityFlagVolatile ( | |
| OUT TPM_STCLEAR_FLAGS *VolatileFlags | |
| ); | |
| #endif |