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