blob: b547d8604b0b072adbe6ea5d0faa03b45a7b357c [file] [log] [blame]
Peter Huewed5a36f62018-06-12 00:59:26 +02001/* SPDX-License-Identifier: BSD-2 */
Juergen Repp731135d2018-03-27 14:43:03 +02002/*******************************************************************************
3 * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG
4 * All rights reserved.
Juergen Repp731135d2018-03-27 14:43:03 +02005 *******************************************************************************/
6
7#include "tss2_esys.h"
8
9#include "esys_iutil.h"
10#define LOGMODULE test
11#include "util/log.h"
12
Juergen Repp920d7cd2018-04-12 10:09:46 +020013/*
14 * Test the basic commands for PCR processing: Esys_PCR_Extend, Esys_PCR_Read,
15 * Esys_PCR_Reset, Esys_PCR_Event, and Esys_PCR_Allocate
16 */
Juergen Repp731135d2018-03-27 14:43:03 +020017
18int
19test_invoke_esapi(ESYS_CONTEXT * esys_context)
20{
21 uint32_t r = 0;
22
Juergen Repp920d7cd2018-04-12 10:09:46 +020023 ESYS_TR pcrHandle_handle = 16;
Juergen Repp731135d2018-03-27 14:43:03 +020024 TPML_DIGEST_VALUES digests
25 = {
26 .count = 1,
27 .digests = {
28 {
29 .hashAlg = TPM2_ALG_SHA1,
30 .digest = {
Juergen Repp920d7cd2018-04-12 10:09:46 +020031 .sha1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
32 11, 12, 13, 14, 15, 16, 17, 18, 19}
Juergen Repp731135d2018-03-27 14:43:03 +020033 }
34 },
35 }};
36
Juergen Repp920d7cd2018-04-12 10:09:46 +020037 r = Esys_PCR_Extend(
Juergen Repp731135d2018-03-27 14:43:03 +020038 esys_context,
39 pcrHandle_handle,
Juergen Repp731135d2018-03-27 14:43:03 +020040 ESYS_TR_PASSWORD,
Juergen Repp731135d2018-03-27 14:43:03 +020041 ESYS_TR_NONE,
42 ESYS_TR_NONE,
43 &digests
44 );
45 goto_if_error(r, "Error: PCR_Extend", error);
46
Juergen Repp920d7cd2018-04-12 10:09:46 +020047 TPML_PCR_SELECTION pcrSelectionIn = {
48 .count = 2,
49 .pcrSelections = {
50 { .hash = TPM2_ALG_SHA1,
51 .sizeofSelect = 3,
Schwarzmeier Ricardo (IFAG CCS ESS D SW A)cf4bd782018-05-28 13:59:23 +020052 .pcrSelect = { 01, 00, 03},
Juergen Repp920d7cd2018-04-12 10:09:46 +020053 },
54 { .hash = TPM2_ALG_SHA256,
55 .sizeofSelect = 3,
Schwarzmeier Ricardo (IFAG CCS ESS D SW A)cf4bd782018-05-28 13:59:23 +020056 .pcrSelect = { 01, 00, 03}
Juergen Repp920d7cd2018-04-12 10:09:46 +020057 },
58 }
59 };
60 UINT32 pcrUpdateCounter;
61 TPML_PCR_SELECTION *pcrSelectionOut;
62 TPML_DIGEST *pcrValues;
63
64 r = Esys_PCR_Read(
65 esys_context,
66 ESYS_TR_NONE,
67 ESYS_TR_NONE,
68 ESYS_TR_NONE,
69 &pcrSelectionIn,
70 &pcrUpdateCounter,
71 &pcrSelectionOut,
72 &pcrValues);
73 goto_if_error(r, "Error: PCR_Read", error);
74
75 r = Esys_PCR_Reset(
76 esys_context,
77 pcrHandle_handle,
78 ESYS_TR_PASSWORD,
79 ESYS_TR_NONE,
80 ESYS_TR_NONE);
81
82 goto_if_error(r, "Error: PCR_Reset", error);
83
84 TPM2B_EVENT eventData = { .size = 20,
85 .buffer={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,
86 1, 2, 3, 4, 5, 6, 7, 8, 9}};
87 TPML_DIGEST_VALUES *digestsEvent;
88
89 r = Esys_PCR_Event(
90 esys_context,
91 pcrHandle_handle,
92 ESYS_TR_PASSWORD,
93 ESYS_TR_NONE,
94 ESYS_TR_NONE,
95 &eventData,
96 &digestsEvent);
97
98 goto_if_error(r, "Error: PCR_Reset", error);
99
100 TPMI_YES_NO allocationSuccess;
101 UINT32 maxPCR;
102 UINT32 sizeNeeded;
103 UINT32 sizeAvailable;
104
105 r = Esys_PCR_Allocate(
106 esys_context,
107 ESYS_TR_RH_PLATFORM,
108 ESYS_TR_PASSWORD,
109 ESYS_TR_NONE,
110 ESYS_TR_NONE,
111 &pcrSelectionIn,
112 &allocationSuccess,
113 &maxPCR,
114 &sizeNeeded,
115 &sizeAvailable);
116
117 goto_if_error(r, "Error: PCR_Allocate", error);
118
Juergen Repp731135d2018-03-27 14:43:03 +0200119 return 0;
120
121 error:
122 return 1;
123
124}