20#define TPMNVVALUELENGTH 1024
40 UINT8 Data[TPMNVVALUELENGTH];
48 UINT8 Data[TPMNVVALUELENGTH];
77 Command.Hdr.tag =
SwapBytes16 (TPM_TAG_RQU_COMMAND);
78 Command.Hdr.paramSize =
SwapBytes32 (
sizeof (Command));
79 Command.Hdr.ordinal =
SwapBytes32 (TPM_ORD_NV_DefineSpace);
81 Command.PubInfo.nvIndex =
SwapBytes32 (PubInfo->nvIndex);
82 Command.PubInfo.pcrInfoRead.pcrSelection.sizeOfSelect =
SwapBytes16 (PubInfo->pcrInfoRead.pcrSelection.sizeOfSelect);
83 Command.PubInfo.pcrInfoRead.pcrSelection.pcrSelect[0] = PubInfo->pcrInfoRead.pcrSelection.pcrSelect[0];
84 Command.PubInfo.pcrInfoRead.pcrSelection.pcrSelect[1] = PubInfo->pcrInfoRead.pcrSelection.pcrSelect[1];
85 Command.PubInfo.pcrInfoRead.pcrSelection.pcrSelect[2] = PubInfo->pcrInfoRead.pcrSelection.pcrSelect[2];
86 Command.PubInfo.pcrInfoRead.localityAtRelease = PubInfo->pcrInfoRead.localityAtRelease;
87 CopyMem (&Command.PubInfo.pcrInfoRead.digestAtRelease, &PubInfo->pcrInfoRead.digestAtRelease, sizeof (PubInfo->pcrInfoRead.digestAtRelease));
88 Command.PubInfo.pcrInfoWrite.pcrSelection.sizeOfSelect =
SwapBytes16 (PubInfo->pcrInfoWrite.pcrSelection.sizeOfSelect);
89 Command.PubInfo.pcrInfoWrite.pcrSelection.pcrSelect[0] = PubInfo->pcrInfoWrite.pcrSelection.pcrSelect[0];
90 Command.PubInfo.pcrInfoWrite.pcrSelection.pcrSelect[1] = PubInfo->pcrInfoWrite.pcrSelection.pcrSelect[1];
91 Command.PubInfo.pcrInfoWrite.pcrSelection.pcrSelect[2] = PubInfo->pcrInfoWrite.pcrSelection.pcrSelect[2];
92 Command.PubInfo.pcrInfoWrite.localityAtRelease = PubInfo->pcrInfoWrite.localityAtRelease;
93 CopyMem (&Command.PubInfo.pcrInfoWrite.digestAtRelease, &PubInfo->pcrInfoWrite.digestAtRelease, sizeof (PubInfo->pcrInfoWrite.digestAtRelease));
94 Command.PubInfo.permission.tag =
SwapBytes16 (PubInfo->permission.tag);
95 Command.PubInfo.permission.attributes =
SwapBytes32 (PubInfo->permission.attributes);
96 Command.PubInfo.bReadSTClear = PubInfo->bReadSTClear;
97 Command.PubInfo.bWriteSTClear = PubInfo->bWriteSTClear;
98 Command.PubInfo.bWriteDefine = PubInfo->bWriteDefine;
99 Command.PubInfo.dataSize =
SwapBytes32 (PubInfo->dataSize);
100 CopyMem (&Command.EncAuth, EncAuth, sizeof (*EncAuth));
101 Length =
sizeof (Response);
102 Status =
Tpm12SubmitCommand (
sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);
103 if (EFI_ERROR (Status)) {
107 DEBUG ((DEBUG_INFO,
"Tpm12NvDefineSpace - ReturnCode = %x\n",
SwapBytes32 (Response.returnCode)));
112 return EFI_DEVICE_ERROR;
132 IN OUT UINT32 *DataSize,
144 Command.Hdr.tag =
SwapBytes16 (TPM_TAG_RQU_COMMAND);
145 Command.Hdr.paramSize =
SwapBytes32 (
sizeof (Command));
146 Command.Hdr.ordinal =
SwapBytes32 (TPM_ORD_NV_ReadValue);
150 Length =
sizeof (Response);
151 Status =
Tpm12SubmitCommand (
sizeof (Command), (UINT8 *)&Command, &Length, (UINT8 *)&Response);
152 if (EFI_ERROR (Status)) {
156 DEBUG ((DEBUG_INFO,
"Tpm12NvReadValue - ReturnCode = %x\n",
SwapBytes32 (Response.Hdr.returnCode)));
161 return EFI_DEVICE_ERROR;
168 return EFI_BUFFER_TOO_SMALL;
173 CopyMem (Data, &Response.Data, *DataSize);
200 UINT32 CommandLength;
202 UINT32 ResponseLength;
204 if (DataSize >
sizeof (Command.Data)) {
205 return EFI_UNSUPPORTED;
211 Command.Hdr.tag =
SwapBytes16 (TPM_TAG_RQU_COMMAND);
212 CommandLength =
sizeof (Command) -
sizeof (Command.Data) + DataSize;
213 Command.Hdr.paramSize =
SwapBytes32 (CommandLength);
214 Command.Hdr.ordinal =
SwapBytes32 (TPM_ORD_NV_WriteValue);
218 CopyMem (Command.Data, Data, DataSize);
219 ResponseLength =
sizeof (Response);
220 Status =
Tpm12SubmitCommand (CommandLength, (UINT8 *)&Command, &ResponseLength, (UINT8 *)&Response);
221 if (EFI_ERROR (Status)) {
225 DEBUG ((DEBUG_INFO,
"Tpm12NvWriteValue - ReturnCode = %x\n",
SwapBytes32 (Response.returnCode)));
230 return EFI_DEVICE_ERROR;
UINT16 EFIAPI SwapBytes16(IN UINT16 Value)
UINT32 EFIAPI SwapBytes32(IN UINT32 Value)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
#define DEBUG(Expression)
EFI_STATUS EFIAPI Tpm12SubmitCommand(IN UINT32 InputParameterBlockSize, IN UINT8 *InputParameterBlock, IN OUT UINT32 *OutputParameterBlockSize, IN UINT8 *OutputParameterBlock)
EFI_STATUS EFIAPI Tpm12NvWriteValue(IN TPM_NV_INDEX NvIndex, IN UINT32 Offset, IN UINT32 DataSize, IN UINT8 *Data)
EFI_STATUS EFIAPI Tpm12NvDefineSpace(IN TPM12_NV_DATA_PUBLIC *PubInfo, IN TPM_ENCAUTH *EncAuth)
EFI_STATUS EFIAPI Tpm12NvReadValue(IN TPM_NV_INDEX NvIndex, IN UINT32 Offset, IN OUT UINT32 *DataSize, OUT UINT8 *Data)