1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*******************************************************************************
3  * Copyright 2020, Intel
4  * Copyright 2020, Fraunhofer SIT sponsored by Infineon Technologies AG All
5  * rights reserved.
6  ******************************************************************************/
7 #ifndef ESYS_DUMMY_DEFS_H
8 #define ESYS_DUMMY_DEFS_H
9 
10 #ifdef HAVE_CONFIG_H
11 #include <config.h>
12 #endif
13 
14 #include "tss2_esys.h"
15 #include "tss2-esys/esys_iutil.h"
16 
17 /*
18  * Esys handles for dummy session and key objects, and initialization values for
19  * other objects, which can be used in ESAPI test calls
20  */
21 
22 #define DUMMY_TR_HANDLE_POLICY_SESSION  ESYS_TR_MIN_OBJECT
23 #define DUMMY_TR_HANDLE_KEY ESYS_TR_MIN_OBJECT+1
24 #define DUMMY_TR_HANDLE_NV_INDEX ESYS_TR_MIN_OBJECT+2
25 #define DUMMY_TR_HANDLE_HIERARCHY_OWNER ESYS_TR_MIN_OBJECT+3
26 #define DUMMY_TR_HANDLE_HIERARCHY_PLATFORM ESYS_TR_MIN_OBJECT+4
27 #define DUMMY_TR_HANDLE_PRIVACY_ADMIN ESYS_TR_MIN_OBJECT+5
28 #define DUMMY_TR_HANDLE_HMAC_SESSION  ESYS_TR_MIN_OBJECT+6
29 #define DUMMY_TR_HANDLE_LOCKOUT ESYS_TR_MIN_OBJECT+7
30 #define DUMMY_IN_PUBLIC_DATA { \
31         .size = 0, \
32         .publicArea = { \
33             .type = TPM2_ALG_ECC, \
34             .nameAlg = TPM2_ALG_SHA256, \
35             .objectAttributes = (TPMA_OBJECT_USERWITHAUTH | \
36                                  TPMA_OBJECT_RESTRICTED | \
37                                  TPMA_OBJECT_SIGN_ENCRYPT | \
38                                  TPMA_OBJECT_FIXEDTPM | \
39                                  TPMA_OBJECT_FIXEDPARENT | \
40                                  TPMA_OBJECT_SENSITIVEDATAORIGIN), \
41             .authPolicy = { \
42                  .size = 0, \
43              }, \
44             .parameters.eccDetail = { \
45                  .symmetric = { \
46                      .algorithm = \
47                      TPM2_ALG_AES, \
48                      .keyBits.aes = \
49                      128, \
50                      .mode.aes = \
51                      TPM2_ALG_ECB, \
52                  }, \
53                  .scheme = { \
54                       .scheme = \
55                       TPM2_ALG_ECDSA, \
56                       .details = { \
57                           .ecdsa = \
58                           {. \
59                            hashAlg \
60                            = \
61                            TPM2_ALG_SHA256}}, \
62                   }, \
63                  .curveID = TPM2_ECC_NIST_P256, \
64                  .kdf = { \
65                       .scheme = TPM2_ALG_KDF1_SP800_56A, \
66                       .details = {}} \
67              }, \
68             .unique.ecc = { \
69                  .x = {.size = 0,.buffer = {}}, \
70                  .y = {.size = 0,.buffer = {}}, \
71              }, \
72         }, \
73     }
74 
75 #define DUMMY_TPMT_PUBLIC_PARAMS { \
76         .type = TPM2_ALG_ECC, \
77             .parameters.eccDetail = { \
78             .symmetric = { \
79                  .algorithm = \
80                  TPM2_ALG_AES, \
81                  .keyBits.aes = \
82                  128, \
83                  .mode.aes = \
84                  TPM2_ALG_ECB, \
85              }, \
86             .scheme = { \
87                  .scheme = \
88                  TPM2_ALG_ECDSA, \
89                  .details = { \
90                      .ecdsa = \
91                      {. \
92                       hashAlg \
93                       = \
94                       TPM2_ALG_SHA256}}, \
95              }, \
96             .curveID = TPM2_ECC_NIST_P256, \
97             .kdf = { \
98                  .scheme = TPM2_ALG_KDF1_SP800_56A, \
99                  .details = {}} \
100         } \
101     }
102 
103 #define DUMMY_2B_DATA(NAME)  { \
104         .size = 20, \
105         NAME = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \
106                    11, 12, 13, 14, 15, 16, 17, 18, 19, 20} \
107     }
108 
109 #define DUMMY_2B_DATA16(NAME)  { \
110         .size = 16, \
111         NAME = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \
112                    11, 12, 13, 14, 15, 16 } \
113     }
114 
115 #define DUMMY_2B_DATA0 { \
116         .size = 0, \
117         .buffer = {}, \
118     }
119 
120 #define DUMMY_SYMMETRIC {.algorithm = TPM2_ALG_AES, \
121         .keyBits = {.aes = 128}, \
122         .mode = {.aes = TPM2_ALG_CFB} \
123     }
124 
125 #define DUMMY_TPMT_TK_AUTH { .tag = TPM2_ST_AUTH_SIGNED , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
126 
127 #define DUMMY_TPMT_TK_CREATION { .tag = TPM2_ST_CREATION , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
128 
129 #define DUMMY_TPMT_TK_VERIFIED { .tag = TPM2_ST_VERIFIED , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
130 
131 #define DUMMY_TPMT_TK_HASHCHECK { .tag = TPM2_ST_HASHCHECK , .hierarchy = TPM2_RH_OWNER, .digest = {0} }
132 
133 #define DUMMY_RSA_DECRYPT { .scheme = TPM2_ALG_RSAPSS }
134 
135 #define DUMMY_TPMT_SIGNATURE { \
136         .sigAlg = TPM2_ALG_RSAPSS, \
137         .signature = { \
138             .rsapss = { \
139                  .hash = TPM2_ALG_SHA1, .sig= {0} \
140              } \
141         } \
142     };
143 #endif
144