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