1889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury/* 2889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury * Copyright 2015 The Chromium OS Authors. All rights reserved. 3889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury * Use of this source code is governed by a BSD-style license that can be 4889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury * found in the LICENSE file. 5889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury */ 6889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury 7889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury#ifndef __TPM2_PCR_FP_H 8889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury#define __TPM2_PCR_FP_H 9889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury 10f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyTPM_RC PCRAllocate(TPML_PCR_SELECTION *allocate, // IN: required allocation 11f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 *maxPCR, // OUT: Maximum number of PCR 12f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 *sizeNeeded, // OUT: required space 13f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 *sizeAvailable // OUT: available space 14f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 15f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBOOL PCRBelongsAuthGroup(TPMI_DH_PCR handle, // IN: handle of PCR 16f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 *groupIndex // OUT: group index if PCR belongs 17f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // a group that allows authValue. 18f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // If PCR does not belong to an 19f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // auth group, the value in this 20f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // parameter is invalid 21f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 22f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBOOL PCRBelongsPolicyGroup(TPMI_DH_PCR handle, // IN: handle of PCR 23f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 *groupIndex // OUT: group index if PCR 24f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // belongs a group that allows 25f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // policy. If PCR does not belong 26f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // to a policy group, the value 27f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury // in this parameter is invalid 28f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 29bbd79006638e983c14ae2b644146ab6b05856e6eVadim BendeburyTPMI_YES_NO PCRCapGetAllocation( 30f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 count, // IN: count of return 31f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPML_PCR_SELECTION *pcrSelection // OUT: PCR allocation list 32f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 33f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRChanged(TPM_HANDLE pcrHandle // IN: the handle of the PCR that changed. 34f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 35fe7bde4f6f18efd7a80611108290bf2981cbd726Vadim Bendeburyvoid PCRComputeCurrentDigest( 36f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPMI_ALG_HASH hashAlg, // IN: hash algorithm to compute digest 37f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPML_PCR_SELECTION * 38f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury selection, // IN/OUT: PCR selection (filtered on output) 39f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPM2B_DIGEST *digest // OUT: digest 40f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 41f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyTPMI_ALG_HASH PCRGetAuthPolicy(TPMI_DH_PCR handle, // IN: PCR handle 42f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPM2B_DIGEST *policy // OUT: policy of PCR 43889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury ); 44f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyTPMI_YES_NO PCRCapGetHandles(TPMI_DH_PCR handle, // IN: start handle 45f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 count, // IN: count of returned handle 46f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPML_HANDLE *handleList // OUT: list of handle 47f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 48bbd79006638e983c14ae2b644146ab6b05856e6eVadim BendeburyTPMI_YES_NO PCRCapGetProperties( 49f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPM_PT_PCR property, // IN: the starting PCR property 50f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 count, // IN: count of returned propertie 51f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPML_TAGGED_PCR_PROPERTY *select // OUT: PCR select 52f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 53f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRGetAuthValue(TPMI_DH_PCR handle, // IN: PCR handle 54f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPM2B_AUTH *auth // OUT: authValue of PCR 55889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury ); 56f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRExtend(TPMI_DH_PCR handle, // IN: PCR handle to be extended 57f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPMI_ALG_HASH hash, // IN: hash algorithm of PCR 58f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 size, // IN: size of data to be extended 59f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury BYTE *data // IN: data to be extended 60b0d692f1dc2876d188915bd9aefa81ac61414370Vadim Bendebury ); 61f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRResetDynamics(void); 622a791af4fcc86595428741ae1f92765fb3e221beVadim Bendeburyvoid PcrDrtm( 63f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury const TPMI_DH_PCR pcrHandle, // IN: the index of the PCR to be modified 64f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury const TPMI_ALG_HASH hash, // IN: the bank identifier 65f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury const TPM2B_DIGEST *digest // IN: the digest to modify the PCR 66f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 67f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBOOL PcrIsAllocated(UINT32 pcr, // IN: The number of the PCR 68f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPMI_ALG_HASH hashAlg // IN: The PCR algorithm 69f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 70f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBOOL PCRIsExtendAllowed(TPMI_DH_PCR handle // IN: PCR handle to be extended 71b0d692f1dc2876d188915bd9aefa81ac61414370Vadim Bendebury ); 72f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBOOL PCRIsResetAllowed(TPMI_DH_PCR handle // IN: PCR handle to be extended 73f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 74f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBOOL PCRIsStateSaved(TPMI_DH_PCR handle // IN: PCR handle to be extended 75b0d692f1dc2876d188915bd9aefa81ac61414370Vadim Bendebury ); 76f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBOOL PCRPolicyIsAvailable(TPMI_DH_PCR handle // IN: PCR handle 77f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 783a6b9cb489e2bd1692e0e516c6656d4c2bc77146Vadim Bendeburyvoid PCRRead( 79f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPML_PCR_SELECTION * 80f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury selection, // IN/OUT: PCR selection (filtered on output) 81f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury TPML_DIGEST *digest, // OUT: digest 82f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury UINT32 *pcrCounter // OUT: the current value of PCR generation number 83f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 84f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRSetValue(TPM_HANDLE handle, // IN: the handle of the PCR to set 85f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury INT8 initialValue // IN: the value to set 86f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 87f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRSimStart(void); 88f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRStartup(STARTUP_TYPE type, // IN: startup type 89f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury BYTE locality // IN: startup locality 90f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 91f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendeburyvoid PCRStateSave(TPM_SU type // IN: startup type 92f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury ); 93889ec83ae517bba615f763af02f29319346ecfafVadim Bendebury 94f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury#endif // __TPM2_PCR_FP_H 95