1*758e9fbaSOystein Eftevaag /* SPDX-License-Identifier: BSD-2-Clause */
2*758e9fbaSOystein Eftevaag /*******************************************************************************
3*758e9fbaSOystein Eftevaag * Copyright 2017-2018, Fraunhofer SIT sponsored by Infineon Technologies AG All
4*758e9fbaSOystein Eftevaag * rights reserved.
5*758e9fbaSOystein Eftevaag ******************************************************************************/
6*758e9fbaSOystein Eftevaag
7*758e9fbaSOystein Eftevaag #ifdef HAVE_CONFIG_H
8*758e9fbaSOystein Eftevaag #include <config.h>
9*758e9fbaSOystein Eftevaag #endif
10*758e9fbaSOystein Eftevaag
11*758e9fbaSOystein Eftevaag #include <stdarg.h>
12*758e9fbaSOystein Eftevaag #include <inttypes.h>
13*758e9fbaSOystein Eftevaag #include <string.h>
14*758e9fbaSOystein Eftevaag #include <stdlib.h>
15*758e9fbaSOystein Eftevaag
16*758e9fbaSOystein Eftevaag #include <setjmp.h>
17*758e9fbaSOystein Eftevaag #include <cmocka.h>
18*758e9fbaSOystein Eftevaag
19*758e9fbaSOystein Eftevaag #include "tss2_esys.h"
20*758e9fbaSOystein Eftevaag
21*758e9fbaSOystein Eftevaag #include "tss2-esys/esys_iutil.h"
22*758e9fbaSOystein Eftevaag #define LOGMODULE tests
23*758e9fbaSOystein Eftevaag #include "util/log.h"
24*758e9fbaSOystein Eftevaag #include "util/aux_util.h"
25*758e9fbaSOystein Eftevaag
26*758e9fbaSOystein Eftevaag /**
27*758e9fbaSOystein Eftevaag * This unit test looks into a set of Esys_<cmd>() functions and tests the
28*758e9fbaSOystein Eftevaag * resubmission behaviour. The ESAPI is expected to resubmit a command for a
29*758e9fbaSOystein Eftevaag * certain number of times if the TPM return RC_YIELDED. After this number of
30*758e9fbaSOystein Eftevaag * times, the ESAPI shall not try it any further but return the TPM's error.
31*758e9fbaSOystein Eftevaag * For all these resubmissions the command must be the same as before.
32*758e9fbaSOystein Eftevaag * This shall be extended to cover all functions at some point.
33*758e9fbaSOystein Eftevaag */
34*758e9fbaSOystein Eftevaag
35*758e9fbaSOystein Eftevaag #define TCTI_YIELDER_MAGIC 0x5949454c44455200ULL /* 'YIELDER\0' */
36*758e9fbaSOystein Eftevaag #define TCTI_YIELDER_VERSION 0x1
37*758e9fbaSOystein Eftevaag
38*758e9fbaSOystein Eftevaag /*
39*758e9fbaSOystein Eftevaag * Esys handles for dummy session and key objects, and initialization values for
40*758e9fbaSOystein Eftevaag * other objects, which can be used in ESAPI test calls
41*758e9fbaSOystein Eftevaag */
42*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_POLICY_SESSION ESYS_TR_MIN_OBJECT
43*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_KEY ESYS_TR_MIN_OBJECT+1
44*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_NV_INDEX ESYS_TR_MIN_OBJECT+2
45*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_HIERARCHY_OWNER ESYS_TR_MIN_OBJECT+3
46*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_HIERARCHY_PLATFORM ESYS_TR_MIN_OBJECT+4
47*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_PRIVACY_ADMIN ESYS_TR_MIN_OBJECT+5
48*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_HMAC_SESSION ESYS_TR_MIN_OBJECT+6
49*758e9fbaSOystein Eftevaag #define DUMMY_TR_HANDLE_LOCKOUT ESYS_TR_MIN_OBJECT+7
50*758e9fbaSOystein Eftevaag #define DUMMY_IN_PUBLIC_DATA { \
51*758e9fbaSOystein Eftevaag .size = 0, \
52*758e9fbaSOystein Eftevaag .publicArea = { \
53*758e9fbaSOystein Eftevaag .type = TPM2_ALG_ECC, \
54*758e9fbaSOystein Eftevaag .nameAlg = TPM2_ALG_SHA256, \
55*758e9fbaSOystein Eftevaag .objectAttributes = (TPMA_OBJECT_USERWITHAUTH | \
56*758e9fbaSOystein Eftevaag TPMA_OBJECT_RESTRICTED | \
57*758e9fbaSOystein Eftevaag TPMA_OBJECT_SIGN_ENCRYPT | \
58*758e9fbaSOystein Eftevaag TPMA_OBJECT_FIXEDTPM | \
59*758e9fbaSOystein Eftevaag TPMA_OBJECT_FIXEDPARENT | \
60*758e9fbaSOystein Eftevaag TPMA_OBJECT_SENSITIVEDATAORIGIN), \
61*758e9fbaSOystein Eftevaag .authPolicy = { \
62*758e9fbaSOystein Eftevaag .size = 0, \
63*758e9fbaSOystein Eftevaag }, \
64*758e9fbaSOystein Eftevaag .parameters.eccDetail = { \
65*758e9fbaSOystein Eftevaag .symmetric = { \
66*758e9fbaSOystein Eftevaag .algorithm = \
67*758e9fbaSOystein Eftevaag TPM2_ALG_NULL, \
68*758e9fbaSOystein Eftevaag .keyBits.aes = \
69*758e9fbaSOystein Eftevaag 128, \
70*758e9fbaSOystein Eftevaag .mode.aes = \
71*758e9fbaSOystein Eftevaag TPM2_ALG_ECB, \
72*758e9fbaSOystein Eftevaag }, \
73*758e9fbaSOystein Eftevaag .scheme = { \
74*758e9fbaSOystein Eftevaag .scheme = \
75*758e9fbaSOystein Eftevaag TPM2_ALG_ECDSA, \
76*758e9fbaSOystein Eftevaag .details = { \
77*758e9fbaSOystein Eftevaag .ecdsa = \
78*758e9fbaSOystein Eftevaag {. \
79*758e9fbaSOystein Eftevaag hashAlg \
80*758e9fbaSOystein Eftevaag = \
81*758e9fbaSOystein Eftevaag TPM2_ALG_SHA256}}, \
82*758e9fbaSOystein Eftevaag }, \
83*758e9fbaSOystein Eftevaag .curveID = TPM2_ECC_NIST_P256, \
84*758e9fbaSOystein Eftevaag .kdf = { \
85*758e9fbaSOystein Eftevaag .scheme = TPM2_ALG_NULL, \
86*758e9fbaSOystein Eftevaag .details = {}} \
87*758e9fbaSOystein Eftevaag }, \
88*758e9fbaSOystein Eftevaag .unique.ecc = { \
89*758e9fbaSOystein Eftevaag .x = {.size = 0,.buffer = {}}, \
90*758e9fbaSOystein Eftevaag .y = {.size = 0,.buffer = {}}, \
91*758e9fbaSOystein Eftevaag }, \
92*758e9fbaSOystein Eftevaag }, \
93*758e9fbaSOystein Eftevaag }
94*758e9fbaSOystein Eftevaag
95*758e9fbaSOystein Eftevaag #define DUMMY_TPMT_PUBLIC_PARAMS { \
96*758e9fbaSOystein Eftevaag .type = TPM2_ALG_ECC, \
97*758e9fbaSOystein Eftevaag .parameters.eccDetail = { \
98*758e9fbaSOystein Eftevaag .symmetric = { \
99*758e9fbaSOystein Eftevaag .algorithm = \
100*758e9fbaSOystein Eftevaag TPM2_ALG_NULL, \
101*758e9fbaSOystein Eftevaag .keyBits.aes = \
102*758e9fbaSOystein Eftevaag 128, \
103*758e9fbaSOystein Eftevaag .mode.aes = \
104*758e9fbaSOystein Eftevaag TPM2_ALG_ECB, \
105*758e9fbaSOystein Eftevaag }, \
106*758e9fbaSOystein Eftevaag .scheme = { \
107*758e9fbaSOystein Eftevaag .scheme = \
108*758e9fbaSOystein Eftevaag TPM2_ALG_ECDSA, \
109*758e9fbaSOystein Eftevaag .details = { \
110*758e9fbaSOystein Eftevaag .ecdsa = \
111*758e9fbaSOystein Eftevaag {. \
112*758e9fbaSOystein Eftevaag hashAlg \
113*758e9fbaSOystein Eftevaag = \
114*758e9fbaSOystein Eftevaag TPM2_ALG_SHA256}}, \
115*758e9fbaSOystein Eftevaag }, \
116*758e9fbaSOystein Eftevaag .curveID = TPM2_ECC_NIST_P256, \
117*758e9fbaSOystein Eftevaag .kdf = { \
118*758e9fbaSOystein Eftevaag .scheme = TPM2_ALG_NULL, \
119*758e9fbaSOystein Eftevaag .details = {}} \
120*758e9fbaSOystein Eftevaag } \
121*758e9fbaSOystein Eftevaag }
122*758e9fbaSOystein Eftevaag
123*758e9fbaSOystein Eftevaag #define DUMMY_2B_DATA(NAME) { \
124*758e9fbaSOystein Eftevaag .size = 20, \
125*758e9fbaSOystein Eftevaag NAME = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \
126*758e9fbaSOystein Eftevaag 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} \
127*758e9fbaSOystein Eftevaag }
128*758e9fbaSOystein Eftevaag
129*758e9fbaSOystein Eftevaag #define DUMMY_2B_DATA16(NAME) { \
130*758e9fbaSOystein Eftevaag .size = 16, \
131*758e9fbaSOystein Eftevaag NAME = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \
132*758e9fbaSOystein Eftevaag 11, 12, 13, 14, 15, 16 } \
133*758e9fbaSOystein Eftevaag }
134*758e9fbaSOystein Eftevaag
135*758e9fbaSOystein Eftevaag #define DUMMY_2B_DATA0 { \
136*758e9fbaSOystein Eftevaag .size = 0, \
137*758e9fbaSOystein Eftevaag .buffer = {}, \
138*758e9fbaSOystein Eftevaag }
139*758e9fbaSOystein Eftevaag
140*758e9fbaSOystein Eftevaag #define DUMMY_SYMMETRIC {.algorithm = TPM2_ALG_AES, \
141*758e9fbaSOystein Eftevaag .keyBits = {.aes = 128}, \
142*758e9fbaSOystein Eftevaag .mode = {.aes = TPM2_ALG_CFB} \
143*758e9fbaSOystein Eftevaag }
144*758e9fbaSOystein Eftevaag
145*758e9fbaSOystein Eftevaag #define DUMMY_TPMT_TK_AUTH { .tag = TPM2_ST_AUTH_SIGNED , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
146*758e9fbaSOystein Eftevaag
147*758e9fbaSOystein Eftevaag #define DUMMY_TPMT_TK_CREATION { .tag = TPM2_ST_CREATION , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
148*758e9fbaSOystein Eftevaag
149*758e9fbaSOystein Eftevaag #define DUMMY_TPMT_TK_VERIFIED { .tag = TPM2_ST_VERIFIED , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
150*758e9fbaSOystein Eftevaag
151*758e9fbaSOystein Eftevaag #define DUMMY_TPMT_TK_HASHCHECK { .tag = TPM2_ST_HASHCHECK , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
152*758e9fbaSOystein Eftevaag
153*758e9fbaSOystein Eftevaag #define DUMMY_RSA_DECRYPT { .scheme = TPM2_ALG_NULL }
154*758e9fbaSOystein Eftevaag
155*758e9fbaSOystein Eftevaag #define DUMMY_TPMT_SIGNATURE { \
156*758e9fbaSOystein Eftevaag .sigAlg = TPM2_ALG_RSAPSS, \
157*758e9fbaSOystein Eftevaag .signature = { \
158*758e9fbaSOystein Eftevaag .rsapss = { \
159*758e9fbaSOystein Eftevaag .hash = TPM2_ALG_SHA1, .sig= {0} \
160*758e9fbaSOystein Eftevaag } \
161*758e9fbaSOystein Eftevaag } \
162*758e9fbaSOystein Eftevaag };
163*758e9fbaSOystein Eftevaag
164*758e9fbaSOystein Eftevaag typedef struct {
165*758e9fbaSOystein Eftevaag uint64_t magic;
166*758e9fbaSOystein Eftevaag uint32_t version;
167*758e9fbaSOystein Eftevaag TSS2_TCTI_TRANSMIT_FCN transmit;
168*758e9fbaSOystein Eftevaag TSS2_TCTI_RECEIVE_FCN receive;
169*758e9fbaSOystein Eftevaag TSS2_RC(*finalize) (TSS2_TCTI_CONTEXT * tctiContext);
170*758e9fbaSOystein Eftevaag TSS2_RC(*cancel) (TSS2_TCTI_CONTEXT * tctiContext);
171*758e9fbaSOystein Eftevaag TSS2_RC(*getPollHandles) (TSS2_TCTI_CONTEXT * tctiContext,
172*758e9fbaSOystein Eftevaag TSS2_TCTI_POLL_HANDLE * handles,
173*758e9fbaSOystein Eftevaag size_t * num_handles);
174*758e9fbaSOystein Eftevaag TSS2_RC(*setLocality) (TSS2_TCTI_CONTEXT * tctiContext, uint8_t locality);
175*758e9fbaSOystein Eftevaag uint32_t count;
176*758e9fbaSOystein Eftevaag uint8_t cmd[4096];
177*758e9fbaSOystein Eftevaag } TSS2_TCTI_CONTEXT_YIELDER;
178*758e9fbaSOystein Eftevaag
179*758e9fbaSOystein Eftevaag static TSS2_TCTI_CONTEXT_YIELDER *
tcti_yielder_cast(TSS2_TCTI_CONTEXT * ctx)180*758e9fbaSOystein Eftevaag tcti_yielder_cast(TSS2_TCTI_CONTEXT * ctx)
181*758e9fbaSOystein Eftevaag {
182*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *ctxi = (TSS2_TCTI_CONTEXT_YIELDER *) ctx;
183*758e9fbaSOystein Eftevaag if (ctxi == NULL || ctxi->magic != TCTI_YIELDER_MAGIC) {
184*758e9fbaSOystein Eftevaag LOG_ERROR("Bad tcti passed.");
185*758e9fbaSOystein Eftevaag return NULL;
186*758e9fbaSOystein Eftevaag }
187*758e9fbaSOystein Eftevaag return ctxi;
188*758e9fbaSOystein Eftevaag }
189*758e9fbaSOystein Eftevaag
190*758e9fbaSOystein Eftevaag static TSS2_RC
tcti_yielder_transmit(TSS2_TCTI_CONTEXT * tctiContext,size_t size,const uint8_t * buffer)191*758e9fbaSOystein Eftevaag tcti_yielder_transmit(TSS2_TCTI_CONTEXT * tctiContext,
192*758e9fbaSOystein Eftevaag size_t size, const uint8_t * buffer)
193*758e9fbaSOystein Eftevaag {
194*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tctiContext);
195*758e9fbaSOystein Eftevaag
196*758e9fbaSOystein Eftevaag if (size > sizeof(tcti_yielder->cmd)) {
197*758e9fbaSOystein Eftevaag LOG_ERROR("Bad size value.");
198*758e9fbaSOystein Eftevaag return TSS2_TCTI_RC_INSUFFICIENT_BUFFER;
199*758e9fbaSOystein Eftevaag }
200*758e9fbaSOystein Eftevaag
201*758e9fbaSOystein Eftevaag if (tcti_yielder->count != 0)
202*758e9fbaSOystein Eftevaag assert_memory_equal(&tcti_yielder->cmd[0], buffer, size);
203*758e9fbaSOystein Eftevaag
204*758e9fbaSOystein Eftevaag tcti_yielder->count++;
205*758e9fbaSOystein Eftevaag memcpy(&tcti_yielder->cmd[0], buffer, size);
206*758e9fbaSOystein Eftevaag
207*758e9fbaSOystein Eftevaag return TSS2_RC_SUCCESS;
208*758e9fbaSOystein Eftevaag }
209*758e9fbaSOystein Eftevaag
210*758e9fbaSOystein Eftevaag const uint8_t yielded_response[] = {
211*758e9fbaSOystein Eftevaag 0x80, 0x01, /* TPM_ST_NO_SESSION */
212*758e9fbaSOystein Eftevaag 0x00, 0x00, 0x00, 0x0A, /* Response Size 10 */
213*758e9fbaSOystein Eftevaag 0x00, 0x00, 0x09, 0x08 /* TPM_RC_YIELDED */
214*758e9fbaSOystein Eftevaag };
215*758e9fbaSOystein Eftevaag
216*758e9fbaSOystein Eftevaag static TSS2_RC
tcti_yielder_receive(TSS2_TCTI_CONTEXT * tctiContext,size_t * response_size,uint8_t * response_buffer,int32_t timeout)217*758e9fbaSOystein Eftevaag tcti_yielder_receive(TSS2_TCTI_CONTEXT * tctiContext,
218*758e9fbaSOystein Eftevaag size_t * response_size,
219*758e9fbaSOystein Eftevaag uint8_t * response_buffer, int32_t timeout)
220*758e9fbaSOystein Eftevaag {
221*758e9fbaSOystein Eftevaag *response_size = sizeof(yielded_response);
222*758e9fbaSOystein Eftevaag if (response_buffer != NULL)
223*758e9fbaSOystein Eftevaag memcpy(response_buffer, &yielded_response[0], sizeof(yielded_response));
224*758e9fbaSOystein Eftevaag
225*758e9fbaSOystein Eftevaag return TSS2_RC_SUCCESS;
226*758e9fbaSOystein Eftevaag }
227*758e9fbaSOystein Eftevaag
228*758e9fbaSOystein Eftevaag static void
tcti_yielder_finalize(TSS2_TCTI_CONTEXT * tctiContext)229*758e9fbaSOystein Eftevaag tcti_yielder_finalize(TSS2_TCTI_CONTEXT * tctiContext)
230*758e9fbaSOystein Eftevaag {
231*758e9fbaSOystein Eftevaag memset(tctiContext, 0, sizeof(TSS2_TCTI_CONTEXT_YIELDER));
232*758e9fbaSOystein Eftevaag }
233*758e9fbaSOystein Eftevaag
234*758e9fbaSOystein Eftevaag static TSS2_RC
tcti_yielder_initialize(TSS2_TCTI_CONTEXT * tctiContext,size_t * contextSize)235*758e9fbaSOystein Eftevaag tcti_yielder_initialize(TSS2_TCTI_CONTEXT * tctiContext, size_t * contextSize)
236*758e9fbaSOystein Eftevaag {
237*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder =
238*758e9fbaSOystein Eftevaag (TSS2_TCTI_CONTEXT_YIELDER *) tctiContext;
239*758e9fbaSOystein Eftevaag
240*758e9fbaSOystein Eftevaag if (tctiContext == NULL && contextSize == NULL) {
241*758e9fbaSOystein Eftevaag return TSS2_TCTI_RC_BAD_VALUE;
242*758e9fbaSOystein Eftevaag } else if (tctiContext == NULL) {
243*758e9fbaSOystein Eftevaag *contextSize = sizeof(*tcti_yielder);
244*758e9fbaSOystein Eftevaag return TSS2_RC_SUCCESS;
245*758e9fbaSOystein Eftevaag }
246*758e9fbaSOystein Eftevaag
247*758e9fbaSOystein Eftevaag /* Init TCTI context */
248*758e9fbaSOystein Eftevaag memset(tcti_yielder, 0, sizeof(*tcti_yielder));
249*758e9fbaSOystein Eftevaag TSS2_TCTI_MAGIC(tctiContext) = TCTI_YIELDER_MAGIC;
250*758e9fbaSOystein Eftevaag TSS2_TCTI_VERSION(tctiContext) = TCTI_YIELDER_VERSION;
251*758e9fbaSOystein Eftevaag TSS2_TCTI_TRANSMIT(tctiContext) = tcti_yielder_transmit;
252*758e9fbaSOystein Eftevaag TSS2_TCTI_RECEIVE(tctiContext) = tcti_yielder_receive;
253*758e9fbaSOystein Eftevaag TSS2_TCTI_FINALIZE(tctiContext) = tcti_yielder_finalize;
254*758e9fbaSOystein Eftevaag TSS2_TCTI_CANCEL(tctiContext) = NULL;
255*758e9fbaSOystein Eftevaag TSS2_TCTI_GET_POLL_HANDLES(tctiContext) = NULL;
256*758e9fbaSOystein Eftevaag TSS2_TCTI_SET_LOCALITY(tctiContext) = NULL;
257*758e9fbaSOystein Eftevaag tcti_yielder->count = 0;
258*758e9fbaSOystein Eftevaag
259*758e9fbaSOystein Eftevaag return TSS2_RC_SUCCESS;
260*758e9fbaSOystein Eftevaag }
261*758e9fbaSOystein Eftevaag
262*758e9fbaSOystein Eftevaag static int
setup(void ** state)263*758e9fbaSOystein Eftevaag setup(void **state)
264*758e9fbaSOystein Eftevaag {
265*758e9fbaSOystein Eftevaag TSS2_RC r;
266*758e9fbaSOystein Eftevaag ESYS_CONTEXT *ectx;
267*758e9fbaSOystein Eftevaag size_t size = sizeof(TSS2_TCTI_CONTEXT_YIELDER);
268*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti = malloc(size);
269*758e9fbaSOystein Eftevaag ESYS_TR objectHandle;
270*758e9fbaSOystein Eftevaag RSRC_NODE_T *objectHandleNode = NULL;
271*758e9fbaSOystein Eftevaag
272*758e9fbaSOystein Eftevaag r = tcti_yielder_initialize(tcti, &size);
273*758e9fbaSOystein Eftevaag if (r)
274*758e9fbaSOystein Eftevaag return (int)r;
275*758e9fbaSOystein Eftevaag r = Esys_Initialize(&ectx, tcti, NULL);
276*758e9fbaSOystein Eftevaag if (r)
277*758e9fbaSOystein Eftevaag return (int)r;
278*758e9fbaSOystein Eftevaag
279*758e9fbaSOystein Eftevaag /* Create dummy object to enable usage of SAPI prepare functions in the tests */
280*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_POLICY_SESSION;
281*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
282*758e9fbaSOystein Eftevaag if (r)
283*758e9fbaSOystein Eftevaag return (int)r;
284*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_SESSION_RSRC;
285*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_POLICY_SESSION_FIRST;
286*758e9fbaSOystein Eftevaag
287*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_HMAC_SESSION;
288*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
289*758e9fbaSOystein Eftevaag if (r)
290*758e9fbaSOystein Eftevaag return (int)r;
291*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_SESSION_RSRC;
292*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_HMAC_SESSION_FIRST;
293*758e9fbaSOystein Eftevaag
294*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_KEY;
295*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
296*758e9fbaSOystein Eftevaag if (r)
297*758e9fbaSOystein Eftevaag return (int)r;
298*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_KEY_RSRC;
299*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_TRANSIENT_FIRST;
300*758e9fbaSOystein Eftevaag
301*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_HIERARCHY_OWNER;
302*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
303*758e9fbaSOystein Eftevaag if (r)
304*758e9fbaSOystein Eftevaag return (int)r;
305*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_WITHOUT_MISC_RSRC;
306*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_RH_OWNER;
307*758e9fbaSOystein Eftevaag
308*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
309*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
310*758e9fbaSOystein Eftevaag if (r)
311*758e9fbaSOystein Eftevaag return (int)r;
312*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_WITHOUT_MISC_RSRC;
313*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_RH_PLATFORM;
314*758e9fbaSOystein Eftevaag
315*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_LOCKOUT;
316*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
317*758e9fbaSOystein Eftevaag if (r)
318*758e9fbaSOystein Eftevaag return (int)r;
319*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_WITHOUT_MISC_RSRC;
320*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_RH_LOCKOUT;
321*758e9fbaSOystein Eftevaag
322*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_NV_INDEX;
323*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
324*758e9fbaSOystein Eftevaag if (r)
325*758e9fbaSOystein Eftevaag return (int)r;
326*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_WITHOUT_MISC_RSRC;
327*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_NV_INDEX_FIRST;
328*758e9fbaSOystein Eftevaag
329*758e9fbaSOystein Eftevaag objectHandle = DUMMY_TR_HANDLE_PRIVACY_ADMIN;
330*758e9fbaSOystein Eftevaag r = esys_CreateResourceObject(ectx, objectHandle, &objectHandleNode);
331*758e9fbaSOystein Eftevaag if (r)
332*758e9fbaSOystein Eftevaag return (int)r;
333*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.rsrcType = IESYSC_WITHOUT_MISC_RSRC;
334*758e9fbaSOystein Eftevaag objectHandleNode->rsrc.handle = TPM2_RH_ENDORSEMENT;
335*758e9fbaSOystein Eftevaag *state = (void *)ectx;
336*758e9fbaSOystein Eftevaag return 0;
337*758e9fbaSOystein Eftevaag }
338*758e9fbaSOystein Eftevaag
339*758e9fbaSOystein Eftevaag static int
teardown(void ** state)340*758e9fbaSOystein Eftevaag teardown(void **state)
341*758e9fbaSOystein Eftevaag {
342*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
343*758e9fbaSOystein Eftevaag ESYS_CONTEXT *ectx = (ESYS_CONTEXT *) * state;
344*758e9fbaSOystein Eftevaag Esys_GetTcti(ectx, &tcti);
345*758e9fbaSOystein Eftevaag Esys_Finalize(&ectx);
346*758e9fbaSOystein Eftevaag free(tcti);
347*758e9fbaSOystein Eftevaag return 0;
348*758e9fbaSOystein Eftevaag }
349*758e9fbaSOystein Eftevaag
350*758e9fbaSOystein Eftevaag static void
test_Startup(void ** state)351*758e9fbaSOystein Eftevaag test_Startup(void **state)
352*758e9fbaSOystein Eftevaag {
353*758e9fbaSOystein Eftevaag TSS2_RC r;
354*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
355*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
356*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
357*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
358*758e9fbaSOystein Eftevaag
359*758e9fbaSOystein Eftevaag TPM2_SU startupType = TPM2_SU_CLEAR;
360*758e9fbaSOystein Eftevaag r = Esys_Startup(esys_context, startupType);
361*758e9fbaSOystein Eftevaag
362*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
363*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
364*758e9fbaSOystein Eftevaag }
365*758e9fbaSOystein Eftevaag
366*758e9fbaSOystein Eftevaag static void
test_Shutdown(void ** state)367*758e9fbaSOystein Eftevaag test_Shutdown(void **state)
368*758e9fbaSOystein Eftevaag {
369*758e9fbaSOystein Eftevaag TSS2_RC r;
370*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
371*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
372*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
373*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
374*758e9fbaSOystein Eftevaag
375*758e9fbaSOystein Eftevaag TPM2_SU shutdownType = TPM2_SU_CLEAR;
376*758e9fbaSOystein Eftevaag r = Esys_Shutdown(esys_context,
377*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, shutdownType);
378*758e9fbaSOystein Eftevaag
379*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
380*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
381*758e9fbaSOystein Eftevaag }
382*758e9fbaSOystein Eftevaag
383*758e9fbaSOystein Eftevaag static void
test_SelfTest(void ** state)384*758e9fbaSOystein Eftevaag test_SelfTest(void **state)
385*758e9fbaSOystein Eftevaag {
386*758e9fbaSOystein Eftevaag TSS2_RC r;
387*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
388*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
389*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
390*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
391*758e9fbaSOystein Eftevaag
392*758e9fbaSOystein Eftevaag r = Esys_SelfTest(esys_context,
393*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, 0);
394*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
395*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
396*758e9fbaSOystein Eftevaag }
397*758e9fbaSOystein Eftevaag
398*758e9fbaSOystein Eftevaag static void
test_IncrementalSelfTest(void ** state)399*758e9fbaSOystein Eftevaag test_IncrementalSelfTest(void **state)
400*758e9fbaSOystein Eftevaag {
401*758e9fbaSOystein Eftevaag TSS2_RC r;
402*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
403*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
404*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
405*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
406*758e9fbaSOystein Eftevaag
407*758e9fbaSOystein Eftevaag TPML_ALG toTest = {0};
408*758e9fbaSOystein Eftevaag TPML_ALG *toDoList = {0} ;
409*758e9fbaSOystein Eftevaag r = Esys_IncrementalSelfTest(esys_context,
410*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
411*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
412*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &toTest, &toDoList);
413*758e9fbaSOystein Eftevaag
414*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
415*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
416*758e9fbaSOystein Eftevaag }
417*758e9fbaSOystein Eftevaag
418*758e9fbaSOystein Eftevaag static void
test_GetTestResult(void ** state)419*758e9fbaSOystein Eftevaag test_GetTestResult(void **state)
420*758e9fbaSOystein Eftevaag {
421*758e9fbaSOystein Eftevaag TSS2_RC r;
422*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
423*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
424*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
425*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
426*758e9fbaSOystein Eftevaag
427*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER *outData;
428*758e9fbaSOystein Eftevaag TPM2_RC testResult;
429*758e9fbaSOystein Eftevaag r = Esys_GetTestResult(esys_context,
430*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
431*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &outData, &testResult);
432*758e9fbaSOystein Eftevaag
433*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
434*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
435*758e9fbaSOystein Eftevaag }
436*758e9fbaSOystein Eftevaag
437*758e9fbaSOystein Eftevaag static void
test_StartAuthSession(void ** state)438*758e9fbaSOystein Eftevaag test_StartAuthSession(void **state)
439*758e9fbaSOystein Eftevaag {
440*758e9fbaSOystein Eftevaag TSS2_RC r;
441*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
442*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
443*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
444*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
445*758e9fbaSOystein Eftevaag
446*758e9fbaSOystein Eftevaag ESYS_TR tpmKey_handle = ESYS_TR_NONE;
447*758e9fbaSOystein Eftevaag ESYS_TR bind_handle = ESYS_TR_NONE;
448*758e9fbaSOystein Eftevaag TPM2B_NONCE nonceCaller = DUMMY_2B_DATA(.buffer);
449*758e9fbaSOystein Eftevaag TPM2_SE sessionType = TPM2_SE_HMAC;
450*758e9fbaSOystein Eftevaag TPMT_SYM_DEF symmetric = {.algorithm = TPM2_ALG_AES,
451*758e9fbaSOystein Eftevaag .keyBits = {.aes = 128},
452*758e9fbaSOystein Eftevaag .mode = {.aes = TPM2_ALG_CFB}
453*758e9fbaSOystein Eftevaag };
454*758e9fbaSOystein Eftevaag TPMI_ALG_HASH authHash = TPM2_ALG_SHA1;
455*758e9fbaSOystein Eftevaag ESYS_TR sessionHandle_handle;
456*758e9fbaSOystein Eftevaag
457*758e9fbaSOystein Eftevaag r = Esys_StartAuthSession(esys_context,
458*758e9fbaSOystein Eftevaag tpmKey_handle,
459*758e9fbaSOystein Eftevaag bind_handle,
460*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
461*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
462*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
463*758e9fbaSOystein Eftevaag &nonceCaller,
464*758e9fbaSOystein Eftevaag sessionType,
465*758e9fbaSOystein Eftevaag &symmetric,
466*758e9fbaSOystein Eftevaag authHash, &sessionHandle_handle);
467*758e9fbaSOystein Eftevaag
468*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
469*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
470*758e9fbaSOystein Eftevaag }
471*758e9fbaSOystein Eftevaag
472*758e9fbaSOystein Eftevaag static void
test_PolicyRestart(void ** state)473*758e9fbaSOystein Eftevaag test_PolicyRestart(void **state)
474*758e9fbaSOystein Eftevaag {
475*758e9fbaSOystein Eftevaag TSS2_RC r;
476*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
477*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
478*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
479*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
480*758e9fbaSOystein Eftevaag
481*758e9fbaSOystein Eftevaag r = Esys_PolicyRestart(esys_context,
482*758e9fbaSOystein Eftevaag DUMMY_TR_HANDLE_POLICY_SESSION,
483*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE);
484*758e9fbaSOystein Eftevaag
485*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
486*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
487*758e9fbaSOystein Eftevaag }
488*758e9fbaSOystein Eftevaag
489*758e9fbaSOystein Eftevaag static void
test_Create(void ** state)490*758e9fbaSOystein Eftevaag test_Create(void **state)
491*758e9fbaSOystein Eftevaag {
492*758e9fbaSOystein Eftevaag TSS2_RC r;
493*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
494*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
495*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
496*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
497*758e9fbaSOystein Eftevaag TPM2B_SENSITIVE_CREATE inSensitive = { 0 };
498*758e9fbaSOystein Eftevaag TPM2B_PUBLIC inPublic = DUMMY_IN_PUBLIC_DATA;
499*758e9fbaSOystein Eftevaag TPM2B_DATA outsideInfo = DUMMY_2B_DATA0;
500*758e9fbaSOystein Eftevaag TPML_PCR_SELECTION creationPCR = {
501*758e9fbaSOystein Eftevaag .count = 0,
502*758e9fbaSOystein Eftevaag };
503*758e9fbaSOystein Eftevaag TPM2B_PRIVATE *outPrivate;
504*758e9fbaSOystein Eftevaag TPM2B_PUBLIC *outPublic;
505*758e9fbaSOystein Eftevaag TPM2B_CREATION_DATA *creationData;
506*758e9fbaSOystein Eftevaag TPM2B_DIGEST *creationHash;
507*758e9fbaSOystein Eftevaag TPMT_TK_CREATION *creationTicket;
508*758e9fbaSOystein Eftevaag
509*758e9fbaSOystein Eftevaag r = Esys_Create(esys_context,
510*758e9fbaSOystein Eftevaag DUMMY_TR_HANDLE_KEY,
511*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
512*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
513*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
514*758e9fbaSOystein Eftevaag &inSensitive,
515*758e9fbaSOystein Eftevaag &inPublic,
516*758e9fbaSOystein Eftevaag &outsideInfo,
517*758e9fbaSOystein Eftevaag &creationPCR,
518*758e9fbaSOystein Eftevaag &outPrivate,
519*758e9fbaSOystein Eftevaag &outPublic, &creationData, &creationHash, &creationTicket);
520*758e9fbaSOystein Eftevaag
521*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
522*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
523*758e9fbaSOystein Eftevaag }
524*758e9fbaSOystein Eftevaag
525*758e9fbaSOystein Eftevaag static void
test_Load(void ** state)526*758e9fbaSOystein Eftevaag test_Load(void **state)
527*758e9fbaSOystein Eftevaag {
528*758e9fbaSOystein Eftevaag TSS2_RC r;
529*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
530*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
531*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
532*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
533*758e9fbaSOystein Eftevaag
534*758e9fbaSOystein Eftevaag TPM2B_PRIVATE inPrivate = DUMMY_2B_DATA(.buffer);
535*758e9fbaSOystein Eftevaag TPM2B_PUBLIC inPublic = DUMMY_IN_PUBLIC_DATA;
536*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle;
537*758e9fbaSOystein Eftevaag r = Esys_Load(esys_context,
538*758e9fbaSOystein Eftevaag DUMMY_TR_HANDLE_KEY,
539*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
540*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
541*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &inPrivate, &inPublic, &objectHandle_handle);
542*758e9fbaSOystein Eftevaag
543*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
544*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
545*758e9fbaSOystein Eftevaag }
546*758e9fbaSOystein Eftevaag
547*758e9fbaSOystein Eftevaag static void
test_LoadExternal(void ** state)548*758e9fbaSOystein Eftevaag test_LoadExternal(void **state)
549*758e9fbaSOystein Eftevaag {
550*758e9fbaSOystein Eftevaag TSS2_RC r;
551*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
552*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
553*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
554*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
555*758e9fbaSOystein Eftevaag
556*758e9fbaSOystein Eftevaag TPM2B_PUBLIC inPublic = DUMMY_IN_PUBLIC_DATA;
557*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle;
558*758e9fbaSOystein Eftevaag r = Esys_LoadExternal(esys_context,
559*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
560*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
561*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
562*758e9fbaSOystein Eftevaag NULL, &inPublic, TPM2_RH_OWNER, &objectHandle_handle);
563*758e9fbaSOystein Eftevaag
564*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
565*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
566*758e9fbaSOystein Eftevaag }
567*758e9fbaSOystein Eftevaag
568*758e9fbaSOystein Eftevaag static void
test_ReadPublic(void ** state)569*758e9fbaSOystein Eftevaag test_ReadPublic(void **state)
570*758e9fbaSOystein Eftevaag {
571*758e9fbaSOystein Eftevaag TSS2_RC r;
572*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
573*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
574*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
575*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
576*758e9fbaSOystein Eftevaag
577*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle = DUMMY_TR_HANDLE_KEY;
578*758e9fbaSOystein Eftevaag TPM2B_PUBLIC *outPublic;
579*758e9fbaSOystein Eftevaag TPM2B_NAME *name;
580*758e9fbaSOystein Eftevaag TPM2B_NAME *qualifiedName;
581*758e9fbaSOystein Eftevaag r = Esys_ReadPublic(esys_context,
582*758e9fbaSOystein Eftevaag objectHandle_handle,
583*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
584*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
585*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &outPublic, &name, &qualifiedName);
586*758e9fbaSOystein Eftevaag
587*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
588*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
589*758e9fbaSOystein Eftevaag }
590*758e9fbaSOystein Eftevaag
591*758e9fbaSOystein Eftevaag static void
test_ActivateCredential(void ** state)592*758e9fbaSOystein Eftevaag test_ActivateCredential(void **state)
593*758e9fbaSOystein Eftevaag {
594*758e9fbaSOystein Eftevaag TSS2_RC r;
595*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
596*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
597*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
598*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
599*758e9fbaSOystein Eftevaag
600*758e9fbaSOystein Eftevaag ESYS_TR activateHandle_handle = DUMMY_TR_HANDLE_KEY;
601*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
602*758e9fbaSOystein Eftevaag TPM2B_ID_OBJECT credentialBlob = DUMMY_2B_DATA(.credential);
603*758e9fbaSOystein Eftevaag TPM2B_ENCRYPTED_SECRET secret = DUMMY_2B_DATA(.secret);;
604*758e9fbaSOystein Eftevaag TPM2B_DIGEST *certInfo;
605*758e9fbaSOystein Eftevaag r = Esys_ActivateCredential(esys_context,
606*758e9fbaSOystein Eftevaag activateHandle_handle,
607*758e9fbaSOystein Eftevaag keyHandle_handle,
608*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
609*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
610*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
611*758e9fbaSOystein Eftevaag &credentialBlob, &secret, &certInfo);
612*758e9fbaSOystein Eftevaag
613*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
614*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
615*758e9fbaSOystein Eftevaag }
616*758e9fbaSOystein Eftevaag
617*758e9fbaSOystein Eftevaag static void
test_MakeCredential(void ** state)618*758e9fbaSOystein Eftevaag test_MakeCredential(void **state)
619*758e9fbaSOystein Eftevaag {
620*758e9fbaSOystein Eftevaag TSS2_RC r;
621*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
622*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
623*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
624*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
625*758e9fbaSOystein Eftevaag
626*758e9fbaSOystein Eftevaag ESYS_TR handle_handle = ESYS_TR_NONE;
627*758e9fbaSOystein Eftevaag TPM2B_DIGEST credential = DUMMY_2B_DATA(.buffer);
628*758e9fbaSOystein Eftevaag TPM2B_NAME objectName = DUMMY_2B_DATA(.name);;
629*758e9fbaSOystein Eftevaag TPM2B_ID_OBJECT *credentialBlob;
630*758e9fbaSOystein Eftevaag TPM2B_ENCRYPTED_SECRET *secret;
631*758e9fbaSOystein Eftevaag r = Esys_MakeCredential(esys_context,
632*758e9fbaSOystein Eftevaag handle_handle,
633*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
634*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
635*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
636*758e9fbaSOystein Eftevaag &credential, &objectName, &credentialBlob, &secret);
637*758e9fbaSOystein Eftevaag
638*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
639*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
640*758e9fbaSOystein Eftevaag }
641*758e9fbaSOystein Eftevaag
642*758e9fbaSOystein Eftevaag static void
test_Unseal(void ** state)643*758e9fbaSOystein Eftevaag test_Unseal(void **state)
644*758e9fbaSOystein Eftevaag {
645*758e9fbaSOystein Eftevaag TSS2_RC r;
646*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
647*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
648*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
649*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
650*758e9fbaSOystein Eftevaag
651*758e9fbaSOystein Eftevaag ESYS_TR itemHandle_handle = DUMMY_TR_HANDLE_KEY;
652*758e9fbaSOystein Eftevaag TPM2B_SENSITIVE_DATA *outData;
653*758e9fbaSOystein Eftevaag r = Esys_Unseal(esys_context,
654*758e9fbaSOystein Eftevaag itemHandle_handle,
655*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE, &outData);
656*758e9fbaSOystein Eftevaag
657*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
658*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
659*758e9fbaSOystein Eftevaag }
660*758e9fbaSOystein Eftevaag
661*758e9fbaSOystein Eftevaag static void
test_ObjectChangeAuth(void ** state)662*758e9fbaSOystein Eftevaag test_ObjectChangeAuth(void **state)
663*758e9fbaSOystein Eftevaag {
664*758e9fbaSOystein Eftevaag TSS2_RC r;
665*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
666*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
667*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
668*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
669*758e9fbaSOystein Eftevaag
670*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle = DUMMY_TR_HANDLE_KEY;
671*758e9fbaSOystein Eftevaag ESYS_TR parentHandle_handle = DUMMY_TR_HANDLE_KEY;
672*758e9fbaSOystein Eftevaag TPM2B_AUTH newAuth = DUMMY_2B_DATA(.buffer);
673*758e9fbaSOystein Eftevaag TPM2B_PRIVATE *outPrivate;
674*758e9fbaSOystein Eftevaag r = Esys_ObjectChangeAuth(esys_context,
675*758e9fbaSOystein Eftevaag objectHandle_handle,
676*758e9fbaSOystein Eftevaag parentHandle_handle,
677*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
678*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
679*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &newAuth, &outPrivate);
680*758e9fbaSOystein Eftevaag
681*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
682*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
683*758e9fbaSOystein Eftevaag }
684*758e9fbaSOystein Eftevaag
685*758e9fbaSOystein Eftevaag static void
test_Duplicate(void ** state)686*758e9fbaSOystein Eftevaag test_Duplicate(void **state)
687*758e9fbaSOystein Eftevaag {
688*758e9fbaSOystein Eftevaag TSS2_RC r;
689*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
690*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
691*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
692*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
693*758e9fbaSOystein Eftevaag
694*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle = DUMMY_TR_HANDLE_KEY;
695*758e9fbaSOystein Eftevaag ESYS_TR newParentHandle_handle = DUMMY_TR_HANDLE_KEY;
696*758e9fbaSOystein Eftevaag TPM2B_DATA encryptionKeyIn = DUMMY_2B_DATA(.buffer);
697*758e9fbaSOystein Eftevaag TPMT_SYM_DEF_OBJECT symmetricAlg = DUMMY_SYMMETRIC;
698*758e9fbaSOystein Eftevaag TPM2B_DATA *encryptionKeyOut;
699*758e9fbaSOystein Eftevaag TPM2B_PRIVATE *duplicate;
700*758e9fbaSOystein Eftevaag TPM2B_ENCRYPTED_SECRET *outSymSeed;
701*758e9fbaSOystein Eftevaag r = Esys_Duplicate(esys_context,
702*758e9fbaSOystein Eftevaag objectHandle_handle,
703*758e9fbaSOystein Eftevaag newParentHandle_handle,
704*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
705*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
706*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
707*758e9fbaSOystein Eftevaag &encryptionKeyIn,
708*758e9fbaSOystein Eftevaag &symmetricAlg,
709*758e9fbaSOystein Eftevaag &encryptionKeyOut, &duplicate, &outSymSeed);
710*758e9fbaSOystein Eftevaag
711*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
712*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
713*758e9fbaSOystein Eftevaag }
714*758e9fbaSOystein Eftevaag
715*758e9fbaSOystein Eftevaag static void
test_Rewrap(void ** state)716*758e9fbaSOystein Eftevaag test_Rewrap(void **state)
717*758e9fbaSOystein Eftevaag {
718*758e9fbaSOystein Eftevaag TSS2_RC r;
719*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
720*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
721*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
722*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
723*758e9fbaSOystein Eftevaag
724*758e9fbaSOystein Eftevaag ESYS_TR oldParent_handle = DUMMY_TR_HANDLE_KEY;
725*758e9fbaSOystein Eftevaag ESYS_TR newParent_handle = DUMMY_TR_HANDLE_KEY;
726*758e9fbaSOystein Eftevaag TPM2B_PRIVATE inDuplicate = DUMMY_2B_DATA(.buffer);
727*758e9fbaSOystein Eftevaag TPM2B_NAME name = DUMMY_2B_DATA(.name);
728*758e9fbaSOystein Eftevaag TPM2B_ENCRYPTED_SECRET inSymSeed = DUMMY_2B_DATA(.secret);
729*758e9fbaSOystein Eftevaag TPM2B_PRIVATE *outDuplicate;
730*758e9fbaSOystein Eftevaag TPM2B_ENCRYPTED_SECRET *outSymSeed;
731*758e9fbaSOystein Eftevaag r = Esys_Rewrap(esys_context,
732*758e9fbaSOystein Eftevaag oldParent_handle,
733*758e9fbaSOystein Eftevaag newParent_handle,
734*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
735*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
736*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
737*758e9fbaSOystein Eftevaag &inDuplicate,
738*758e9fbaSOystein Eftevaag &name, &inSymSeed, &outDuplicate, &outSymSeed);
739*758e9fbaSOystein Eftevaag
740*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
741*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
742*758e9fbaSOystein Eftevaag }
743*758e9fbaSOystein Eftevaag
744*758e9fbaSOystein Eftevaag static void
test_Import(void ** state)745*758e9fbaSOystein Eftevaag test_Import(void **state)
746*758e9fbaSOystein Eftevaag {
747*758e9fbaSOystein Eftevaag TSS2_RC r;
748*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
749*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
750*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
751*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
752*758e9fbaSOystein Eftevaag
753*758e9fbaSOystein Eftevaag ESYS_TR parentHandle_handle = DUMMY_TR_HANDLE_KEY;
754*758e9fbaSOystein Eftevaag TPM2B_DATA encryptionKey = DUMMY_2B_DATA(.buffer);
755*758e9fbaSOystein Eftevaag TPM2B_PUBLIC objectPublic = DUMMY_IN_PUBLIC_DATA;
756*758e9fbaSOystein Eftevaag TPM2B_PRIVATE duplicate = DUMMY_2B_DATA(.buffer);
757*758e9fbaSOystein Eftevaag TPM2B_ENCRYPTED_SECRET inSymSeed = DUMMY_2B_DATA(.secret);
758*758e9fbaSOystein Eftevaag TPMT_SYM_DEF_OBJECT symmetricAlg = DUMMY_SYMMETRIC;
759*758e9fbaSOystein Eftevaag TPM2B_PRIVATE *outPrivate;
760*758e9fbaSOystein Eftevaag r = Esys_Import(esys_context,
761*758e9fbaSOystein Eftevaag parentHandle_handle,
762*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
763*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
764*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
765*758e9fbaSOystein Eftevaag &encryptionKey,
766*758e9fbaSOystein Eftevaag &objectPublic,
767*758e9fbaSOystein Eftevaag &duplicate, &inSymSeed, &symmetricAlg, &outPrivate);
768*758e9fbaSOystein Eftevaag
769*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
770*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
771*758e9fbaSOystein Eftevaag }
772*758e9fbaSOystein Eftevaag
773*758e9fbaSOystein Eftevaag static void
test_RSA_Encrypt(void ** state)774*758e9fbaSOystein Eftevaag test_RSA_Encrypt(void **state)
775*758e9fbaSOystein Eftevaag {
776*758e9fbaSOystein Eftevaag TSS2_RC r;
777*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
778*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
779*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
780*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
781*758e9fbaSOystein Eftevaag
782*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
783*758e9fbaSOystein Eftevaag TPM2B_PUBLIC_KEY_RSA message = DUMMY_2B_DATA(.buffer);
784*758e9fbaSOystein Eftevaag TPMT_RSA_DECRYPT inScheme = DUMMY_RSA_DECRYPT;
785*758e9fbaSOystein Eftevaag TPM2B_DATA label = DUMMY_2B_DATA(.buffer);
786*758e9fbaSOystein Eftevaag TPM2B_PUBLIC_KEY_RSA *outData;
787*758e9fbaSOystein Eftevaag r = Esys_RSA_Encrypt(esys_context,
788*758e9fbaSOystein Eftevaag keyHandle_handle,
789*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
790*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
791*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &message, &inScheme, &label, &outData);
792*758e9fbaSOystein Eftevaag
793*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
794*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
795*758e9fbaSOystein Eftevaag }
796*758e9fbaSOystein Eftevaag
797*758e9fbaSOystein Eftevaag static void
test_RSA_Decrypt(void ** state)798*758e9fbaSOystein Eftevaag test_RSA_Decrypt(void **state)
799*758e9fbaSOystein Eftevaag {
800*758e9fbaSOystein Eftevaag TSS2_RC r;
801*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
802*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
803*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
804*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
805*758e9fbaSOystein Eftevaag
806*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
807*758e9fbaSOystein Eftevaag TPM2B_PUBLIC_KEY_RSA cipherText = DUMMY_2B_DATA(.buffer);
808*758e9fbaSOystein Eftevaag TPMT_RSA_DECRYPT inScheme = DUMMY_RSA_DECRYPT;
809*758e9fbaSOystein Eftevaag TPM2B_DATA label = DUMMY_2B_DATA(.buffer);
810*758e9fbaSOystein Eftevaag TPM2B_PUBLIC_KEY_RSA *message;
811*758e9fbaSOystein Eftevaag r = Esys_RSA_Decrypt(esys_context,
812*758e9fbaSOystein Eftevaag keyHandle_handle,
813*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
814*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
815*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
816*758e9fbaSOystein Eftevaag &cipherText, &inScheme, &label, &message);
817*758e9fbaSOystein Eftevaag
818*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
819*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
820*758e9fbaSOystein Eftevaag }
821*758e9fbaSOystein Eftevaag
822*758e9fbaSOystein Eftevaag static void
test_ECDH_KeyGen(void ** state)823*758e9fbaSOystein Eftevaag test_ECDH_KeyGen(void **state)
824*758e9fbaSOystein Eftevaag {
825*758e9fbaSOystein Eftevaag TSS2_RC r;
826*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
827*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
828*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
829*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
830*758e9fbaSOystein Eftevaag
831*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
832*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *zPoint;
833*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *pubPoint;
834*758e9fbaSOystein Eftevaag r = Esys_ECDH_KeyGen(esys_context,
835*758e9fbaSOystein Eftevaag keyHandle_handle,
836*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
837*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &zPoint, &pubPoint);
838*758e9fbaSOystein Eftevaag
839*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
840*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
841*758e9fbaSOystein Eftevaag }
842*758e9fbaSOystein Eftevaag
843*758e9fbaSOystein Eftevaag static void
test_ECDH_ZGen(void ** state)844*758e9fbaSOystein Eftevaag test_ECDH_ZGen(void **state)
845*758e9fbaSOystein Eftevaag {
846*758e9fbaSOystein Eftevaag TSS2_RC r;
847*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
848*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
849*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
850*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
851*758e9fbaSOystein Eftevaag
852*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
853*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT inPoint = { 0 };
854*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *outPoint;
855*758e9fbaSOystein Eftevaag r = Esys_ECDH_ZGen(esys_context,
856*758e9fbaSOystein Eftevaag keyHandle_handle,
857*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
858*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &inPoint, &outPoint);
859*758e9fbaSOystein Eftevaag
860*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
861*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
862*758e9fbaSOystein Eftevaag }
863*758e9fbaSOystein Eftevaag
864*758e9fbaSOystein Eftevaag static void
test_ECC_Parameters(void ** state)865*758e9fbaSOystein Eftevaag test_ECC_Parameters(void **state)
866*758e9fbaSOystein Eftevaag {
867*758e9fbaSOystein Eftevaag TSS2_RC r;
868*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
869*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
870*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
871*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
872*758e9fbaSOystein Eftevaag
873*758e9fbaSOystein Eftevaag TPMI_ECC_CURVE curveID = TPM2_ECC_BN_P256;
874*758e9fbaSOystein Eftevaag TPMS_ALGORITHM_DETAIL_ECC *parameters;
875*758e9fbaSOystein Eftevaag r = Esys_ECC_Parameters(esys_context,
876*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
877*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, curveID, ¶meters);
878*758e9fbaSOystein Eftevaag
879*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
880*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
881*758e9fbaSOystein Eftevaag }
882*758e9fbaSOystein Eftevaag
883*758e9fbaSOystein Eftevaag static void
test_ZGen_2Phase(void ** state)884*758e9fbaSOystein Eftevaag test_ZGen_2Phase(void **state)
885*758e9fbaSOystein Eftevaag {
886*758e9fbaSOystein Eftevaag TSS2_RC r;
887*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
888*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
889*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
890*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
891*758e9fbaSOystein Eftevaag
892*758e9fbaSOystein Eftevaag ESYS_TR keyA_handle = DUMMY_TR_HANDLE_KEY;
893*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT inQsB = { 0 };
894*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT inQeB = { 0 };
895*758e9fbaSOystein Eftevaag TPMI_ECC_KEY_EXCHANGE inScheme = TPM2_ALG_NULL;
896*758e9fbaSOystein Eftevaag UINT16 counter = 0;
897*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *outZ1;
898*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *outZ2;
899*758e9fbaSOystein Eftevaag r = Esys_ZGen_2Phase(esys_context,
900*758e9fbaSOystein Eftevaag keyA_handle,
901*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
902*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
903*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
904*758e9fbaSOystein Eftevaag &inQsB, &inQeB, inScheme, counter, &outZ1, &outZ2);
905*758e9fbaSOystein Eftevaag
906*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
907*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
908*758e9fbaSOystein Eftevaag }
909*758e9fbaSOystein Eftevaag
910*758e9fbaSOystein Eftevaag static void
test_EncryptDecrypt(void ** state)911*758e9fbaSOystein Eftevaag test_EncryptDecrypt(void **state)
912*758e9fbaSOystein Eftevaag {
913*758e9fbaSOystein Eftevaag TSS2_RC r;
914*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
915*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
916*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
917*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
918*758e9fbaSOystein Eftevaag
919*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
920*758e9fbaSOystein Eftevaag TPMI_YES_NO decrypt = 0;
921*758e9fbaSOystein Eftevaag TPMI_ALG_SYM_MODE mode = TPM2_ALG_NULL;
922*758e9fbaSOystein Eftevaag TPM2B_IV ivIn = DUMMY_2B_DATA16(.buffer);
923*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER inData = DUMMY_2B_DATA(.buffer);
924*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER *outData;
925*758e9fbaSOystein Eftevaag TPM2B_IV *ivOut;
926*758e9fbaSOystein Eftevaag r = Esys_EncryptDecrypt(esys_context,
927*758e9fbaSOystein Eftevaag keyHandle_handle,
928*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
929*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
930*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
931*758e9fbaSOystein Eftevaag decrypt, mode, &ivIn, &inData, &outData, &ivOut);
932*758e9fbaSOystein Eftevaag
933*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
934*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
935*758e9fbaSOystein Eftevaag }
936*758e9fbaSOystein Eftevaag
937*758e9fbaSOystein Eftevaag static void
test_EncryptDecrypt2(void ** state)938*758e9fbaSOystein Eftevaag test_EncryptDecrypt2(void **state)
939*758e9fbaSOystein Eftevaag {
940*758e9fbaSOystein Eftevaag TSS2_RC r;
941*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
942*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
943*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
944*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
945*758e9fbaSOystein Eftevaag
946*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
947*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER inData = DUMMY_2B_DATA(.buffer);
948*758e9fbaSOystein Eftevaag TPMI_YES_NO decrypt = 0;
949*758e9fbaSOystein Eftevaag TPMI_ALG_SYM_MODE mode = TPM2_ALG_NULL;
950*758e9fbaSOystein Eftevaag TPM2B_IV ivIn = DUMMY_2B_DATA16(.buffer);
951*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER *outData;
952*758e9fbaSOystein Eftevaag TPM2B_IV *ivOut;
953*758e9fbaSOystein Eftevaag r = Esys_EncryptDecrypt2(esys_context,
954*758e9fbaSOystein Eftevaag keyHandle_handle,
955*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
956*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
957*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
958*758e9fbaSOystein Eftevaag &inData, decrypt, mode, &ivIn, &outData, &ivOut);
959*758e9fbaSOystein Eftevaag
960*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
961*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
962*758e9fbaSOystein Eftevaag }
963*758e9fbaSOystein Eftevaag
964*758e9fbaSOystein Eftevaag static void
test_Hash(void ** state)965*758e9fbaSOystein Eftevaag test_Hash(void **state)
966*758e9fbaSOystein Eftevaag {
967*758e9fbaSOystein Eftevaag TSS2_RC r;
968*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
969*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
970*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
971*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
972*758e9fbaSOystein Eftevaag
973*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER data = DUMMY_2B_DATA(.buffer);
974*758e9fbaSOystein Eftevaag TPMI_ALG_HASH hashAlg = TPM2_ALG_SHA1;
975*758e9fbaSOystein Eftevaag TPMI_RH_HIERARCHY hierarchy = TPM2_RH_OWNER;
976*758e9fbaSOystein Eftevaag TPM2B_DIGEST *outHash;
977*758e9fbaSOystein Eftevaag TPMT_TK_HASHCHECK *validation;
978*758e9fbaSOystein Eftevaag r = Esys_Hash(esys_context,
979*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
980*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
981*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
982*758e9fbaSOystein Eftevaag &data, hashAlg, hierarchy, &outHash, &validation);
983*758e9fbaSOystein Eftevaag
984*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
985*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
986*758e9fbaSOystein Eftevaag }
987*758e9fbaSOystein Eftevaag
988*758e9fbaSOystein Eftevaag static void
test_HMAC(void ** state)989*758e9fbaSOystein Eftevaag test_HMAC(void **state)
990*758e9fbaSOystein Eftevaag {
991*758e9fbaSOystein Eftevaag TSS2_RC r;
992*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
993*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
994*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
995*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
996*758e9fbaSOystein Eftevaag
997*758e9fbaSOystein Eftevaag ESYS_TR handle_handle = DUMMY_TR_HANDLE_KEY;
998*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER buffer = DUMMY_2B_DATA(.buffer);
999*758e9fbaSOystein Eftevaag TPMI_ALG_HASH hashAlg = TPM2_ALG_SHA1;
1000*758e9fbaSOystein Eftevaag TPM2B_DIGEST *outHMAC;
1001*758e9fbaSOystein Eftevaag r = Esys_HMAC(esys_context,
1002*758e9fbaSOystein Eftevaag handle_handle,
1003*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1004*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &buffer, hashAlg, &outHMAC);
1005*758e9fbaSOystein Eftevaag
1006*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1007*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1008*758e9fbaSOystein Eftevaag }
1009*758e9fbaSOystein Eftevaag
1010*758e9fbaSOystein Eftevaag static void
test_GetRandom(void ** state)1011*758e9fbaSOystein Eftevaag test_GetRandom(void **state)
1012*758e9fbaSOystein Eftevaag {
1013*758e9fbaSOystein Eftevaag TSS2_RC r;
1014*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1015*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1016*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1017*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1018*758e9fbaSOystein Eftevaag
1019*758e9fbaSOystein Eftevaag UINT16 bytesRequested = 0;
1020*758e9fbaSOystein Eftevaag TPM2B_DIGEST *randomBytes;
1021*758e9fbaSOystein Eftevaag r = Esys_GetRandom(esys_context,
1022*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1023*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1024*758e9fbaSOystein Eftevaag ESYS_TR_NONE, bytesRequested, &randomBytes);
1025*758e9fbaSOystein Eftevaag
1026*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1027*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1028*758e9fbaSOystein Eftevaag }
1029*758e9fbaSOystein Eftevaag
1030*758e9fbaSOystein Eftevaag static void
test_StirRandom(void ** state)1031*758e9fbaSOystein Eftevaag test_StirRandom(void **state)
1032*758e9fbaSOystein Eftevaag {
1033*758e9fbaSOystein Eftevaag TSS2_RC r;
1034*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1035*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1036*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1037*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1038*758e9fbaSOystein Eftevaag
1039*758e9fbaSOystein Eftevaag TPM2B_SENSITIVE_DATA inData = DUMMY_2B_DATA(.buffer);
1040*758e9fbaSOystein Eftevaag r = Esys_StirRandom(esys_context,
1041*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, &inData);
1042*758e9fbaSOystein Eftevaag
1043*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1044*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1045*758e9fbaSOystein Eftevaag }
1046*758e9fbaSOystein Eftevaag
1047*758e9fbaSOystein Eftevaag static void
test_HMAC_Start(void ** state)1048*758e9fbaSOystein Eftevaag test_HMAC_Start(void **state)
1049*758e9fbaSOystein Eftevaag {
1050*758e9fbaSOystein Eftevaag TSS2_RC r;
1051*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1052*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1053*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1054*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1055*758e9fbaSOystein Eftevaag
1056*758e9fbaSOystein Eftevaag ESYS_TR handle_handle = DUMMY_TR_HANDLE_KEY;
1057*758e9fbaSOystein Eftevaag TPM2B_AUTH auth = DUMMY_2B_DATA(.buffer);
1058*758e9fbaSOystein Eftevaag TPMI_ALG_HASH hashAlg = TPM2_ALG_SHA1;
1059*758e9fbaSOystein Eftevaag ESYS_TR sequenceHandle_handle;
1060*758e9fbaSOystein Eftevaag r = Esys_HMAC_Start(esys_context,
1061*758e9fbaSOystein Eftevaag handle_handle,
1062*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1063*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1064*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &auth, hashAlg, &sequenceHandle_handle);
1065*758e9fbaSOystein Eftevaag
1066*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1067*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1068*758e9fbaSOystein Eftevaag }
1069*758e9fbaSOystein Eftevaag
1070*758e9fbaSOystein Eftevaag static void
test_HashSequenceStart(void ** state)1071*758e9fbaSOystein Eftevaag test_HashSequenceStart(void **state)
1072*758e9fbaSOystein Eftevaag {
1073*758e9fbaSOystein Eftevaag TSS2_RC r;
1074*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1075*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1076*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1077*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1078*758e9fbaSOystein Eftevaag
1079*758e9fbaSOystein Eftevaag TPM2B_AUTH auth = DUMMY_2B_DATA(.buffer);
1080*758e9fbaSOystein Eftevaag TPMI_ALG_HASH hashAlg = TPM2_ALG_SHA1;
1081*758e9fbaSOystein Eftevaag ESYS_TR sequenceHandle_handle;
1082*758e9fbaSOystein Eftevaag r = Esys_HashSequenceStart(esys_context,
1083*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1084*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1085*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1086*758e9fbaSOystein Eftevaag &auth, hashAlg, &sequenceHandle_handle);
1087*758e9fbaSOystein Eftevaag
1088*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1089*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1090*758e9fbaSOystein Eftevaag }
1091*758e9fbaSOystein Eftevaag
1092*758e9fbaSOystein Eftevaag static void
test_SequenceUpdate(void ** state)1093*758e9fbaSOystein Eftevaag test_SequenceUpdate(void **state)
1094*758e9fbaSOystein Eftevaag {
1095*758e9fbaSOystein Eftevaag TSS2_RC r;
1096*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1097*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1098*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1099*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1100*758e9fbaSOystein Eftevaag
1101*758e9fbaSOystein Eftevaag ESYS_TR sequenceHandle_handle = DUMMY_TR_HANDLE_KEY;
1102*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER buffer = DUMMY_2B_DATA(.buffer);
1103*758e9fbaSOystein Eftevaag r = Esys_SequenceUpdate(esys_context,
1104*758e9fbaSOystein Eftevaag sequenceHandle_handle,
1105*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1106*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &buffer);
1107*758e9fbaSOystein Eftevaag
1108*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1109*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1110*758e9fbaSOystein Eftevaag }
1111*758e9fbaSOystein Eftevaag
1112*758e9fbaSOystein Eftevaag static void
test_SequenceComplete(void ** state)1113*758e9fbaSOystein Eftevaag test_SequenceComplete(void **state)
1114*758e9fbaSOystein Eftevaag {
1115*758e9fbaSOystein Eftevaag TSS2_RC r;
1116*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1117*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1118*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1119*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1120*758e9fbaSOystein Eftevaag
1121*758e9fbaSOystein Eftevaag ESYS_TR sequenceHandle_handle = DUMMY_TR_HANDLE_KEY;
1122*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER buffer = DUMMY_2B_DATA(.buffer);
1123*758e9fbaSOystein Eftevaag TPMI_RH_HIERARCHY hierarchy = TPM2_RH_OWNER;
1124*758e9fbaSOystein Eftevaag TPM2B_DIGEST *result;
1125*758e9fbaSOystein Eftevaag TPMT_TK_HASHCHECK *validation;
1126*758e9fbaSOystein Eftevaag r = Esys_SequenceComplete(esys_context,
1127*758e9fbaSOystein Eftevaag sequenceHandle_handle,
1128*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1129*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1130*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1131*758e9fbaSOystein Eftevaag &buffer, hierarchy, &result, &validation);
1132*758e9fbaSOystein Eftevaag
1133*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1134*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1135*758e9fbaSOystein Eftevaag }
1136*758e9fbaSOystein Eftevaag
1137*758e9fbaSOystein Eftevaag static void
test_EventSequenceComplete(void ** state)1138*758e9fbaSOystein Eftevaag test_EventSequenceComplete(void **state)
1139*758e9fbaSOystein Eftevaag {
1140*758e9fbaSOystein Eftevaag TSS2_RC r;
1141*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1142*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1143*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1144*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1145*758e9fbaSOystein Eftevaag
1146*758e9fbaSOystein Eftevaag ESYS_TR pcrHandle_handle = 16;
1147*758e9fbaSOystein Eftevaag ESYS_TR sequenceHandle_handle = DUMMY_TR_HANDLE_KEY;
1148*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER buffer = DUMMY_2B_DATA(.buffer);
1149*758e9fbaSOystein Eftevaag TPML_DIGEST_VALUES *results;
1150*758e9fbaSOystein Eftevaag r = Esys_EventSequenceComplete(esys_context,
1151*758e9fbaSOystein Eftevaag pcrHandle_handle,
1152*758e9fbaSOystein Eftevaag sequenceHandle_handle,
1153*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1154*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1155*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &buffer, &results);
1156*758e9fbaSOystein Eftevaag
1157*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1158*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1159*758e9fbaSOystein Eftevaag }
1160*758e9fbaSOystein Eftevaag
1161*758e9fbaSOystein Eftevaag static void
test_Certify(void ** state)1162*758e9fbaSOystein Eftevaag test_Certify(void **state)
1163*758e9fbaSOystein Eftevaag {
1164*758e9fbaSOystein Eftevaag TSS2_RC r;
1165*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1166*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1167*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1168*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1169*758e9fbaSOystein Eftevaag
1170*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle = DUMMY_TR_HANDLE_KEY;
1171*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
1172*758e9fbaSOystein Eftevaag TPM2B_DATA qualifyingData = DUMMY_2B_DATA(.buffer);
1173*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
1174*758e9fbaSOystein Eftevaag TPM2B_ATTEST *certifyInfo;
1175*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
1176*758e9fbaSOystein Eftevaag r = Esys_Certify(esys_context,
1177*758e9fbaSOystein Eftevaag objectHandle_handle,
1178*758e9fbaSOystein Eftevaag signHandle_handle,
1179*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1180*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1181*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1182*758e9fbaSOystein Eftevaag &qualifyingData, &inScheme, &certifyInfo, &signature);
1183*758e9fbaSOystein Eftevaag
1184*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1185*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1186*758e9fbaSOystein Eftevaag }
1187*758e9fbaSOystein Eftevaag
1188*758e9fbaSOystein Eftevaag static void
test_CertifyCreation(void ** state)1189*758e9fbaSOystein Eftevaag test_CertifyCreation(void **state)
1190*758e9fbaSOystein Eftevaag {
1191*758e9fbaSOystein Eftevaag TSS2_RC r;
1192*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1193*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1194*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1195*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1196*758e9fbaSOystein Eftevaag
1197*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
1198*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle = DUMMY_TR_HANDLE_KEY;
1199*758e9fbaSOystein Eftevaag TPM2B_DATA qualifyingData = DUMMY_2B_DATA(.buffer);
1200*758e9fbaSOystein Eftevaag TPM2B_DIGEST creationHash = DUMMY_2B_DATA(.buffer);
1201*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
1202*758e9fbaSOystein Eftevaag TPMT_TK_CREATION creationTicket = DUMMY_TPMT_TK_CREATION;
1203*758e9fbaSOystein Eftevaag TPM2B_ATTEST *certifyInfo;
1204*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
1205*758e9fbaSOystein Eftevaag r = Esys_CertifyCreation(esys_context,
1206*758e9fbaSOystein Eftevaag signHandle_handle,
1207*758e9fbaSOystein Eftevaag objectHandle_handle,
1208*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1209*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1210*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1211*758e9fbaSOystein Eftevaag &qualifyingData,
1212*758e9fbaSOystein Eftevaag &creationHash,
1213*758e9fbaSOystein Eftevaag &inScheme,
1214*758e9fbaSOystein Eftevaag &creationTicket, &certifyInfo, &signature);
1215*758e9fbaSOystein Eftevaag
1216*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1217*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1218*758e9fbaSOystein Eftevaag }
1219*758e9fbaSOystein Eftevaag
1220*758e9fbaSOystein Eftevaag static void
test_Quote(void ** state)1221*758e9fbaSOystein Eftevaag test_Quote(void **state)
1222*758e9fbaSOystein Eftevaag {
1223*758e9fbaSOystein Eftevaag TSS2_RC r;
1224*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1225*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1226*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1227*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1228*758e9fbaSOystein Eftevaag
1229*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
1230*758e9fbaSOystein Eftevaag TPM2B_DATA qualifyingData = DUMMY_2B_DATA(.buffer);
1231*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
1232*758e9fbaSOystein Eftevaag TPML_PCR_SELECTION PCRselect = { 0 };
1233*758e9fbaSOystein Eftevaag TPM2B_ATTEST *quoted;
1234*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
1235*758e9fbaSOystein Eftevaag r = Esys_Quote(esys_context,
1236*758e9fbaSOystein Eftevaag signHandle_handle,
1237*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1238*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1239*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1240*758e9fbaSOystein Eftevaag &qualifyingData, &inScheme, &PCRselect, "ed, &signature);
1241*758e9fbaSOystein Eftevaag
1242*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1243*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1244*758e9fbaSOystein Eftevaag }
1245*758e9fbaSOystein Eftevaag
1246*758e9fbaSOystein Eftevaag static void
test_GetSessionAuditDigest(void ** state)1247*758e9fbaSOystein Eftevaag test_GetSessionAuditDigest(void **state)
1248*758e9fbaSOystein Eftevaag {
1249*758e9fbaSOystein Eftevaag TSS2_RC r;
1250*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1251*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1252*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1253*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1254*758e9fbaSOystein Eftevaag
1255*758e9fbaSOystein Eftevaag ESYS_TR privacyAdminHandle_handle = DUMMY_TR_HANDLE_PRIVACY_ADMIN;
1256*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
1257*758e9fbaSOystein Eftevaag ESYS_TR sessionHandle_handle = DUMMY_TR_HANDLE_HMAC_SESSION;
1258*758e9fbaSOystein Eftevaag TPM2B_DATA qualifyingData = DUMMY_2B_DATA(.buffer);
1259*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
1260*758e9fbaSOystein Eftevaag TPM2B_ATTEST *auditInfo;
1261*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
1262*758e9fbaSOystein Eftevaag r = Esys_GetSessionAuditDigest(esys_context,
1263*758e9fbaSOystein Eftevaag privacyAdminHandle_handle,
1264*758e9fbaSOystein Eftevaag signHandle_handle,
1265*758e9fbaSOystein Eftevaag sessionHandle_handle,
1266*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1267*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1268*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1269*758e9fbaSOystein Eftevaag &qualifyingData,
1270*758e9fbaSOystein Eftevaag &inScheme, &auditInfo, &signature);
1271*758e9fbaSOystein Eftevaag
1272*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1273*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1274*758e9fbaSOystein Eftevaag }
1275*758e9fbaSOystein Eftevaag
1276*758e9fbaSOystein Eftevaag static void
test_GetCommandAuditDigest(void ** state)1277*758e9fbaSOystein Eftevaag test_GetCommandAuditDigest(void **state)
1278*758e9fbaSOystein Eftevaag {
1279*758e9fbaSOystein Eftevaag TSS2_RC r;
1280*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1281*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1282*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1283*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1284*758e9fbaSOystein Eftevaag
1285*758e9fbaSOystein Eftevaag ESYS_TR privacyHandle_handle = DUMMY_TR_HANDLE_PRIVACY_ADMIN;
1286*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
1287*758e9fbaSOystein Eftevaag TPM2B_DATA qualifyingData = DUMMY_2B_DATA(.buffer);
1288*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
1289*758e9fbaSOystein Eftevaag TPM2B_ATTEST *auditInfo;
1290*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
1291*758e9fbaSOystein Eftevaag r = Esys_GetCommandAuditDigest(esys_context,
1292*758e9fbaSOystein Eftevaag privacyHandle_handle,
1293*758e9fbaSOystein Eftevaag signHandle_handle,
1294*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1295*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1296*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1297*758e9fbaSOystein Eftevaag &qualifyingData,
1298*758e9fbaSOystein Eftevaag &inScheme, &auditInfo, &signature);
1299*758e9fbaSOystein Eftevaag
1300*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1301*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1302*758e9fbaSOystein Eftevaag }
1303*758e9fbaSOystein Eftevaag
1304*758e9fbaSOystein Eftevaag static void
test_GetTime(void ** state)1305*758e9fbaSOystein Eftevaag test_GetTime(void **state)
1306*758e9fbaSOystein Eftevaag {
1307*758e9fbaSOystein Eftevaag TSS2_RC r;
1308*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1309*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1310*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1311*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1312*758e9fbaSOystein Eftevaag
1313*758e9fbaSOystein Eftevaag ESYS_TR privacyAdminHandle_handle = DUMMY_TR_HANDLE_PRIVACY_ADMIN;
1314*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
1315*758e9fbaSOystein Eftevaag TPM2B_DATA qualifyingData = DUMMY_2B_DATA(.buffer);
1316*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
1317*758e9fbaSOystein Eftevaag TPM2B_ATTEST *timeInfo;
1318*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
1319*758e9fbaSOystein Eftevaag r = Esys_GetTime(esys_context,
1320*758e9fbaSOystein Eftevaag privacyAdminHandle_handle,
1321*758e9fbaSOystein Eftevaag signHandle_handle,
1322*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1323*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1324*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1325*758e9fbaSOystein Eftevaag &qualifyingData, &inScheme, &timeInfo, &signature);
1326*758e9fbaSOystein Eftevaag
1327*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1328*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1329*758e9fbaSOystein Eftevaag }
1330*758e9fbaSOystein Eftevaag
1331*758e9fbaSOystein Eftevaag static void
test_Commit(void ** state)1332*758e9fbaSOystein Eftevaag test_Commit(void **state)
1333*758e9fbaSOystein Eftevaag {
1334*758e9fbaSOystein Eftevaag TSS2_RC r;
1335*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1336*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1337*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1338*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1339*758e9fbaSOystein Eftevaag
1340*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
1341*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT P1 = { 0 };
1342*758e9fbaSOystein Eftevaag TPM2B_SENSITIVE_DATA s2 = DUMMY_2B_DATA(.buffer);
1343*758e9fbaSOystein Eftevaag TPM2B_ECC_PARAMETER y2 = { 0 };
1344*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *K;
1345*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *L;
1346*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *E;
1347*758e9fbaSOystein Eftevaag UINT16 counter;
1348*758e9fbaSOystein Eftevaag r = Esys_Commit(esys_context,
1349*758e9fbaSOystein Eftevaag signHandle_handle,
1350*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1351*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1352*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &P1, &s2, &y2, &K, &L, &E, &counter);
1353*758e9fbaSOystein Eftevaag
1354*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1355*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1356*758e9fbaSOystein Eftevaag }
1357*758e9fbaSOystein Eftevaag
1358*758e9fbaSOystein Eftevaag static void
test_EC_Ephemeral(void ** state)1359*758e9fbaSOystein Eftevaag test_EC_Ephemeral(void **state)
1360*758e9fbaSOystein Eftevaag {
1361*758e9fbaSOystein Eftevaag TSS2_RC r;
1362*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1363*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1364*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1365*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1366*758e9fbaSOystein Eftevaag
1367*758e9fbaSOystein Eftevaag TPMI_ECC_CURVE curveID = TPM2_ECC_BN_P256;
1368*758e9fbaSOystein Eftevaag TPM2B_ECC_POINT *Q;
1369*758e9fbaSOystein Eftevaag UINT16 counter;
1370*758e9fbaSOystein Eftevaag r = Esys_EC_Ephemeral(esys_context,
1371*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1372*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, curveID, &Q, &counter);
1373*758e9fbaSOystein Eftevaag
1374*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1375*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1376*758e9fbaSOystein Eftevaag }
1377*758e9fbaSOystein Eftevaag
1378*758e9fbaSOystein Eftevaag static void
test_VerifySignature(void ** state)1379*758e9fbaSOystein Eftevaag test_VerifySignature(void **state)
1380*758e9fbaSOystein Eftevaag {
1381*758e9fbaSOystein Eftevaag TSS2_RC r;
1382*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1383*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1384*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1385*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1386*758e9fbaSOystein Eftevaag
1387*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
1388*758e9fbaSOystein Eftevaag TPM2B_DIGEST digest = DUMMY_2B_DATA(.buffer);
1389*758e9fbaSOystein Eftevaag TPMT_SIGNATURE signature = DUMMY_TPMT_SIGNATURE;
1390*758e9fbaSOystein Eftevaag TPMT_TK_VERIFIED *validation;
1391*758e9fbaSOystein Eftevaag r = Esys_VerifySignature(esys_context,
1392*758e9fbaSOystein Eftevaag keyHandle_handle,
1393*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1394*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1395*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &digest, &signature, &validation);
1396*758e9fbaSOystein Eftevaag
1397*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1398*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1399*758e9fbaSOystein Eftevaag }
1400*758e9fbaSOystein Eftevaag
1401*758e9fbaSOystein Eftevaag static void
test_Sign(void ** state)1402*758e9fbaSOystein Eftevaag test_Sign(void **state)
1403*758e9fbaSOystein Eftevaag {
1404*758e9fbaSOystein Eftevaag TSS2_RC r;
1405*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1406*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1407*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1408*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1409*758e9fbaSOystein Eftevaag
1410*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
1411*758e9fbaSOystein Eftevaag TPM2B_DIGEST digest = DUMMY_2B_DATA(.buffer);
1412*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
1413*758e9fbaSOystein Eftevaag TPMT_TK_HASHCHECK validation = DUMMY_TPMT_TK_HASHCHECK;
1414*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
1415*758e9fbaSOystein Eftevaag r = Esys_Sign(esys_context,
1416*758e9fbaSOystein Eftevaag keyHandle_handle,
1417*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1418*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1419*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &digest, &inScheme, &validation, &signature);
1420*758e9fbaSOystein Eftevaag
1421*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1422*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1423*758e9fbaSOystein Eftevaag }
1424*758e9fbaSOystein Eftevaag
1425*758e9fbaSOystein Eftevaag static void
test_SetCommandCodeAuditStatus(void ** state)1426*758e9fbaSOystein Eftevaag test_SetCommandCodeAuditStatus(void **state)
1427*758e9fbaSOystein Eftevaag {
1428*758e9fbaSOystein Eftevaag TSS2_RC r;
1429*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1430*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1431*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1432*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1433*758e9fbaSOystein Eftevaag
1434*758e9fbaSOystein Eftevaag ESYS_TR auth_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
1435*758e9fbaSOystein Eftevaag TPMI_ALG_HASH auditAlg = TPM2_ALG_SHA1;
1436*758e9fbaSOystein Eftevaag TPML_CC setList = { 0 };
1437*758e9fbaSOystein Eftevaag TPML_CC clearList = { 0 };
1438*758e9fbaSOystein Eftevaag r = Esys_SetCommandCodeAuditStatus(esys_context,
1439*758e9fbaSOystein Eftevaag auth_handle,
1440*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1441*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1442*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1443*758e9fbaSOystein Eftevaag auditAlg, &setList, &clearList);
1444*758e9fbaSOystein Eftevaag
1445*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1446*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1447*758e9fbaSOystein Eftevaag }
1448*758e9fbaSOystein Eftevaag
1449*758e9fbaSOystein Eftevaag static void
test_PCR_Extend(void ** state)1450*758e9fbaSOystein Eftevaag test_PCR_Extend(void **state)
1451*758e9fbaSOystein Eftevaag {
1452*758e9fbaSOystein Eftevaag TSS2_RC r;
1453*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1454*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1455*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1456*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1457*758e9fbaSOystein Eftevaag
1458*758e9fbaSOystein Eftevaag ESYS_TR pcrHandle_handle = 16;
1459*758e9fbaSOystein Eftevaag TPML_DIGEST_VALUES digests = { 0 };
1460*758e9fbaSOystein Eftevaag r = Esys_PCR_Extend(esys_context,
1461*758e9fbaSOystein Eftevaag pcrHandle_handle,
1462*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE, &digests);
1463*758e9fbaSOystein Eftevaag
1464*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1465*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1466*758e9fbaSOystein Eftevaag }
1467*758e9fbaSOystein Eftevaag
1468*758e9fbaSOystein Eftevaag static void
test_PCR_Event(void ** state)1469*758e9fbaSOystein Eftevaag test_PCR_Event(void **state)
1470*758e9fbaSOystein Eftevaag {
1471*758e9fbaSOystein Eftevaag TSS2_RC r;
1472*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1473*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1474*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1475*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1476*758e9fbaSOystein Eftevaag
1477*758e9fbaSOystein Eftevaag ESYS_TR pcrHandle_handle = 16;
1478*758e9fbaSOystein Eftevaag TPM2B_EVENT eventData = DUMMY_2B_DATA(.buffer);
1479*758e9fbaSOystein Eftevaag TPML_DIGEST_VALUES *digests;
1480*758e9fbaSOystein Eftevaag r = Esys_PCR_Event(esys_context,
1481*758e9fbaSOystein Eftevaag pcrHandle_handle,
1482*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1483*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &eventData, &digests);
1484*758e9fbaSOystein Eftevaag
1485*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1486*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1487*758e9fbaSOystein Eftevaag }
1488*758e9fbaSOystein Eftevaag
1489*758e9fbaSOystein Eftevaag static void
test_PCR_Read(void ** state)1490*758e9fbaSOystein Eftevaag test_PCR_Read(void **state)
1491*758e9fbaSOystein Eftevaag {
1492*758e9fbaSOystein Eftevaag TSS2_RC r;
1493*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1494*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1495*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1496*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1497*758e9fbaSOystein Eftevaag
1498*758e9fbaSOystein Eftevaag TPML_PCR_SELECTION pcrSelectionIn = { 0 };
1499*758e9fbaSOystein Eftevaag TPML_PCR_SELECTION *pcrSelectionOut;
1500*758e9fbaSOystein Eftevaag TPML_DIGEST *pcrValues;
1501*758e9fbaSOystein Eftevaag UINT32 pcrUpdateCounter;
1502*758e9fbaSOystein Eftevaag r = Esys_PCR_Read(esys_context,
1503*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1504*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1505*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1506*758e9fbaSOystein Eftevaag &pcrSelectionIn,
1507*758e9fbaSOystein Eftevaag &pcrUpdateCounter, &pcrSelectionOut, &pcrValues);
1508*758e9fbaSOystein Eftevaag
1509*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1510*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1511*758e9fbaSOystein Eftevaag }
1512*758e9fbaSOystein Eftevaag
1513*758e9fbaSOystein Eftevaag static void
test_PCR_Allocate(void ** state)1514*758e9fbaSOystein Eftevaag test_PCR_Allocate(void **state)
1515*758e9fbaSOystein Eftevaag {
1516*758e9fbaSOystein Eftevaag TSS2_RC r;
1517*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1518*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1519*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1520*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1521*758e9fbaSOystein Eftevaag
1522*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
1523*758e9fbaSOystein Eftevaag TPML_PCR_SELECTION pcrAllocation = { 0 };
1524*758e9fbaSOystein Eftevaag TPMI_YES_NO allocationSuccess;
1525*758e9fbaSOystein Eftevaag UINT32 maxPCR;
1526*758e9fbaSOystein Eftevaag UINT32 sizeNeeded;
1527*758e9fbaSOystein Eftevaag UINT32 sizeAvailable;
1528*758e9fbaSOystein Eftevaag r = Esys_PCR_Allocate(esys_context,
1529*758e9fbaSOystein Eftevaag authHandle_handle,
1530*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1531*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1532*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1533*758e9fbaSOystein Eftevaag &pcrAllocation,
1534*758e9fbaSOystein Eftevaag &allocationSuccess,
1535*758e9fbaSOystein Eftevaag &maxPCR, &sizeNeeded, &sizeAvailable);
1536*758e9fbaSOystein Eftevaag
1537*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1538*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1539*758e9fbaSOystein Eftevaag }
1540*758e9fbaSOystein Eftevaag
1541*758e9fbaSOystein Eftevaag static void
test_PCR_SetAuthPolicy(void ** state)1542*758e9fbaSOystein Eftevaag test_PCR_SetAuthPolicy(void **state)
1543*758e9fbaSOystein Eftevaag {
1544*758e9fbaSOystein Eftevaag TSS2_RC r;
1545*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1546*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1547*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1548*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1549*758e9fbaSOystein Eftevaag
1550*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
1551*758e9fbaSOystein Eftevaag TPM2B_DIGEST authPolicy = DUMMY_2B_DATA(.buffer);
1552*758e9fbaSOystein Eftevaag TPMI_ALG_HASH hashAlg = TPM2_ALG_SHA1;
1553*758e9fbaSOystein Eftevaag TPMI_DH_PCR pcrNum = 0;
1554*758e9fbaSOystein Eftevaag r = Esys_PCR_SetAuthPolicy(esys_context,
1555*758e9fbaSOystein Eftevaag authHandle_handle,
1556*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1557*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1558*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &authPolicy, hashAlg, pcrNum);
1559*758e9fbaSOystein Eftevaag
1560*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1561*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1562*758e9fbaSOystein Eftevaag }
1563*758e9fbaSOystein Eftevaag
1564*758e9fbaSOystein Eftevaag static void
test_PCR_SetAuthValue(void ** state)1565*758e9fbaSOystein Eftevaag test_PCR_SetAuthValue(void **state)
1566*758e9fbaSOystein Eftevaag {
1567*758e9fbaSOystein Eftevaag TSS2_RC r;
1568*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1569*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1570*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1571*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1572*758e9fbaSOystein Eftevaag
1573*758e9fbaSOystein Eftevaag ESYS_TR pcrHandle_handle = 16;
1574*758e9fbaSOystein Eftevaag TPM2B_DIGEST auth = DUMMY_2B_DATA(.buffer);
1575*758e9fbaSOystein Eftevaag r = Esys_PCR_SetAuthValue(esys_context,
1576*758e9fbaSOystein Eftevaag pcrHandle_handle,
1577*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1578*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &auth);
1579*758e9fbaSOystein Eftevaag
1580*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1581*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1582*758e9fbaSOystein Eftevaag }
1583*758e9fbaSOystein Eftevaag
1584*758e9fbaSOystein Eftevaag static void
test_PCR_Reset(void ** state)1585*758e9fbaSOystein Eftevaag test_PCR_Reset(void **state)
1586*758e9fbaSOystein Eftevaag {
1587*758e9fbaSOystein Eftevaag TSS2_RC r;
1588*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1589*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1590*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1591*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1592*758e9fbaSOystein Eftevaag
1593*758e9fbaSOystein Eftevaag ESYS_TR pcrHandle_handle = 16;
1594*758e9fbaSOystein Eftevaag r = Esys_PCR_Reset(esys_context,
1595*758e9fbaSOystein Eftevaag pcrHandle_handle,
1596*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
1597*758e9fbaSOystein Eftevaag
1598*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1599*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1600*758e9fbaSOystein Eftevaag }
1601*758e9fbaSOystein Eftevaag
1602*758e9fbaSOystein Eftevaag static void
test_PolicySigned(void ** state)1603*758e9fbaSOystein Eftevaag test_PolicySigned(void **state)
1604*758e9fbaSOystein Eftevaag {
1605*758e9fbaSOystein Eftevaag TSS2_RC r;
1606*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1607*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1608*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1609*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1610*758e9fbaSOystein Eftevaag
1611*758e9fbaSOystein Eftevaag ESYS_TR authObject_handle = DUMMY_TR_HANDLE_KEY;
1612*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1613*758e9fbaSOystein Eftevaag TPM2B_NONCE nonceTPM = DUMMY_2B_DATA(.buffer);
1614*758e9fbaSOystein Eftevaag TPM2B_DIGEST cpHashA = DUMMY_2B_DATA(.buffer);
1615*758e9fbaSOystein Eftevaag TPM2B_NONCE policyRef = DUMMY_2B_DATA(.buffer);
1616*758e9fbaSOystein Eftevaag INT32 expiration = 0;
1617*758e9fbaSOystein Eftevaag TPMT_SIGNATURE auth = DUMMY_TPMT_SIGNATURE;
1618*758e9fbaSOystein Eftevaag TPM2B_TIMEOUT *timeout;
1619*758e9fbaSOystein Eftevaag TPMT_TK_AUTH *policyTicket;
1620*758e9fbaSOystein Eftevaag r = Esys_PolicySigned(esys_context,
1621*758e9fbaSOystein Eftevaag authObject_handle,
1622*758e9fbaSOystein Eftevaag policySession_handle,
1623*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1624*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1625*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1626*758e9fbaSOystein Eftevaag &nonceTPM,
1627*758e9fbaSOystein Eftevaag &cpHashA,
1628*758e9fbaSOystein Eftevaag &policyRef,
1629*758e9fbaSOystein Eftevaag expiration, &auth, &timeout, &policyTicket);
1630*758e9fbaSOystein Eftevaag
1631*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1632*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1633*758e9fbaSOystein Eftevaag }
1634*758e9fbaSOystein Eftevaag
1635*758e9fbaSOystein Eftevaag static void
test_PolicySecret(void ** state)1636*758e9fbaSOystein Eftevaag test_PolicySecret(void **state)
1637*758e9fbaSOystein Eftevaag {
1638*758e9fbaSOystein Eftevaag TSS2_RC r;
1639*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1640*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1641*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1642*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1643*758e9fbaSOystein Eftevaag
1644*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
1645*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1646*758e9fbaSOystein Eftevaag TPM2B_NONCE nonceTPM = DUMMY_2B_DATA(.buffer);
1647*758e9fbaSOystein Eftevaag TPM2B_DIGEST cpHashA = DUMMY_2B_DATA(.buffer);
1648*758e9fbaSOystein Eftevaag TPM2B_NONCE policyRef = DUMMY_2B_DATA(.buffer);
1649*758e9fbaSOystein Eftevaag INT32 expiration = 0;
1650*758e9fbaSOystein Eftevaag TPM2B_TIMEOUT *timeout;
1651*758e9fbaSOystein Eftevaag TPMT_TK_AUTH *policyTicket;
1652*758e9fbaSOystein Eftevaag r = Esys_PolicySecret(esys_context,
1653*758e9fbaSOystein Eftevaag authHandle_handle,
1654*758e9fbaSOystein Eftevaag policySession_handle,
1655*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1656*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1657*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1658*758e9fbaSOystein Eftevaag &nonceTPM,
1659*758e9fbaSOystein Eftevaag &cpHashA,
1660*758e9fbaSOystein Eftevaag &policyRef, expiration, &timeout, &policyTicket);
1661*758e9fbaSOystein Eftevaag
1662*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1663*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1664*758e9fbaSOystein Eftevaag }
1665*758e9fbaSOystein Eftevaag
1666*758e9fbaSOystein Eftevaag static void
test_PolicyTicket(void ** state)1667*758e9fbaSOystein Eftevaag test_PolicyTicket(void **state)
1668*758e9fbaSOystein Eftevaag {
1669*758e9fbaSOystein Eftevaag TSS2_RC r;
1670*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1671*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1672*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1673*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1674*758e9fbaSOystein Eftevaag
1675*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1676*758e9fbaSOystein Eftevaag TPM2B_TIMEOUT timeout = DUMMY_2B_DATA(.buffer);
1677*758e9fbaSOystein Eftevaag TPM2B_DIGEST cpHashA = DUMMY_2B_DATA(.buffer);
1678*758e9fbaSOystein Eftevaag TPM2B_NONCE policyRef = DUMMY_2B_DATA(.buffer);
1679*758e9fbaSOystein Eftevaag TPM2B_NAME authName = DUMMY_2B_DATA(.name);
1680*758e9fbaSOystein Eftevaag TPMT_TK_AUTH ticket = DUMMY_TPMT_TK_AUTH;
1681*758e9fbaSOystein Eftevaag r = Esys_PolicyTicket(esys_context,
1682*758e9fbaSOystein Eftevaag policySession_handle,
1683*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1684*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1685*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1686*758e9fbaSOystein Eftevaag &timeout, &cpHashA, &policyRef, &authName, &ticket);
1687*758e9fbaSOystein Eftevaag
1688*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1689*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1690*758e9fbaSOystein Eftevaag }
1691*758e9fbaSOystein Eftevaag
1692*758e9fbaSOystein Eftevaag static void
test_PolicyOR(void ** state)1693*758e9fbaSOystein Eftevaag test_PolicyOR(void **state)
1694*758e9fbaSOystein Eftevaag {
1695*758e9fbaSOystein Eftevaag TSS2_RC r;
1696*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1697*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1698*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1699*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1700*758e9fbaSOystein Eftevaag
1701*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1702*758e9fbaSOystein Eftevaag TPML_DIGEST pHashList = { 0 };
1703*758e9fbaSOystein Eftevaag r = Esys_PolicyOR(esys_context,
1704*758e9fbaSOystein Eftevaag policySession_handle,
1705*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, &pHashList);
1706*758e9fbaSOystein Eftevaag
1707*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1708*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1709*758e9fbaSOystein Eftevaag }
1710*758e9fbaSOystein Eftevaag
1711*758e9fbaSOystein Eftevaag static void
test_PolicyPCR(void ** state)1712*758e9fbaSOystein Eftevaag test_PolicyPCR(void **state)
1713*758e9fbaSOystein Eftevaag {
1714*758e9fbaSOystein Eftevaag TSS2_RC r;
1715*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1716*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1717*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1718*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1719*758e9fbaSOystein Eftevaag
1720*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1721*758e9fbaSOystein Eftevaag TPM2B_DIGEST pcrDigest = DUMMY_2B_DATA(.buffer);
1722*758e9fbaSOystein Eftevaag TPML_PCR_SELECTION pcrs = { 0 };
1723*758e9fbaSOystein Eftevaag r = Esys_PolicyPCR(esys_context,
1724*758e9fbaSOystein Eftevaag policySession_handle,
1725*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1726*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &pcrDigest, &pcrs);
1727*758e9fbaSOystein Eftevaag
1728*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1729*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1730*758e9fbaSOystein Eftevaag }
1731*758e9fbaSOystein Eftevaag
1732*758e9fbaSOystein Eftevaag static void
test_PolicyLocality(void ** state)1733*758e9fbaSOystein Eftevaag test_PolicyLocality(void **state)
1734*758e9fbaSOystein Eftevaag {
1735*758e9fbaSOystein Eftevaag TSS2_RC r;
1736*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1737*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1738*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1739*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1740*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1741*758e9fbaSOystein Eftevaag TPMA_LOCALITY locality = TPMA_LOCALITY_TPM2_LOC_ZERO;
1742*758e9fbaSOystein Eftevaag r = Esys_PolicyLocality(esys_context,
1743*758e9fbaSOystein Eftevaag policySession_handle,
1744*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1745*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1746*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1747*758e9fbaSOystein Eftevaag locality);
1748*758e9fbaSOystein Eftevaag
1749*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1750*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1751*758e9fbaSOystein Eftevaag }
1752*758e9fbaSOystein Eftevaag
1753*758e9fbaSOystein Eftevaag static void
test_PolicyNV(void ** state)1754*758e9fbaSOystein Eftevaag test_PolicyNV(void **state)
1755*758e9fbaSOystein Eftevaag {
1756*758e9fbaSOystein Eftevaag TSS2_RC r;
1757*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1758*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1759*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1760*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1761*758e9fbaSOystein Eftevaag
1762*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
1763*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
1764*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1765*758e9fbaSOystein Eftevaag TPM2B_OPERAND operandB = DUMMY_2B_DATA(.buffer);
1766*758e9fbaSOystein Eftevaag UINT16 offset = 0;
1767*758e9fbaSOystein Eftevaag TPM2_EO operation = 0;
1768*758e9fbaSOystein Eftevaag r = Esys_PolicyNV(esys_context,
1769*758e9fbaSOystein Eftevaag authHandle_handle,
1770*758e9fbaSOystein Eftevaag nvIndex_handle,
1771*758e9fbaSOystein Eftevaag policySession_handle,
1772*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
1773*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &operandB, offset, operation);
1774*758e9fbaSOystein Eftevaag
1775*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1776*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1777*758e9fbaSOystein Eftevaag }
1778*758e9fbaSOystein Eftevaag
1779*758e9fbaSOystein Eftevaag static void
test_PolicyCounterTimer(void ** state)1780*758e9fbaSOystein Eftevaag test_PolicyCounterTimer(void **state)
1781*758e9fbaSOystein Eftevaag {
1782*758e9fbaSOystein Eftevaag TSS2_RC r;
1783*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1784*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1785*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1786*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1787*758e9fbaSOystein Eftevaag
1788*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1789*758e9fbaSOystein Eftevaag TPM2B_OPERAND operandB = DUMMY_2B_DATA(.buffer);
1790*758e9fbaSOystein Eftevaag UINT16 offset = 0;
1791*758e9fbaSOystein Eftevaag TPM2_EO operation = 0;
1792*758e9fbaSOystein Eftevaag r = Esys_PolicyCounterTimer(esys_context,
1793*758e9fbaSOystein Eftevaag policySession_handle,
1794*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1795*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1796*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &operandB, offset, operation);
1797*758e9fbaSOystein Eftevaag
1798*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1799*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1800*758e9fbaSOystein Eftevaag }
1801*758e9fbaSOystein Eftevaag
1802*758e9fbaSOystein Eftevaag static void
test_PolicyCommandCode(void ** state)1803*758e9fbaSOystein Eftevaag test_PolicyCommandCode(void **state)
1804*758e9fbaSOystein Eftevaag {
1805*758e9fbaSOystein Eftevaag TSS2_RC r;
1806*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1807*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1808*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1809*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1810*758e9fbaSOystein Eftevaag
1811*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1812*758e9fbaSOystein Eftevaag TPM2_CC code = TPM2_CC_FIRST;
1813*758e9fbaSOystein Eftevaag r = Esys_PolicyCommandCode(esys_context,
1814*758e9fbaSOystein Eftevaag policySession_handle,
1815*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, code);
1816*758e9fbaSOystein Eftevaag
1817*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1818*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1819*758e9fbaSOystein Eftevaag }
1820*758e9fbaSOystein Eftevaag
1821*758e9fbaSOystein Eftevaag static void
test_PolicyPhysicalPresence(void ** state)1822*758e9fbaSOystein Eftevaag test_PolicyPhysicalPresence(void **state)
1823*758e9fbaSOystein Eftevaag {
1824*758e9fbaSOystein Eftevaag TSS2_RC r;
1825*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1826*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1827*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1828*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1829*758e9fbaSOystein Eftevaag
1830*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1831*758e9fbaSOystein Eftevaag r = Esys_PolicyPhysicalPresence(esys_context,
1832*758e9fbaSOystein Eftevaag policySession_handle,
1833*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE);
1834*758e9fbaSOystein Eftevaag
1835*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1836*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1837*758e9fbaSOystein Eftevaag }
1838*758e9fbaSOystein Eftevaag
1839*758e9fbaSOystein Eftevaag static void
test_PolicyCpHash(void ** state)1840*758e9fbaSOystein Eftevaag test_PolicyCpHash(void **state)
1841*758e9fbaSOystein Eftevaag {
1842*758e9fbaSOystein Eftevaag TSS2_RC r;
1843*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1844*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1845*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1846*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1847*758e9fbaSOystein Eftevaag
1848*758e9fbaSOystein Eftevaag ESYS_TR policySession = DUMMY_TR_HANDLE_POLICY_SESSION;
1849*758e9fbaSOystein Eftevaag TPM2B_DIGEST cpHashA = DUMMY_2B_DATA(.buffer);
1850*758e9fbaSOystein Eftevaag r = Esys_PolicyCpHash(esys_context,
1851*758e9fbaSOystein Eftevaag policySession,
1852*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1853*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &cpHashA);
1854*758e9fbaSOystein Eftevaag
1855*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1856*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1857*758e9fbaSOystein Eftevaag }
1858*758e9fbaSOystein Eftevaag
1859*758e9fbaSOystein Eftevaag static void
test_PolicyNameHash(void ** state)1860*758e9fbaSOystein Eftevaag test_PolicyNameHash(void **state)
1861*758e9fbaSOystein Eftevaag {
1862*758e9fbaSOystein Eftevaag TSS2_RC r;
1863*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1864*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1865*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1866*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1867*758e9fbaSOystein Eftevaag
1868*758e9fbaSOystein Eftevaag ESYS_TR policySession = DUMMY_TR_HANDLE_POLICY_SESSION;
1869*758e9fbaSOystein Eftevaag TPM2B_DIGEST nameHash = DUMMY_2B_DATA(.buffer);
1870*758e9fbaSOystein Eftevaag r = Esys_PolicyNameHash(esys_context,
1871*758e9fbaSOystein Eftevaag policySession,
1872*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1873*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1874*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &nameHash);
1875*758e9fbaSOystein Eftevaag
1876*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1877*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1878*758e9fbaSOystein Eftevaag }
1879*758e9fbaSOystein Eftevaag
1880*758e9fbaSOystein Eftevaag static void
test_PolicyDuplicationSelect(void ** state)1881*758e9fbaSOystein Eftevaag test_PolicyDuplicationSelect(void **state)
1882*758e9fbaSOystein Eftevaag {
1883*758e9fbaSOystein Eftevaag TSS2_RC r;
1884*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1885*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1886*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1887*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1888*758e9fbaSOystein Eftevaag
1889*758e9fbaSOystein Eftevaag ESYS_TR policySession = DUMMY_TR_HANDLE_POLICY_SESSION;
1890*758e9fbaSOystein Eftevaag TPM2B_NAME objectName = DUMMY_2B_DATA(.name);
1891*758e9fbaSOystein Eftevaag TPM2B_NAME newParentName = DUMMY_2B_DATA(.name);
1892*758e9fbaSOystein Eftevaag TPMI_YES_NO includeObject = 0;
1893*758e9fbaSOystein Eftevaag r = Esys_PolicyDuplicationSelect(esys_context,
1894*758e9fbaSOystein Eftevaag policySession,
1895*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1896*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1897*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1898*758e9fbaSOystein Eftevaag &objectName,
1899*758e9fbaSOystein Eftevaag &newParentName, includeObject);
1900*758e9fbaSOystein Eftevaag
1901*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1902*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1903*758e9fbaSOystein Eftevaag }
1904*758e9fbaSOystein Eftevaag
1905*758e9fbaSOystein Eftevaag static void
test_PolicyAuthorize(void ** state)1906*758e9fbaSOystein Eftevaag test_PolicyAuthorize(void **state)
1907*758e9fbaSOystein Eftevaag {
1908*758e9fbaSOystein Eftevaag TSS2_RC r;
1909*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1910*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1911*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1912*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1913*758e9fbaSOystein Eftevaag
1914*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1915*758e9fbaSOystein Eftevaag TPM2B_DIGEST approvedPolicy = DUMMY_2B_DATA(.buffer);
1916*758e9fbaSOystein Eftevaag TPM2B_NONCE policyRef = DUMMY_2B_DATA(.buffer);
1917*758e9fbaSOystein Eftevaag TPM2B_NAME keySign = DUMMY_2B_DATA(.name);
1918*758e9fbaSOystein Eftevaag TPMT_TK_VERIFIED checkTicket = DUMMY_TPMT_TK_VERIFIED;
1919*758e9fbaSOystein Eftevaag r = Esys_PolicyAuthorize(esys_context,
1920*758e9fbaSOystein Eftevaag policySession_handle,
1921*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1922*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1923*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1924*758e9fbaSOystein Eftevaag &approvedPolicy,
1925*758e9fbaSOystein Eftevaag &policyRef, &keySign, &checkTicket);
1926*758e9fbaSOystein Eftevaag
1927*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1928*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1929*758e9fbaSOystein Eftevaag }
1930*758e9fbaSOystein Eftevaag
1931*758e9fbaSOystein Eftevaag static void
test_PolicyAuthValue(void ** state)1932*758e9fbaSOystein Eftevaag test_PolicyAuthValue(void **state)
1933*758e9fbaSOystein Eftevaag {
1934*758e9fbaSOystein Eftevaag TSS2_RC r;
1935*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1936*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1937*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1938*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1939*758e9fbaSOystein Eftevaag
1940*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1941*758e9fbaSOystein Eftevaag r = Esys_PolicyAuthValue(esys_context,
1942*758e9fbaSOystein Eftevaag policySession_handle,
1943*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE);
1944*758e9fbaSOystein Eftevaag
1945*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1946*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1947*758e9fbaSOystein Eftevaag }
1948*758e9fbaSOystein Eftevaag
1949*758e9fbaSOystein Eftevaag static void
test_PolicyPassword(void ** state)1950*758e9fbaSOystein Eftevaag test_PolicyPassword(void **state)
1951*758e9fbaSOystein Eftevaag {
1952*758e9fbaSOystein Eftevaag TSS2_RC r;
1953*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1954*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1955*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1956*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1957*758e9fbaSOystein Eftevaag
1958*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1959*758e9fbaSOystein Eftevaag r = Esys_PolicyPassword(esys_context,
1960*758e9fbaSOystein Eftevaag policySession_handle,
1961*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE);
1962*758e9fbaSOystein Eftevaag
1963*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1964*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1965*758e9fbaSOystein Eftevaag }
1966*758e9fbaSOystein Eftevaag
1967*758e9fbaSOystein Eftevaag static void
test_PolicyGetDigest(void ** state)1968*758e9fbaSOystein Eftevaag test_PolicyGetDigest(void **state)
1969*758e9fbaSOystein Eftevaag {
1970*758e9fbaSOystein Eftevaag TSS2_RC r;
1971*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1972*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1973*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1974*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1975*758e9fbaSOystein Eftevaag
1976*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1977*758e9fbaSOystein Eftevaag TPM2B_DIGEST *policyDigest;
1978*758e9fbaSOystein Eftevaag r = Esys_PolicyGetDigest(esys_context,
1979*758e9fbaSOystein Eftevaag policySession_handle,
1980*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
1981*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &policyDigest);
1982*758e9fbaSOystein Eftevaag
1983*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
1984*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
1985*758e9fbaSOystein Eftevaag }
1986*758e9fbaSOystein Eftevaag
1987*758e9fbaSOystein Eftevaag static void
test_PolicyNvWritten(void ** state)1988*758e9fbaSOystein Eftevaag test_PolicyNvWritten(void **state)
1989*758e9fbaSOystein Eftevaag {
1990*758e9fbaSOystein Eftevaag TSS2_RC r;
1991*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
1992*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
1993*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
1994*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
1995*758e9fbaSOystein Eftevaag
1996*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
1997*758e9fbaSOystein Eftevaag TPMI_YES_NO writtenSet = 0;
1998*758e9fbaSOystein Eftevaag r = Esys_PolicyNvWritten(esys_context,
1999*758e9fbaSOystein Eftevaag policySession_handle,
2000*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2001*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, writtenSet);
2002*758e9fbaSOystein Eftevaag
2003*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2004*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2005*758e9fbaSOystein Eftevaag }
2006*758e9fbaSOystein Eftevaag
2007*758e9fbaSOystein Eftevaag static void
test_PolicyTemplate(void ** state)2008*758e9fbaSOystein Eftevaag test_PolicyTemplate(void **state)
2009*758e9fbaSOystein Eftevaag {
2010*758e9fbaSOystein Eftevaag TSS2_RC r;
2011*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2012*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2013*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2014*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2015*758e9fbaSOystein Eftevaag
2016*758e9fbaSOystein Eftevaag ESYS_TR policySession = DUMMY_TR_HANDLE_POLICY_SESSION;
2017*758e9fbaSOystein Eftevaag TPM2B_DIGEST templateHash = DUMMY_2B_DATA(.buffer);
2018*758e9fbaSOystein Eftevaag r = Esys_PolicyTemplate(esys_context,
2019*758e9fbaSOystein Eftevaag policySession,
2020*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2021*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2022*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &templateHash);
2023*758e9fbaSOystein Eftevaag
2024*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2025*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2026*758e9fbaSOystein Eftevaag }
2027*758e9fbaSOystein Eftevaag
2028*758e9fbaSOystein Eftevaag static void
test_PolicyAuthorizeNV(void ** state)2029*758e9fbaSOystein Eftevaag test_PolicyAuthorizeNV(void **state)
2030*758e9fbaSOystein Eftevaag {
2031*758e9fbaSOystein Eftevaag TSS2_RC r;
2032*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2033*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2034*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2035*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2036*758e9fbaSOystein Eftevaag
2037*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2038*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2039*758e9fbaSOystein Eftevaag ESYS_TR policySession_handle = DUMMY_TR_HANDLE_POLICY_SESSION;
2040*758e9fbaSOystein Eftevaag r = Esys_PolicyAuthorizeNV(esys_context,
2041*758e9fbaSOystein Eftevaag authHandle_handle,
2042*758e9fbaSOystein Eftevaag nvIndex_handle,
2043*758e9fbaSOystein Eftevaag policySession_handle,
2044*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2045*758e9fbaSOystein Eftevaag
2046*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2047*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2048*758e9fbaSOystein Eftevaag }
2049*758e9fbaSOystein Eftevaag
2050*758e9fbaSOystein Eftevaag static void
test_CreatePrimary(void ** state)2051*758e9fbaSOystein Eftevaag test_CreatePrimary(void **state)
2052*758e9fbaSOystein Eftevaag {
2053*758e9fbaSOystein Eftevaag TSS2_RC r;
2054*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2055*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2056*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2057*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2058*758e9fbaSOystein Eftevaag
2059*758e9fbaSOystein Eftevaag ESYS_TR primaryHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2060*758e9fbaSOystein Eftevaag TPM2B_SENSITIVE_CREATE inSensitive = { 0 };
2061*758e9fbaSOystein Eftevaag TPM2B_PUBLIC inPublic = DUMMY_IN_PUBLIC_DATA;
2062*758e9fbaSOystein Eftevaag TPM2B_DATA outsideInfo = DUMMY_2B_DATA(.buffer);
2063*758e9fbaSOystein Eftevaag TPML_PCR_SELECTION creationPCR = { 0 };
2064*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle;
2065*758e9fbaSOystein Eftevaag TPM2B_PUBLIC *outPublic;
2066*758e9fbaSOystein Eftevaag TPM2B_CREATION_DATA *creationData;
2067*758e9fbaSOystein Eftevaag TPM2B_DIGEST *creationHash;
2068*758e9fbaSOystein Eftevaag TPMT_TK_CREATION *creationTicket;
2069*758e9fbaSOystein Eftevaag r = Esys_CreatePrimary(esys_context,
2070*758e9fbaSOystein Eftevaag primaryHandle_handle,
2071*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2072*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2073*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2074*758e9fbaSOystein Eftevaag &inSensitive,
2075*758e9fbaSOystein Eftevaag &inPublic,
2076*758e9fbaSOystein Eftevaag &outsideInfo,
2077*758e9fbaSOystein Eftevaag &creationPCR,
2078*758e9fbaSOystein Eftevaag &objectHandle_handle,
2079*758e9fbaSOystein Eftevaag &outPublic,
2080*758e9fbaSOystein Eftevaag &creationData, &creationHash, &creationTicket);
2081*758e9fbaSOystein Eftevaag
2082*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2083*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2084*758e9fbaSOystein Eftevaag }
2085*758e9fbaSOystein Eftevaag
2086*758e9fbaSOystein Eftevaag static void
test_HierarchyControl(void ** state)2087*758e9fbaSOystein Eftevaag test_HierarchyControl(void **state)
2088*758e9fbaSOystein Eftevaag {
2089*758e9fbaSOystein Eftevaag TSS2_RC r;
2090*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2091*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2092*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2093*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2094*758e9fbaSOystein Eftevaag
2095*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2096*758e9fbaSOystein Eftevaag TPMI_RH_ENABLES enable = TPM2_RH_OWNER;
2097*758e9fbaSOystein Eftevaag TPMI_YES_NO state2 = 0;
2098*758e9fbaSOystein Eftevaag r = Esys_HierarchyControl(esys_context,
2099*758e9fbaSOystein Eftevaag authHandle_handle,
2100*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2101*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, enable, state2);
2102*758e9fbaSOystein Eftevaag
2103*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2104*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2105*758e9fbaSOystein Eftevaag }
2106*758e9fbaSOystein Eftevaag
2107*758e9fbaSOystein Eftevaag static void
test_SetPrimaryPolicy(void ** state)2108*758e9fbaSOystein Eftevaag test_SetPrimaryPolicy(void **state)
2109*758e9fbaSOystein Eftevaag {
2110*758e9fbaSOystein Eftevaag TSS2_RC r;
2111*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2112*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2113*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2114*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2115*758e9fbaSOystein Eftevaag
2116*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2117*758e9fbaSOystein Eftevaag TPM2B_DIGEST authPolicy = DUMMY_2B_DATA(.buffer);
2118*758e9fbaSOystein Eftevaag TPMI_ALG_HASH hashAlg = TPM2_ALG_SHA1;
2119*758e9fbaSOystein Eftevaag r = Esys_SetPrimaryPolicy(esys_context,
2120*758e9fbaSOystein Eftevaag authHandle_handle,
2121*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2122*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &authPolicy, hashAlg);
2123*758e9fbaSOystein Eftevaag
2124*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2125*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2126*758e9fbaSOystein Eftevaag }
2127*758e9fbaSOystein Eftevaag
2128*758e9fbaSOystein Eftevaag static void
test_ChangePPS(void ** state)2129*758e9fbaSOystein Eftevaag test_ChangePPS(void **state)
2130*758e9fbaSOystein Eftevaag {
2131*758e9fbaSOystein Eftevaag TSS2_RC r;
2132*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2133*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2134*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2135*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2136*758e9fbaSOystein Eftevaag
2137*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2138*758e9fbaSOystein Eftevaag r = Esys_ChangePPS(esys_context,
2139*758e9fbaSOystein Eftevaag authHandle_handle,
2140*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2141*758e9fbaSOystein Eftevaag
2142*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2143*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2144*758e9fbaSOystein Eftevaag }
2145*758e9fbaSOystein Eftevaag
2146*758e9fbaSOystein Eftevaag static void
test_ChangeEPS(void ** state)2147*758e9fbaSOystein Eftevaag test_ChangeEPS(void **state)
2148*758e9fbaSOystein Eftevaag {
2149*758e9fbaSOystein Eftevaag TSS2_RC r;
2150*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2151*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2152*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2153*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2154*758e9fbaSOystein Eftevaag
2155*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2156*758e9fbaSOystein Eftevaag r = Esys_ChangeEPS(esys_context,
2157*758e9fbaSOystein Eftevaag authHandle_handle,
2158*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2159*758e9fbaSOystein Eftevaag
2160*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2161*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2162*758e9fbaSOystein Eftevaag }
2163*758e9fbaSOystein Eftevaag
2164*758e9fbaSOystein Eftevaag static void
test_Clear(void ** state)2165*758e9fbaSOystein Eftevaag test_Clear(void **state)
2166*758e9fbaSOystein Eftevaag {
2167*758e9fbaSOystein Eftevaag TSS2_RC r;
2168*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2169*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2170*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2171*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2172*758e9fbaSOystein Eftevaag
2173*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2174*758e9fbaSOystein Eftevaag r = Esys_Clear(esys_context,
2175*758e9fbaSOystein Eftevaag authHandle_handle,
2176*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2177*758e9fbaSOystein Eftevaag
2178*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2179*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2180*758e9fbaSOystein Eftevaag }
2181*758e9fbaSOystein Eftevaag
2182*758e9fbaSOystein Eftevaag static void
test_ClearControl(void ** state)2183*758e9fbaSOystein Eftevaag test_ClearControl(void **state)
2184*758e9fbaSOystein Eftevaag {
2185*758e9fbaSOystein Eftevaag TSS2_RC r;
2186*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2187*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2188*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2189*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2190*758e9fbaSOystein Eftevaag
2191*758e9fbaSOystein Eftevaag ESYS_TR auth_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2192*758e9fbaSOystein Eftevaag TPMI_YES_NO disable = 0;
2193*758e9fbaSOystein Eftevaag r = Esys_ClearControl(esys_context,
2194*758e9fbaSOystein Eftevaag auth_handle,
2195*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2196*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, disable);
2197*758e9fbaSOystein Eftevaag
2198*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2199*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2200*758e9fbaSOystein Eftevaag }
2201*758e9fbaSOystein Eftevaag
2202*758e9fbaSOystein Eftevaag static void
test_HierarchyChangeAuth(void ** state)2203*758e9fbaSOystein Eftevaag test_HierarchyChangeAuth(void **state)
2204*758e9fbaSOystein Eftevaag {
2205*758e9fbaSOystein Eftevaag TSS2_RC r;
2206*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2207*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2208*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2209*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2210*758e9fbaSOystein Eftevaag
2211*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2212*758e9fbaSOystein Eftevaag TPM2B_AUTH newAuth = DUMMY_2B_DATA(.buffer);
2213*758e9fbaSOystein Eftevaag r = Esys_HierarchyChangeAuth(esys_context,
2214*758e9fbaSOystein Eftevaag authHandle_handle,
2215*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2216*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &newAuth);
2217*758e9fbaSOystein Eftevaag
2218*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2219*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2220*758e9fbaSOystein Eftevaag }
2221*758e9fbaSOystein Eftevaag
2222*758e9fbaSOystein Eftevaag static void
test_DictionaryAttackLockReset(void ** state)2223*758e9fbaSOystein Eftevaag test_DictionaryAttackLockReset(void **state)
2224*758e9fbaSOystein Eftevaag {
2225*758e9fbaSOystein Eftevaag TSS2_RC r;
2226*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2227*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2228*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2229*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2230*758e9fbaSOystein Eftevaag
2231*758e9fbaSOystein Eftevaag ESYS_TR lockHandle_handle = DUMMY_TR_HANDLE_LOCKOUT;;
2232*758e9fbaSOystein Eftevaag r = Esys_DictionaryAttackLockReset(esys_context,
2233*758e9fbaSOystein Eftevaag lockHandle_handle,
2234*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2235*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE);
2236*758e9fbaSOystein Eftevaag
2237*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2238*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2239*758e9fbaSOystein Eftevaag }
2240*758e9fbaSOystein Eftevaag
2241*758e9fbaSOystein Eftevaag static void
test_DictionaryAttackParameters(void ** state)2242*758e9fbaSOystein Eftevaag test_DictionaryAttackParameters(void **state)
2243*758e9fbaSOystein Eftevaag {
2244*758e9fbaSOystein Eftevaag TSS2_RC r;
2245*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2246*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2247*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2248*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2249*758e9fbaSOystein Eftevaag
2250*758e9fbaSOystein Eftevaag ESYS_TR lockHandle_handle = DUMMY_TR_HANDLE_LOCKOUT;
2251*758e9fbaSOystein Eftevaag UINT32 newMaxTries = 0;
2252*758e9fbaSOystein Eftevaag UINT32 newRecoveryTime = 0;
2253*758e9fbaSOystein Eftevaag UINT32 lockoutRecovery = 0;
2254*758e9fbaSOystein Eftevaag r = Esys_DictionaryAttackParameters(esys_context,
2255*758e9fbaSOystein Eftevaag lockHandle_handle,
2256*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2257*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2258*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2259*758e9fbaSOystein Eftevaag newMaxTries,
2260*758e9fbaSOystein Eftevaag newRecoveryTime, lockoutRecovery);
2261*758e9fbaSOystein Eftevaag
2262*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2263*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2264*758e9fbaSOystein Eftevaag }
2265*758e9fbaSOystein Eftevaag
2266*758e9fbaSOystein Eftevaag static void
test_PP_Commands(void ** state)2267*758e9fbaSOystein Eftevaag test_PP_Commands(void **state)
2268*758e9fbaSOystein Eftevaag {
2269*758e9fbaSOystein Eftevaag TSS2_RC r;
2270*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2271*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2272*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2273*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2274*758e9fbaSOystein Eftevaag
2275*758e9fbaSOystein Eftevaag ESYS_TR auth_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2276*758e9fbaSOystein Eftevaag TPML_CC setList = { 0 };
2277*758e9fbaSOystein Eftevaag TPML_CC clearList = { 0 };
2278*758e9fbaSOystein Eftevaag r = Esys_PP_Commands(esys_context,
2279*758e9fbaSOystein Eftevaag auth_handle,
2280*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2281*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &setList, &clearList);
2282*758e9fbaSOystein Eftevaag
2283*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2284*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2285*758e9fbaSOystein Eftevaag }
2286*758e9fbaSOystein Eftevaag
2287*758e9fbaSOystein Eftevaag static void
test_SetAlgorithmSet(void ** state)2288*758e9fbaSOystein Eftevaag test_SetAlgorithmSet(void **state)
2289*758e9fbaSOystein Eftevaag {
2290*758e9fbaSOystein Eftevaag TSS2_RC r;
2291*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2292*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2293*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2294*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2295*758e9fbaSOystein Eftevaag
2296*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2297*758e9fbaSOystein Eftevaag UINT32 algorithmSet = 0;
2298*758e9fbaSOystein Eftevaag r = Esys_SetAlgorithmSet(esys_context,
2299*758e9fbaSOystein Eftevaag authHandle_handle,
2300*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2301*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, algorithmSet);
2302*758e9fbaSOystein Eftevaag
2303*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2304*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2305*758e9fbaSOystein Eftevaag }
2306*758e9fbaSOystein Eftevaag
2307*758e9fbaSOystein Eftevaag static void
test_FieldUpgradeStart(void ** state)2308*758e9fbaSOystein Eftevaag test_FieldUpgradeStart(void **state)
2309*758e9fbaSOystein Eftevaag {
2310*758e9fbaSOystein Eftevaag TSS2_RC r;
2311*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2312*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2313*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2314*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2315*758e9fbaSOystein Eftevaag
2316*758e9fbaSOystein Eftevaag ESYS_TR authorization_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;;
2317*758e9fbaSOystein Eftevaag ESYS_TR keyHandle_handle = DUMMY_TR_HANDLE_KEY;
2318*758e9fbaSOystein Eftevaag TPM2B_DIGEST fuDigest = DUMMY_2B_DATA(.buffer);
2319*758e9fbaSOystein Eftevaag TPMT_SIGNATURE manifestSignature = DUMMY_TPMT_SIGNATURE;
2320*758e9fbaSOystein Eftevaag r = Esys_FieldUpgradeStart(esys_context,
2321*758e9fbaSOystein Eftevaag authorization_handle,
2322*758e9fbaSOystein Eftevaag keyHandle_handle,
2323*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2324*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2325*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &fuDigest, &manifestSignature);
2326*758e9fbaSOystein Eftevaag
2327*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2328*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2329*758e9fbaSOystein Eftevaag }
2330*758e9fbaSOystein Eftevaag
2331*758e9fbaSOystein Eftevaag static void
test_FieldUpgradeData(void ** state)2332*758e9fbaSOystein Eftevaag test_FieldUpgradeData(void **state)
2333*758e9fbaSOystein Eftevaag {
2334*758e9fbaSOystein Eftevaag TSS2_RC r;
2335*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2336*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2337*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2338*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2339*758e9fbaSOystein Eftevaag
2340*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER fuData = DUMMY_2B_DATA(.buffer);
2341*758e9fbaSOystein Eftevaag TPMT_HA *nextDigest;
2342*758e9fbaSOystein Eftevaag TPMT_HA *firstDigest;
2343*758e9fbaSOystein Eftevaag r = Esys_FieldUpgradeData(esys_context,
2344*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2345*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2346*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &fuData, &nextDigest, &firstDigest);
2347*758e9fbaSOystein Eftevaag
2348*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2349*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2350*758e9fbaSOystein Eftevaag }
2351*758e9fbaSOystein Eftevaag
2352*758e9fbaSOystein Eftevaag static void
test_FirmwareRead(void ** state)2353*758e9fbaSOystein Eftevaag test_FirmwareRead(void **state)
2354*758e9fbaSOystein Eftevaag {
2355*758e9fbaSOystein Eftevaag TSS2_RC r;
2356*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2357*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2358*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2359*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2360*758e9fbaSOystein Eftevaag
2361*758e9fbaSOystein Eftevaag UINT32 sequenceNumber = 0;
2362*758e9fbaSOystein Eftevaag TPM2B_MAX_BUFFER *fuData;
2363*758e9fbaSOystein Eftevaag r = Esys_FirmwareRead(esys_context,
2364*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2365*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, sequenceNumber, &fuData);
2366*758e9fbaSOystein Eftevaag
2367*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2368*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2369*758e9fbaSOystein Eftevaag }
2370*758e9fbaSOystein Eftevaag
2371*758e9fbaSOystein Eftevaag static void
test_ContextSave(void ** state)2372*758e9fbaSOystein Eftevaag test_ContextSave(void **state)
2373*758e9fbaSOystein Eftevaag {
2374*758e9fbaSOystein Eftevaag TSS2_RC r;
2375*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2376*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2377*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2378*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2379*758e9fbaSOystein Eftevaag
2380*758e9fbaSOystein Eftevaag ESYS_TR saveHandle_handle = DUMMY_TR_HANDLE_KEY;
2381*758e9fbaSOystein Eftevaag TPMS_CONTEXT *context;
2382*758e9fbaSOystein Eftevaag r = Esys_ContextSave(esys_context, saveHandle_handle, &context);
2383*758e9fbaSOystein Eftevaag
2384*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2385*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2386*758e9fbaSOystein Eftevaag }
2387*758e9fbaSOystein Eftevaag
2388*758e9fbaSOystein Eftevaag static void
test_ContextLoad(void ** state)2389*758e9fbaSOystein Eftevaag test_ContextLoad(void **state)
2390*758e9fbaSOystein Eftevaag {
2391*758e9fbaSOystein Eftevaag TSS2_RC r;
2392*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2393*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2394*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2395*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2396*758e9fbaSOystein Eftevaag
2397*758e9fbaSOystein Eftevaag TPMS_CONTEXT context = { 0 };
2398*758e9fbaSOystein Eftevaag ESYS_TR loadedHandle_handle;
2399*758e9fbaSOystein Eftevaag
2400*758e9fbaSOystein Eftevaag context.contextBlob.size = 0x100;
2401*758e9fbaSOystein Eftevaag context.savedHandle = TPM2_TRANSIENT_FIRST;
2402*758e9fbaSOystein Eftevaag context.hierarchy = TPM2_RH_OWNER;
2403*758e9fbaSOystein Eftevaag r = Esys_ContextLoad(esys_context, &context, &loadedHandle_handle);
2404*758e9fbaSOystein Eftevaag
2405*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2406*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2407*758e9fbaSOystein Eftevaag }
2408*758e9fbaSOystein Eftevaag
2409*758e9fbaSOystein Eftevaag static void
test_FlushContext(void ** state)2410*758e9fbaSOystein Eftevaag test_FlushContext(void **state)
2411*758e9fbaSOystein Eftevaag {
2412*758e9fbaSOystein Eftevaag TSS2_RC r;
2413*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2414*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2415*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2416*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2417*758e9fbaSOystein Eftevaag
2418*758e9fbaSOystein Eftevaag ESYS_TR flushHandle_handle = DUMMY_TR_HANDLE_KEY;
2419*758e9fbaSOystein Eftevaag r = Esys_FlushContext(esys_context, flushHandle_handle);
2420*758e9fbaSOystein Eftevaag
2421*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2422*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2423*758e9fbaSOystein Eftevaag }
2424*758e9fbaSOystein Eftevaag
2425*758e9fbaSOystein Eftevaag static void
test_EvictControl(void ** state)2426*758e9fbaSOystein Eftevaag test_EvictControl(void **state)
2427*758e9fbaSOystein Eftevaag {
2428*758e9fbaSOystein Eftevaag TSS2_RC r;
2429*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2430*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2431*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2432*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2433*758e9fbaSOystein Eftevaag
2434*758e9fbaSOystein Eftevaag ESYS_TR auth_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2435*758e9fbaSOystein Eftevaag ESYS_TR objectHandle_handle = DUMMY_TR_HANDLE_KEY;
2436*758e9fbaSOystein Eftevaag TPMI_DH_PERSISTENT persistentHandle = TPM2_PERSISTENT_FIRST;
2437*758e9fbaSOystein Eftevaag ESYS_TR newObjectHandle_handle;
2438*758e9fbaSOystein Eftevaag r = Esys_EvictControl(esys_context,
2439*758e9fbaSOystein Eftevaag auth_handle,
2440*758e9fbaSOystein Eftevaag objectHandle_handle,
2441*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2442*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2443*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2444*758e9fbaSOystein Eftevaag persistentHandle, &newObjectHandle_handle);
2445*758e9fbaSOystein Eftevaag
2446*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2447*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2448*758e9fbaSOystein Eftevaag }
2449*758e9fbaSOystein Eftevaag
2450*758e9fbaSOystein Eftevaag static void
test_ReadClock(void ** state)2451*758e9fbaSOystein Eftevaag test_ReadClock(void **state)
2452*758e9fbaSOystein Eftevaag {
2453*758e9fbaSOystein Eftevaag TSS2_RC r;
2454*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2455*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2456*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2457*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2458*758e9fbaSOystein Eftevaag
2459*758e9fbaSOystein Eftevaag TPMS_TIME_INFO *currentTime;
2460*758e9fbaSOystein Eftevaag r = Esys_ReadClock(esys_context,
2461*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, ¤tTime);
2462*758e9fbaSOystein Eftevaag
2463*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2464*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2465*758e9fbaSOystein Eftevaag }
2466*758e9fbaSOystein Eftevaag
2467*758e9fbaSOystein Eftevaag static void
test_ClockSet(void ** state)2468*758e9fbaSOystein Eftevaag test_ClockSet(void **state)
2469*758e9fbaSOystein Eftevaag {
2470*758e9fbaSOystein Eftevaag TSS2_RC r;
2471*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2472*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2473*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2474*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2475*758e9fbaSOystein Eftevaag
2476*758e9fbaSOystein Eftevaag ESYS_TR auth_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2477*758e9fbaSOystein Eftevaag UINT64 newTime = 0;
2478*758e9fbaSOystein Eftevaag r = Esys_ClockSet(esys_context,
2479*758e9fbaSOystein Eftevaag auth_handle,
2480*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE, newTime);
2481*758e9fbaSOystein Eftevaag
2482*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2483*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2484*758e9fbaSOystein Eftevaag }
2485*758e9fbaSOystein Eftevaag
2486*758e9fbaSOystein Eftevaag static void
test_ClockRateAdjust(void ** state)2487*758e9fbaSOystein Eftevaag test_ClockRateAdjust(void **state)
2488*758e9fbaSOystein Eftevaag {
2489*758e9fbaSOystein Eftevaag TSS2_RC r;
2490*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2491*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2492*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2493*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2494*758e9fbaSOystein Eftevaag
2495*758e9fbaSOystein Eftevaag ESYS_TR auth_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2496*758e9fbaSOystein Eftevaag TPM2_CLOCK_ADJUST rateAdjust = 0;
2497*758e9fbaSOystein Eftevaag r = Esys_ClockRateAdjust(esys_context,
2498*758e9fbaSOystein Eftevaag auth_handle,
2499*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2500*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, rateAdjust);
2501*758e9fbaSOystein Eftevaag
2502*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2503*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2504*758e9fbaSOystein Eftevaag }
2505*758e9fbaSOystein Eftevaag
2506*758e9fbaSOystein Eftevaag static void
test_GetCapability(void ** state)2507*758e9fbaSOystein Eftevaag test_GetCapability(void **state)
2508*758e9fbaSOystein Eftevaag {
2509*758e9fbaSOystein Eftevaag TSS2_RC r;
2510*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2511*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2512*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2513*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2514*758e9fbaSOystein Eftevaag
2515*758e9fbaSOystein Eftevaag TPM2_CAP capability = 0;
2516*758e9fbaSOystein Eftevaag UINT32 property = 0;
2517*758e9fbaSOystein Eftevaag UINT32 propertyCount = 0;
2518*758e9fbaSOystein Eftevaag TPMS_CAPABILITY_DATA *capabilityData;
2519*758e9fbaSOystein Eftevaag TPMI_YES_NO moreData;
2520*758e9fbaSOystein Eftevaag r = Esys_GetCapability(esys_context,
2521*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2522*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2523*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2524*758e9fbaSOystein Eftevaag capability,
2525*758e9fbaSOystein Eftevaag property, propertyCount, &moreData, &capabilityData);
2526*758e9fbaSOystein Eftevaag
2527*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2528*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2529*758e9fbaSOystein Eftevaag }
2530*758e9fbaSOystein Eftevaag
2531*758e9fbaSOystein Eftevaag static void
test_TestParms(void ** state)2532*758e9fbaSOystein Eftevaag test_TestParms(void **state)
2533*758e9fbaSOystein Eftevaag {
2534*758e9fbaSOystein Eftevaag TSS2_RC r;
2535*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2536*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2537*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2538*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2539*758e9fbaSOystein Eftevaag
2540*758e9fbaSOystein Eftevaag TPMT_PUBLIC_PARMS parameters = DUMMY_TPMT_PUBLIC_PARAMS;
2541*758e9fbaSOystein Eftevaag r = Esys_TestParms(esys_context,
2542*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, ESYS_TR_NONE, ¶meters);
2543*758e9fbaSOystein Eftevaag
2544*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2545*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2546*758e9fbaSOystein Eftevaag }
2547*758e9fbaSOystein Eftevaag
2548*758e9fbaSOystein Eftevaag static void
test_NV_DefineSpace(void ** state)2549*758e9fbaSOystein Eftevaag test_NV_DefineSpace(void **state)
2550*758e9fbaSOystein Eftevaag {
2551*758e9fbaSOystein Eftevaag TSS2_RC r;
2552*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2553*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2554*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2555*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2556*758e9fbaSOystein Eftevaag
2557*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2558*758e9fbaSOystein Eftevaag TPM2B_AUTH auth = DUMMY_2B_DATA(.buffer);
2559*758e9fbaSOystein Eftevaag TPM2B_NV_PUBLIC publicInfo = {
2560*758e9fbaSOystein Eftevaag .size = 0,
2561*758e9fbaSOystein Eftevaag .nvPublic = {
2562*758e9fbaSOystein Eftevaag .nvIndex = TPM2_NV_INDEX_FIRST,
2563*758e9fbaSOystein Eftevaag .nameAlg = TPM2_ALG_SHA1,
2564*758e9fbaSOystein Eftevaag .attributes = (TPMA_NV_PPWRITE |
2565*758e9fbaSOystein Eftevaag TPMA_NV_AUTHWRITE |
2566*758e9fbaSOystein Eftevaag 1 << TPMA_NV_TPM2_NT_SHIFT |
2567*758e9fbaSOystein Eftevaag TPMA_NV_WRITE_STCLEAR |
2568*758e9fbaSOystein Eftevaag TPMA_NV_PPREAD |
2569*758e9fbaSOystein Eftevaag TPMA_NV_AUTHREAD | TPMA_NV_PLATFORMCREATE),
2570*758e9fbaSOystein Eftevaag .authPolicy = {
2571*758e9fbaSOystein Eftevaag .size = 0,
2572*758e9fbaSOystein Eftevaag .buffer = {},
2573*758e9fbaSOystein Eftevaag },
2574*758e9fbaSOystein Eftevaag .dataSize = 32,
2575*758e9fbaSOystein Eftevaag }
2576*758e9fbaSOystein Eftevaag };
2577*758e9fbaSOystein Eftevaag ESYS_TR nvHandle_handle;
2578*758e9fbaSOystein Eftevaag r = Esys_NV_DefineSpace(esys_context,
2579*758e9fbaSOystein Eftevaag authHandle_handle,
2580*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2581*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2582*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &auth, &publicInfo, &nvHandle_handle);
2583*758e9fbaSOystein Eftevaag
2584*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2585*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2586*758e9fbaSOystein Eftevaag }
2587*758e9fbaSOystein Eftevaag
2588*758e9fbaSOystein Eftevaag static void
test_NV_UndefineSpace(void ** state)2589*758e9fbaSOystein Eftevaag test_NV_UndefineSpace(void **state)
2590*758e9fbaSOystein Eftevaag {
2591*758e9fbaSOystein Eftevaag TSS2_RC r;
2592*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2593*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2594*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2595*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2596*758e9fbaSOystein Eftevaag
2597*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2598*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2599*758e9fbaSOystein Eftevaag r = Esys_NV_UndefineSpace(esys_context,
2600*758e9fbaSOystein Eftevaag authHandle_handle,
2601*758e9fbaSOystein Eftevaag nvIndex_handle,
2602*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2603*758e9fbaSOystein Eftevaag
2604*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2605*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2606*758e9fbaSOystein Eftevaag }
2607*758e9fbaSOystein Eftevaag
2608*758e9fbaSOystein Eftevaag static void
test_NV_UndefineSpaceSpecial(void ** state)2609*758e9fbaSOystein Eftevaag test_NV_UndefineSpaceSpecial(void **state)
2610*758e9fbaSOystein Eftevaag {
2611*758e9fbaSOystein Eftevaag TSS2_RC r;
2612*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2613*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2614*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2615*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2616*758e9fbaSOystein Eftevaag
2617*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2618*758e9fbaSOystein Eftevaag ESYS_TR platform_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2619*758e9fbaSOystein Eftevaag r = Esys_NV_UndefineSpaceSpecial(esys_context,
2620*758e9fbaSOystein Eftevaag nvIndex_handle,
2621*758e9fbaSOystein Eftevaag platform_handle,
2622*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2623*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE);
2624*758e9fbaSOystein Eftevaag
2625*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2626*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2627*758e9fbaSOystein Eftevaag }
2628*758e9fbaSOystein Eftevaag
2629*758e9fbaSOystein Eftevaag static void
test_NV_ReadPublic(void ** state)2630*758e9fbaSOystein Eftevaag test_NV_ReadPublic(void **state)
2631*758e9fbaSOystein Eftevaag {
2632*758e9fbaSOystein Eftevaag TSS2_RC r;
2633*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2634*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2635*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2636*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2637*758e9fbaSOystein Eftevaag
2638*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2639*758e9fbaSOystein Eftevaag TPM2B_NV_PUBLIC *nvPublic;
2640*758e9fbaSOystein Eftevaag TPM2B_NAME *nvName;
2641*758e9fbaSOystein Eftevaag r = Esys_NV_ReadPublic(esys_context,
2642*758e9fbaSOystein Eftevaag nvIndex_handle,
2643*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2644*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &nvPublic, &nvName);
2645*758e9fbaSOystein Eftevaag
2646*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2647*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2648*758e9fbaSOystein Eftevaag }
2649*758e9fbaSOystein Eftevaag
2650*758e9fbaSOystein Eftevaag static void
test_NV_Write(void ** state)2651*758e9fbaSOystein Eftevaag test_NV_Write(void **state)
2652*758e9fbaSOystein Eftevaag {
2653*758e9fbaSOystein Eftevaag TSS2_RC r;
2654*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2655*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2656*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2657*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2658*758e9fbaSOystein Eftevaag
2659*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2660*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2661*758e9fbaSOystein Eftevaag TPM2B_MAX_NV_BUFFER data = DUMMY_2B_DATA(.buffer);
2662*758e9fbaSOystein Eftevaag UINT16 offset = 0;
2663*758e9fbaSOystein Eftevaag r = Esys_NV_Write(esys_context,
2664*758e9fbaSOystein Eftevaag authHandle_handle,
2665*758e9fbaSOystein Eftevaag nvIndex_handle,
2666*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2667*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &data, offset);
2668*758e9fbaSOystein Eftevaag
2669*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2670*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2671*758e9fbaSOystein Eftevaag }
2672*758e9fbaSOystein Eftevaag
2673*758e9fbaSOystein Eftevaag static void
test_NV_Increment(void ** state)2674*758e9fbaSOystein Eftevaag test_NV_Increment(void **state)
2675*758e9fbaSOystein Eftevaag {
2676*758e9fbaSOystein Eftevaag TSS2_RC r;
2677*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2678*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2679*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2680*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2681*758e9fbaSOystein Eftevaag
2682*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2683*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2684*758e9fbaSOystein Eftevaag r = Esys_NV_Increment(esys_context,
2685*758e9fbaSOystein Eftevaag authHandle_handle,
2686*758e9fbaSOystein Eftevaag nvIndex_handle,
2687*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2688*758e9fbaSOystein Eftevaag
2689*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2690*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2691*758e9fbaSOystein Eftevaag }
2692*758e9fbaSOystein Eftevaag
2693*758e9fbaSOystein Eftevaag static void
test_NV_Extend(void ** state)2694*758e9fbaSOystein Eftevaag test_NV_Extend(void **state)
2695*758e9fbaSOystein Eftevaag {
2696*758e9fbaSOystein Eftevaag TSS2_RC r;
2697*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2698*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2699*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2700*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2701*758e9fbaSOystein Eftevaag
2702*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2703*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2704*758e9fbaSOystein Eftevaag TPM2B_MAX_NV_BUFFER data = DUMMY_2B_DATA(.buffer);
2705*758e9fbaSOystein Eftevaag r = Esys_NV_Extend(esys_context,
2706*758e9fbaSOystein Eftevaag authHandle_handle,
2707*758e9fbaSOystein Eftevaag nvIndex_handle,
2708*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE, &data);
2709*758e9fbaSOystein Eftevaag
2710*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2711*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2712*758e9fbaSOystein Eftevaag }
2713*758e9fbaSOystein Eftevaag
2714*758e9fbaSOystein Eftevaag static void
test_NV_SetBits(void ** state)2715*758e9fbaSOystein Eftevaag test_NV_SetBits(void **state)
2716*758e9fbaSOystein Eftevaag {
2717*758e9fbaSOystein Eftevaag TSS2_RC r;
2718*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2719*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2720*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2721*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2722*758e9fbaSOystein Eftevaag
2723*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2724*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2725*758e9fbaSOystein Eftevaag UINT64 bits = 0;
2726*758e9fbaSOystein Eftevaag r = Esys_NV_SetBits(esys_context,
2727*758e9fbaSOystein Eftevaag authHandle_handle,
2728*758e9fbaSOystein Eftevaag nvIndex_handle,
2729*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE, bits);
2730*758e9fbaSOystein Eftevaag
2731*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2732*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2733*758e9fbaSOystein Eftevaag }
2734*758e9fbaSOystein Eftevaag
2735*758e9fbaSOystein Eftevaag static void
test_NV_WriteLock(void ** state)2736*758e9fbaSOystein Eftevaag test_NV_WriteLock(void **state)
2737*758e9fbaSOystein Eftevaag {
2738*758e9fbaSOystein Eftevaag TSS2_RC r;
2739*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2740*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2741*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2742*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2743*758e9fbaSOystein Eftevaag
2744*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2745*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2746*758e9fbaSOystein Eftevaag r = Esys_NV_WriteLock(esys_context,
2747*758e9fbaSOystein Eftevaag authHandle_handle,
2748*758e9fbaSOystein Eftevaag nvIndex_handle,
2749*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2750*758e9fbaSOystein Eftevaag
2751*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2752*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2753*758e9fbaSOystein Eftevaag }
2754*758e9fbaSOystein Eftevaag
2755*758e9fbaSOystein Eftevaag static void
test_NV_GlobalWriteLock(void ** state)2756*758e9fbaSOystein Eftevaag test_NV_GlobalWriteLock(void **state)
2757*758e9fbaSOystein Eftevaag {
2758*758e9fbaSOystein Eftevaag TSS2_RC r;
2759*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2760*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2761*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2762*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2763*758e9fbaSOystein Eftevaag
2764*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2765*758e9fbaSOystein Eftevaag r = Esys_NV_GlobalWriteLock(esys_context,
2766*758e9fbaSOystein Eftevaag authHandle_handle,
2767*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2768*758e9fbaSOystein Eftevaag
2769*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2770*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2771*758e9fbaSOystein Eftevaag }
2772*758e9fbaSOystein Eftevaag
2773*758e9fbaSOystein Eftevaag static void
test_NV_Read(void ** state)2774*758e9fbaSOystein Eftevaag test_NV_Read(void **state)
2775*758e9fbaSOystein Eftevaag {
2776*758e9fbaSOystein Eftevaag TSS2_RC r;
2777*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2778*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2779*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2780*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2781*758e9fbaSOystein Eftevaag
2782*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2783*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2784*758e9fbaSOystein Eftevaag UINT16 size = 0;
2785*758e9fbaSOystein Eftevaag UINT16 offset = 0;
2786*758e9fbaSOystein Eftevaag TPM2B_MAX_NV_BUFFER *data;
2787*758e9fbaSOystein Eftevaag r = Esys_NV_Read(esys_context,
2788*758e9fbaSOystein Eftevaag authHandle_handle,
2789*758e9fbaSOystein Eftevaag nvIndex_handle,
2790*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2791*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, size, offset, &data);
2792*758e9fbaSOystein Eftevaag
2793*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2794*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2795*758e9fbaSOystein Eftevaag }
2796*758e9fbaSOystein Eftevaag
2797*758e9fbaSOystein Eftevaag static void
test_NV_ReadLock(void ** state)2798*758e9fbaSOystein Eftevaag test_NV_ReadLock(void **state)
2799*758e9fbaSOystein Eftevaag {
2800*758e9fbaSOystein Eftevaag TSS2_RC r;
2801*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2802*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2803*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2804*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2805*758e9fbaSOystein Eftevaag
2806*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2807*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2808*758e9fbaSOystein Eftevaag r = Esys_NV_ReadLock(esys_context,
2809*758e9fbaSOystein Eftevaag authHandle_handle,
2810*758e9fbaSOystein Eftevaag nvIndex_handle,
2811*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD, ESYS_TR_NONE, ESYS_TR_NONE);
2812*758e9fbaSOystein Eftevaag
2813*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2814*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2815*758e9fbaSOystein Eftevaag }
2816*758e9fbaSOystein Eftevaag
2817*758e9fbaSOystein Eftevaag static void
test_NV_ChangeAuth(void ** state)2818*758e9fbaSOystein Eftevaag test_NV_ChangeAuth(void **state)
2819*758e9fbaSOystein Eftevaag {
2820*758e9fbaSOystein Eftevaag TSS2_RC r;
2821*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2822*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2823*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2824*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2825*758e9fbaSOystein Eftevaag
2826*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2827*758e9fbaSOystein Eftevaag TPM2B_AUTH newAuth = DUMMY_2B_DATA(.buffer);
2828*758e9fbaSOystein Eftevaag r = Esys_NV_ChangeAuth(esys_context,
2829*758e9fbaSOystein Eftevaag nvIndex_handle,
2830*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2831*758e9fbaSOystein Eftevaag ESYS_TR_NONE, ESYS_TR_NONE, &newAuth);
2832*758e9fbaSOystein Eftevaag
2833*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2834*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2835*758e9fbaSOystein Eftevaag }
2836*758e9fbaSOystein Eftevaag
2837*758e9fbaSOystein Eftevaag static void
test_NV_Certify(void ** state)2838*758e9fbaSOystein Eftevaag test_NV_Certify(void **state)
2839*758e9fbaSOystein Eftevaag {
2840*758e9fbaSOystein Eftevaag TSS2_RC r;
2841*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2842*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2843*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2844*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2845*758e9fbaSOystein Eftevaag
2846*758e9fbaSOystein Eftevaag ESYS_TR signHandle_handle = DUMMY_TR_HANDLE_KEY;
2847*758e9fbaSOystein Eftevaag ESYS_TR authHandle_handle = DUMMY_TR_HANDLE_HIERARCHY_PLATFORM;
2848*758e9fbaSOystein Eftevaag ESYS_TR nvIndex_handle = DUMMY_TR_HANDLE_NV_INDEX;
2849*758e9fbaSOystein Eftevaag TPM2B_DATA qualifyingData = DUMMY_2B_DATA(.buffer);
2850*758e9fbaSOystein Eftevaag TPMT_SIG_SCHEME inScheme = {.scheme = TPM2_ALG_NULL,.details = {} };
2851*758e9fbaSOystein Eftevaag UINT16 size = 0;
2852*758e9fbaSOystein Eftevaag UINT16 offset = 0;
2853*758e9fbaSOystein Eftevaag TPM2B_ATTEST *certifyInfo;
2854*758e9fbaSOystein Eftevaag TPMT_SIGNATURE *signature;
2855*758e9fbaSOystein Eftevaag r = Esys_NV_Certify(esys_context,
2856*758e9fbaSOystein Eftevaag signHandle_handle,
2857*758e9fbaSOystein Eftevaag authHandle_handle,
2858*758e9fbaSOystein Eftevaag nvIndex_handle,
2859*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2860*758e9fbaSOystein Eftevaag ESYS_TR_PASSWORD,
2861*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2862*758e9fbaSOystein Eftevaag &qualifyingData,
2863*758e9fbaSOystein Eftevaag &inScheme, size, offset, &certifyInfo, &signature);
2864*758e9fbaSOystein Eftevaag
2865*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2866*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2867*758e9fbaSOystein Eftevaag }
2868*758e9fbaSOystein Eftevaag
2869*758e9fbaSOystein Eftevaag static void
test_Vendor_TCG_Test(void ** state)2870*758e9fbaSOystein Eftevaag test_Vendor_TCG_Test(void **state)
2871*758e9fbaSOystein Eftevaag {
2872*758e9fbaSOystein Eftevaag TSS2_RC r;
2873*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti;
2874*758e9fbaSOystein Eftevaag ESYS_CONTEXT *esys_context = (ESYS_CONTEXT *) * state;
2875*758e9fbaSOystein Eftevaag Esys_GetTcti(esys_context, &tcti);
2876*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_YIELDER *tcti_yielder = tcti_yielder_cast(tcti);
2877*758e9fbaSOystein Eftevaag
2878*758e9fbaSOystein Eftevaag TPM2B_DATA inputData = DUMMY_2B_DATA(.buffer);
2879*758e9fbaSOystein Eftevaag TPM2B_DATA *outputData;
2880*758e9fbaSOystein Eftevaag r = Esys_Vendor_TCG_Test(esys_context,
2881*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2882*758e9fbaSOystein Eftevaag ESYS_TR_NONE,
2883*758e9fbaSOystein Eftevaag ESYS_TR_NONE, &inputData, &outputData);
2884*758e9fbaSOystein Eftevaag
2885*758e9fbaSOystein Eftevaag assert_int_equal(r, TPM2_RC_YIELDED);
2886*758e9fbaSOystein Eftevaag assert_int_equal(tcti_yielder->count, 5 /* _ESYS_MAX_SUBMISSIONS */ );
2887*758e9fbaSOystein Eftevaag }
2888*758e9fbaSOystein Eftevaag
2889*758e9fbaSOystein Eftevaag int
main(int argc,char * argv[])2890*758e9fbaSOystein Eftevaag main(int argc, char *argv[])
2891*758e9fbaSOystein Eftevaag {
2892*758e9fbaSOystein Eftevaag const struct CMUnitTest tests[] = {
2893*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Startup, setup, teardown),
2894*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Shutdown, setup, teardown),
2895*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_SelfTest, setup, teardown),
2896*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_IncrementalSelfTest, setup,
2897*758e9fbaSOystein Eftevaag teardown),
2898*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_GetTestResult, setup, teardown),
2899*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_StartAuthSession, setup, teardown),
2900*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyRestart, setup, teardown),
2901*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Create, setup, teardown),
2902*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Load, setup, teardown),
2903*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_LoadExternal, setup, teardown),
2904*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ReadPublic, setup, teardown),
2905*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ActivateCredential, setup,
2906*758e9fbaSOystein Eftevaag teardown),
2907*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_MakeCredential, setup, teardown),
2908*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Unseal, setup, teardown),
2909*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ObjectChangeAuth, setup, teardown),
2910*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Duplicate, setup, teardown),
2911*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Rewrap, setup, teardown),
2912*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Import, setup, teardown),
2913*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_RSA_Encrypt, setup, teardown),
2914*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_RSA_Decrypt, setup, teardown),
2915*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ECDH_KeyGen, setup, teardown),
2916*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ECDH_ZGen, setup, teardown),
2917*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ECC_Parameters, setup, teardown),
2918*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ZGen_2Phase, setup, teardown),
2919*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_EncryptDecrypt, setup, teardown),
2920*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_EncryptDecrypt2, setup, teardown),
2921*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Hash, setup, teardown),
2922*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_HMAC, setup, teardown),
2923*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_GetRandom, setup, teardown),
2924*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_StirRandom, setup, teardown),
2925*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_HMAC_Start, setup, teardown),
2926*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_HashSequenceStart, setup,
2927*758e9fbaSOystein Eftevaag teardown),
2928*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_SequenceUpdate, setup, teardown),
2929*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_SequenceComplete, setup, teardown),
2930*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_EventSequenceComplete, setup,
2931*758e9fbaSOystein Eftevaag teardown),
2932*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Certify, setup, teardown),
2933*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_CertifyCreation, setup, teardown),
2934*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Quote, setup, teardown),
2935*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_GetSessionAuditDigest, setup,
2936*758e9fbaSOystein Eftevaag teardown),
2937*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_GetCommandAuditDigest, setup,
2938*758e9fbaSOystein Eftevaag teardown),
2939*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_GetTime, setup, teardown),
2940*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Commit, setup, teardown),
2941*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_EC_Ephemeral, setup, teardown),
2942*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_VerifySignature, setup, teardown),
2943*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Sign, setup, teardown),
2944*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_SetCommandCodeAuditStatus, setup,
2945*758e9fbaSOystein Eftevaag teardown),
2946*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PCR_Extend, setup, teardown),
2947*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PCR_Event, setup, teardown),
2948*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PCR_Read, setup, teardown),
2949*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PCR_Allocate, setup, teardown),
2950*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PCR_SetAuthPolicy, setup,
2951*758e9fbaSOystein Eftevaag teardown),
2952*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PCR_SetAuthValue, setup, teardown),
2953*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PCR_Reset, setup, teardown),
2954*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicySigned, setup, teardown),
2955*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicySecret, setup, teardown),
2956*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyTicket, setup, teardown),
2957*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyOR, setup, teardown),
2958*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyPCR, setup, teardown),
2959*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyLocality, setup, teardown),
2960*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyNV, setup, teardown),
2961*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyCounterTimer, setup,
2962*758e9fbaSOystein Eftevaag teardown),
2963*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyCommandCode, setup,
2964*758e9fbaSOystein Eftevaag teardown),
2965*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyPhysicalPresence, setup,
2966*758e9fbaSOystein Eftevaag teardown),
2967*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyCpHash, setup, teardown),
2968*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyNameHash, setup, teardown),
2969*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyDuplicationSelect, setup,
2970*758e9fbaSOystein Eftevaag teardown),
2971*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyAuthorize, setup, teardown),
2972*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyAuthValue, setup, teardown),
2973*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyPassword, setup, teardown),
2974*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyGetDigest, setup, teardown),
2975*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyNvWritten, setup, teardown),
2976*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyTemplate, setup, teardown),
2977*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PolicyAuthorizeNV, setup,
2978*758e9fbaSOystein Eftevaag teardown),
2979*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_CreatePrimary, setup, teardown),
2980*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_HierarchyControl, setup, teardown),
2981*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_SetPrimaryPolicy, setup, teardown),
2982*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ChangePPS, setup, teardown),
2983*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ChangeEPS, setup, teardown),
2984*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Clear, setup, teardown),
2985*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ClearControl, setup, teardown),
2986*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_HierarchyChangeAuth, setup,
2987*758e9fbaSOystein Eftevaag teardown),
2988*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_DictionaryAttackLockReset, setup,
2989*758e9fbaSOystein Eftevaag teardown),
2990*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_DictionaryAttackParameters, setup,
2991*758e9fbaSOystein Eftevaag teardown),
2992*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_PP_Commands, setup, teardown),
2993*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_SetAlgorithmSet, setup, teardown),
2994*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_FieldUpgradeStart, setup,
2995*758e9fbaSOystein Eftevaag teardown),
2996*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_FieldUpgradeData, setup, teardown),
2997*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_FirmwareRead, setup, teardown),
2998*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ContextSave, setup, teardown),
2999*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ContextLoad, setup, teardown),
3000*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_FlushContext, setup, teardown),
3001*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_EvictControl, setup, teardown),
3002*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ReadClock, setup, teardown),
3003*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ClockSet, setup, teardown),
3004*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_ClockRateAdjust, setup, teardown),
3005*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_GetCapability, setup, teardown),
3006*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_TestParms, setup, teardown),
3007*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_DefineSpace, setup, teardown),
3008*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_UndefineSpace, setup, teardown),
3009*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_UndefineSpaceSpecial, setup,
3010*758e9fbaSOystein Eftevaag teardown),
3011*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_ReadPublic, setup, teardown),
3012*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_Write, setup, teardown),
3013*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_Increment, setup, teardown),
3014*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_Extend, setup, teardown),
3015*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_SetBits, setup, teardown),
3016*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_WriteLock, setup, teardown),
3017*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_GlobalWriteLock, setup,
3018*758e9fbaSOystein Eftevaag teardown),
3019*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_Read, setup, teardown),
3020*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_ReadLock, setup, teardown),
3021*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_ChangeAuth, setup, teardown),
3022*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_NV_Certify, setup, teardown),
3023*758e9fbaSOystein Eftevaag cmocka_unit_test_setup_teardown(test_Vendor_TCG_Test, setup, teardown),
3024*758e9fbaSOystein Eftevaag };
3025*758e9fbaSOystein Eftevaag return cmocka_run_group_tests(tests, NULL, NULL);
3026*758e9fbaSOystein Eftevaag }
3027