1 /** @file 2 This library is used by other modules to send TPM12 command. 3 4 Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved. <BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef _TPM12_COMMAND_LIB_H_ 16 #define _TPM12_COMMAND_LIB_H_ 17 18 #include <IndustryStandard/Tpm12.h> 19 20 /** 21 Send Startup command to TPM1.2. 22 23 @param TpmSt Startup Type. 24 25 @retval EFI_SUCCESS Operation completed successfully. 26 @retval EFI_DEVICE_ERROR Unexpected device behavior. 27 **/ 28 EFI_STATUS 29 EFIAPI 30 Tpm12Startup ( 31 IN TPM_STARTUP_TYPE TpmSt 32 ); 33 34 /** 35 Send SaveState command to TPM1.2. 36 37 @retval EFI_SUCCESS Operation completed successfully. 38 @retval EFI_DEVICE_ERROR Unexpected device behavior. 39 **/ 40 EFI_STATUS 41 EFIAPI 42 Tpm12SaveState ( 43 VOID 44 ); 45 46 /** 47 Send ForceClear command to TPM1.2. 48 49 @retval EFI_SUCCESS Operation completed successfully. 50 @retval EFI_DEVICE_ERROR Unexpected device behavior. 51 **/ 52 EFI_STATUS 53 EFIAPI 54 Tpm12ForceClear ( 55 VOID 56 ); 57 58 #pragma pack(1) 59 60 typedef struct { 61 UINT16 sizeOfSelect; 62 UINT8 pcrSelect[3]; 63 } TPM12_PCR_SELECTION; 64 65 typedef struct { 66 TPM12_PCR_SELECTION pcrSelection; 67 TPM_LOCALITY_SELECTION localityAtRelease; 68 TPM_COMPOSITE_HASH digestAtRelease; 69 } TPM12_PCR_INFO_SHORT; 70 71 typedef struct { 72 TPM_STRUCTURE_TAG tag; 73 TPM_NV_INDEX nvIndex; 74 TPM12_PCR_INFO_SHORT pcrInfoRead; 75 TPM12_PCR_INFO_SHORT pcrInfoWrite; 76 TPM_NV_ATTRIBUTES permission; 77 BOOLEAN bReadSTClear; 78 BOOLEAN bWriteSTClear; 79 BOOLEAN bWriteDefine; 80 UINT32 dataSize; 81 } TPM12_NV_DATA_PUBLIC; 82 83 #pragma pack() 84 85 /** 86 Send NV DefineSpace command to TPM1.2. 87 88 @param PubInfo The public parameters of the NV area. 89 @param EncAuth The encrypted AuthData, only valid if the attributes require subsequent authorization. 90 91 @retval EFI_SUCCESS Operation completed successfully. 92 @retval EFI_DEVICE_ERROR Unexpected device behavior. 93 **/ 94 EFI_STATUS 95 EFIAPI 96 Tpm12NvDefineSpace ( 97 IN TPM12_NV_DATA_PUBLIC *PubInfo, 98 IN TPM_ENCAUTH *EncAuth 99 ); 100 101 /** 102 Send NV ReadValue command to TPM1.2. 103 104 @param NvIndex The index of the area to set. 105 @param Offset The offset into the area. 106 @param DataSize The size of the data area. 107 @param Data The data to set the area to. 108 109 @retval EFI_SUCCESS Operation completed successfully. 110 @retval EFI_DEVICE_ERROR Unexpected device behavior. 111 **/ 112 EFI_STATUS 113 EFIAPI 114 Tpm12NvReadValue ( 115 IN TPM_NV_INDEX NvIndex, 116 IN UINT32 Offset, 117 IN OUT UINT32 *DataSize, 118 OUT UINT8 *Data 119 ); 120 121 /** 122 Send NV WriteValue command to TPM1.2. 123 124 @param NvIndex The index of the area to set. 125 @param Offset The offset into the NV Area. 126 @param DataSize The size of the data parameter. 127 @param Data The data to set the area to. 128 129 @retval EFI_SUCCESS Operation completed successfully. 130 @retval EFI_DEVICE_ERROR Unexpected device behavior. 131 **/ 132 EFI_STATUS 133 EFIAPI 134 Tpm12NvWriteValue ( 135 IN TPM_NV_INDEX NvIndex, 136 IN UINT32 Offset, 137 IN UINT32 DataSize, 138 IN UINT8 *Data 139 ); 140 141 #endif 142