xref: /aosp_15_r20/external/ms-tpm-20-ref/TPMCmd/tpm/include/TpmAlgorithmDefines.h (revision 5c591343844d1f9da7da26467c4bf7efc8a7a413)
1*5c591343SA. Cody Schuffelen /* Microsoft Reference Implementation for TPM 2.0
2*5c591343SA. Cody Schuffelen  *
3*5c591343SA. Cody Schuffelen  *  The copyright in this software is being made available under the BSD License,
4*5c591343SA. Cody Schuffelen  *  included below. This software may be subject to other third party and
5*5c591343SA. Cody Schuffelen  *  contributor rights, including patent rights, and no such rights are granted
6*5c591343SA. Cody Schuffelen  *  under this license.
7*5c591343SA. Cody Schuffelen  *
8*5c591343SA. Cody Schuffelen  *  Copyright (c) Microsoft Corporation
9*5c591343SA. Cody Schuffelen  *
10*5c591343SA. Cody Schuffelen  *  All rights reserved.
11*5c591343SA. Cody Schuffelen  *
12*5c591343SA. Cody Schuffelen  *  BSD License
13*5c591343SA. Cody Schuffelen  *
14*5c591343SA. Cody Schuffelen  *  Redistribution and use in source and binary forms, with or without modification,
15*5c591343SA. Cody Schuffelen  *  are permitted provided that the following conditions are met:
16*5c591343SA. Cody Schuffelen  *
17*5c591343SA. Cody Schuffelen  *  Redistributions of source code must retain the above copyright notice, this list
18*5c591343SA. Cody Schuffelen  *  of conditions and the following disclaimer.
19*5c591343SA. Cody Schuffelen  *
20*5c591343SA. Cody Schuffelen  *  Redistributions in binary form must reproduce the above copyright notice, this
21*5c591343SA. Cody Schuffelen  *  list of conditions and the following disclaimer in the documentation and/or
22*5c591343SA. Cody Schuffelen  *  other materials provided with the distribution.
23*5c591343SA. Cody Schuffelen  *
24*5c591343SA. Cody Schuffelen  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
25*5c591343SA. Cody Schuffelen  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26*5c591343SA. Cody Schuffelen  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27*5c591343SA. Cody Schuffelen  *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
28*5c591343SA. Cody Schuffelen  *  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29*5c591343SA. Cody Schuffelen  *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30*5c591343SA. Cody Schuffelen  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
31*5c591343SA. Cody Schuffelen  *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32*5c591343SA. Cody Schuffelen  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33*5c591343SA. Cody Schuffelen  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34*5c591343SA. Cody Schuffelen  */
35*5c591343SA. Cody Schuffelen /*(Auto-generated)
36*5c591343SA. Cody Schuffelen  *  Created by TpmStructures; Version 4.4 Mar 26, 2019
37*5c591343SA. Cody Schuffelen  *  Date: Feb 28, 2020  Time: 03:04:46PM
38*5c591343SA. Cody Schuffelen  */
39*5c591343SA. Cody Schuffelen 
40*5c591343SA. Cody Schuffelen #ifndef _TPM_ALGORITHM_DEFINES_H_
41*5c591343SA. Cody Schuffelen #define _TPM_ALGORITHM_DEFINES_H_
42*5c591343SA. Cody Schuffelen 
43*5c591343SA. Cody Schuffelen // Table 2:3 - Definition of Base Types
44*5c591343SA. Cody Schuffelen // Base Types are in BaseTypes.h
45*5c591343SA. Cody Schuffelen 
46*5c591343SA. Cody Schuffelen #define ECC_CURVES                      \
47*5c591343SA. Cody Schuffelen             {TPM_ECC_BN_P256,   TPM_ECC_BN_P638,   TPM_ECC_NIST_P192,              \
48*5c591343SA. Cody Schuffelen              TPM_ECC_NIST_P224, TPM_ECC_NIST_P256, TPM_ECC_NIST_P384,              \
49*5c591343SA. Cody Schuffelen              TPM_ECC_NIST_P521, TPM_ECC_SM2_P256}
50*5c591343SA. Cody Schuffelen #define ECC_CURVE_COUNT                 \
51*5c591343SA. Cody Schuffelen             (ECC_BN_P256   + ECC_BN_P638   + ECC_NIST_P192 + ECC_NIST_P224 +       \
52*5c591343SA. Cody Schuffelen              ECC_NIST_P256 + ECC_NIST_P384 + ECC_NIST_P521 + ECC_SM2_P256)
53*5c591343SA. Cody Schuffelen #define MAX_ECC_KEY_BITS                \
54*5c591343SA. Cody Schuffelen             MAX(ECC_BN_P256 * 256,   MAX(ECC_BN_P638 * 638,                        \
55*5c591343SA. Cody Schuffelen             MAX(ECC_NIST_P192 * 192, MAX(ECC_NIST_P224 * 224,                      \
56*5c591343SA. Cody Schuffelen             MAX(ECC_NIST_P256 * 256, MAX(ECC_NIST_P384 * 384,                      \
57*5c591343SA. Cody Schuffelen             MAX(ECC_NIST_P521 * 521, MAX(ECC_SM2_P256 * 256,                       \
58*5c591343SA. Cody Schuffelen             0))))))))
59*5c591343SA. Cody Schuffelen #define MAX_ECC_KEY_BYTES               BITS_TO_BYTES(MAX_ECC_KEY_BITS)
60*5c591343SA. Cody Schuffelen 
61*5c591343SA. Cody Schuffelen // Table 0:6 - Defines for PLATFORM Values
62*5c591343SA. Cody Schuffelen #define PLATFORM_FAMILY         TPM_SPEC_FAMILY
63*5c591343SA. Cody Schuffelen #define PLATFORM_LEVEL          TPM_SPEC_LEVEL
64*5c591343SA. Cody Schuffelen #define PLATFORM_VERSION        TPM_SPEC_VERSION
65*5c591343SA. Cody Schuffelen #define PLATFORM_YEAR           TPM_SPEC_YEAR
66*5c591343SA. Cody Schuffelen #define PLATFORM_DAY_OF_YEAR    TPM_SPEC_DAY_OF_YEAR
67*5c591343SA. Cody Schuffelen 
68*5c591343SA. Cody Schuffelen // Table 1:3 - Defines for RSA Asymmetric Cipher Algorithm Constants
69*5c591343SA. Cody Schuffelen #define RSA_KEY_SIZES_BITS          \
70*5c591343SA. Cody Schuffelen             (1024 * RSA_1024),  (2048 * RSA_2048), (3072 * RSA_3072),              \
71*5c591343SA. Cody Schuffelen              (4096 * RSA_4096), (16384 * RSA_16384)
72*5c591343SA. Cody Schuffelen #if   RSA_16384
73*5c591343SA. Cody Schuffelen #   define RSA_MAX_KEY_SIZE_BITS    16384
74*5c591343SA. Cody Schuffelen #elif RSA_4096
75*5c591343SA. Cody Schuffelen #   define RSA_MAX_KEY_SIZE_BITS    4096
76*5c591343SA. Cody Schuffelen #elif RSA_3072
77*5c591343SA. Cody Schuffelen #   define RSA_MAX_KEY_SIZE_BITS    3072
78*5c591343SA. Cody Schuffelen #elif RSA_2048
79*5c591343SA. Cody Schuffelen #   define RSA_MAX_KEY_SIZE_BITS    2048
80*5c591343SA. Cody Schuffelen #elif RSA_1024
81*5c591343SA. Cody Schuffelen #   define RSA_MAX_KEY_SIZE_BITS    1024
82*5c591343SA. Cody Schuffelen #else
83*5c591343SA. Cody Schuffelen #   define RSA_MAX_KEY_SIZE_BITS    0
84*5c591343SA. Cody Schuffelen #endif
85*5c591343SA. Cody Schuffelen #define MAX_RSA_KEY_BITS            RSA_MAX_KEY_SIZE_BITS
86*5c591343SA. Cody Schuffelen #define MAX_RSA_KEY_BYTES           ((RSA_MAX_KEY_SIZE_BITS + 7) / 8)
87*5c591343SA. Cody Schuffelen 
88*5c591343SA. Cody Schuffelen // Table 1:13 - Defines for SHA1 Hash Values
89*5c591343SA. Cody Schuffelen #define SHA1_DIGEST_SIZE    20
90*5c591343SA. Cody Schuffelen #define SHA1_BLOCK_SIZE     64
91*5c591343SA. Cody Schuffelen 
92*5c591343SA. Cody Schuffelen // Table 1:14 - Defines for SHA256 Hash Values
93*5c591343SA. Cody Schuffelen #define SHA256_DIGEST_SIZE  32
94*5c591343SA. Cody Schuffelen #define SHA256_BLOCK_SIZE   64
95*5c591343SA. Cody Schuffelen 
96*5c591343SA. Cody Schuffelen // Table 1:15 - Defines for SHA384 Hash Values
97*5c591343SA. Cody Schuffelen #define SHA384_DIGEST_SIZE  48
98*5c591343SA. Cody Schuffelen #define SHA384_BLOCK_SIZE   128
99*5c591343SA. Cody Schuffelen 
100*5c591343SA. Cody Schuffelen // Table 1:16 - Defines for SHA512 Hash Values
101*5c591343SA. Cody Schuffelen #define SHA512_DIGEST_SIZE  64
102*5c591343SA. Cody Schuffelen #define SHA512_BLOCK_SIZE   128
103*5c591343SA. Cody Schuffelen 
104*5c591343SA. Cody Schuffelen // Table 1:17 - Defines for SM3_256 Hash Values
105*5c591343SA. Cody Schuffelen #define SM3_256_DIGEST_SIZE     32
106*5c591343SA. Cody Schuffelen #define SM3_256_BLOCK_SIZE      64
107*5c591343SA. Cody Schuffelen 
108*5c591343SA. Cody Schuffelen // Table 1:18 - Defines for SHA3_256 Hash Values
109*5c591343SA. Cody Schuffelen #define SHA3_256_DIGEST_SIZE    32
110*5c591343SA. Cody Schuffelen #define SHA3_256_BLOCK_SIZE     136
111*5c591343SA. Cody Schuffelen 
112*5c591343SA. Cody Schuffelen // Table 1:19 - Defines for SHA3_384 Hash Values
113*5c591343SA. Cody Schuffelen #define SHA3_384_DIGEST_SIZE    48
114*5c591343SA. Cody Schuffelen #define SHA3_384_BLOCK_SIZE     104
115*5c591343SA. Cody Schuffelen 
116*5c591343SA. Cody Schuffelen // Table 1:20 - Defines for SHA3_512 Hash Values
117*5c591343SA. Cody Schuffelen #define SHA3_512_DIGEST_SIZE    64
118*5c591343SA. Cody Schuffelen #define SHA3_512_BLOCK_SIZE     72
119*5c591343SA. Cody Schuffelen 
120*5c591343SA. Cody Schuffelen // Table 1:21 - Defines for AES Symmetric Cipher Algorithm Constants
121*5c591343SA. Cody Schuffelen #define AES_KEY_SIZES_BITS          \
122*5c591343SA. Cody Schuffelen             (128 * AES_128), (192 * AES_192), (256 * AES_256)
123*5c591343SA. Cody Schuffelen #if   AES_256
124*5c591343SA. Cody Schuffelen #   define AES_MAX_KEY_SIZE_BITS    256
125*5c591343SA. Cody Schuffelen #elif AES_192
126*5c591343SA. Cody Schuffelen #   define AES_MAX_KEY_SIZE_BITS    192
127*5c591343SA. Cody Schuffelen #elif AES_128
128*5c591343SA. Cody Schuffelen #   define AES_MAX_KEY_SIZE_BITS    128
129*5c591343SA. Cody Schuffelen #else
130*5c591343SA. Cody Schuffelen #   define AES_MAX_KEY_SIZE_BITS    0
131*5c591343SA. Cody Schuffelen #endif
132*5c591343SA. Cody Schuffelen #define MAX_AES_KEY_BITS            AES_MAX_KEY_SIZE_BITS
133*5c591343SA. Cody Schuffelen #define MAX_AES_KEY_BYTES           ((AES_MAX_KEY_SIZE_BITS + 7) / 8)
134*5c591343SA. Cody Schuffelen #define AES_128_BLOCK_SIZE_BYTES    (AES_128 * 16)
135*5c591343SA. Cody Schuffelen #define AES_192_BLOCK_SIZE_BYTES    (AES_192 * 16)
136*5c591343SA. Cody Schuffelen #define AES_256_BLOCK_SIZE_BYTES    (AES_256 * 16)
137*5c591343SA. Cody Schuffelen #define AES_BLOCK_SIZES             \
138*5c591343SA. Cody Schuffelen             AES_128_BLOCK_SIZE_BYTES, AES_192_BLOCK_SIZE_BYTES,                    \
139*5c591343SA. Cody Schuffelen             AES_256_BLOCK_SIZE_BYTES
140*5c591343SA. Cody Schuffelen #if   ALG_AES
141*5c591343SA. Cody Schuffelen #   define AES_MAX_BLOCK_SIZE       16
142*5c591343SA. Cody Schuffelen #else
143*5c591343SA. Cody Schuffelen #   define AES_MAX_BLOCK_SIZE       0
144*5c591343SA. Cody Schuffelen #endif
145*5c591343SA. Cody Schuffelen #define MAX_AES_BLOCK_SIZE_BYTES    AES_MAX_BLOCK_SIZE
146*5c591343SA. Cody Schuffelen 
147*5c591343SA. Cody Schuffelen // Table 1:22 - Defines for SM4 Symmetric Cipher Algorithm Constants
148*5c591343SA. Cody Schuffelen #define SM4_KEY_SIZES_BITS          (128 * SM4_128)
149*5c591343SA. Cody Schuffelen #if   SM4_128
150*5c591343SA. Cody Schuffelen #   define SM4_MAX_KEY_SIZE_BITS    128
151*5c591343SA. Cody Schuffelen #else
152*5c591343SA. Cody Schuffelen #   define SM4_MAX_KEY_SIZE_BITS    0
153*5c591343SA. Cody Schuffelen #endif
154*5c591343SA. Cody Schuffelen #define MAX_SM4_KEY_BITS            SM4_MAX_KEY_SIZE_BITS
155*5c591343SA. Cody Schuffelen #define MAX_SM4_KEY_BYTES           ((SM4_MAX_KEY_SIZE_BITS + 7) / 8)
156*5c591343SA. Cody Schuffelen #define SM4_128_BLOCK_SIZE_BYTES    (SM4_128 * 16)
157*5c591343SA. Cody Schuffelen #define SM4_BLOCK_SIZES             SM4_128_BLOCK_SIZE_BYTES
158*5c591343SA. Cody Schuffelen #if   ALG_SM4
159*5c591343SA. Cody Schuffelen #   define SM4_MAX_BLOCK_SIZE       16
160*5c591343SA. Cody Schuffelen #else
161*5c591343SA. Cody Schuffelen #   define SM4_MAX_BLOCK_SIZE       0
162*5c591343SA. Cody Schuffelen #endif
163*5c591343SA. Cody Schuffelen #define MAX_SM4_BLOCK_SIZE_BYTES    SM4_MAX_BLOCK_SIZE
164*5c591343SA. Cody Schuffelen 
165*5c591343SA. Cody Schuffelen // Table 1:23 - Defines for CAMELLIA Symmetric Cipher Algorithm Constants
166*5c591343SA. Cody Schuffelen #define CAMELLIA_KEY_SIZES_BITS         \
167*5c591343SA. Cody Schuffelen             (128 * CAMELLIA_128), (192 * CAMELLIA_192), (256 * CAMELLIA_256)
168*5c591343SA. Cody Schuffelen #if   CAMELLIA_256
169*5c591343SA. Cody Schuffelen #   define CAMELLIA_MAX_KEY_SIZE_BITS   256
170*5c591343SA. Cody Schuffelen #elif CAMELLIA_192
171*5c591343SA. Cody Schuffelen #   define CAMELLIA_MAX_KEY_SIZE_BITS   192
172*5c591343SA. Cody Schuffelen #elif CAMELLIA_128
173*5c591343SA. Cody Schuffelen #   define CAMELLIA_MAX_KEY_SIZE_BITS   128
174*5c591343SA. Cody Schuffelen #else
175*5c591343SA. Cody Schuffelen #   define CAMELLIA_MAX_KEY_SIZE_BITS   0
176*5c591343SA. Cody Schuffelen #endif
177*5c591343SA. Cody Schuffelen #define MAX_CAMELLIA_KEY_BITS           CAMELLIA_MAX_KEY_SIZE_BITS
178*5c591343SA. Cody Schuffelen #define MAX_CAMELLIA_KEY_BYTES          ((CAMELLIA_MAX_KEY_SIZE_BITS + 7) / 8)
179*5c591343SA. Cody Schuffelen #define CAMELLIA_128_BLOCK_SIZE_BYTES   (CAMELLIA_128 * 16)
180*5c591343SA. Cody Schuffelen #define CAMELLIA_192_BLOCK_SIZE_BYTES   (CAMELLIA_192 * 16)
181*5c591343SA. Cody Schuffelen #define CAMELLIA_256_BLOCK_SIZE_BYTES   (CAMELLIA_256 * 16)
182*5c591343SA. Cody Schuffelen #define CAMELLIA_BLOCK_SIZES            \
183*5c591343SA. Cody Schuffelen             CAMELLIA_128_BLOCK_SIZE_BYTES, CAMELLIA_192_BLOCK_SIZE_BYTES,          \
184*5c591343SA. Cody Schuffelen             CAMELLIA_256_BLOCK_SIZE_BYTES
185*5c591343SA. Cody Schuffelen #if   ALG_CAMELLIA
186*5c591343SA. Cody Schuffelen #   define CAMELLIA_MAX_BLOCK_SIZE      16
187*5c591343SA. Cody Schuffelen #else
188*5c591343SA. Cody Schuffelen #   define CAMELLIA_MAX_BLOCK_SIZE      0
189*5c591343SA. Cody Schuffelen #endif
190*5c591343SA. Cody Schuffelen #define MAX_CAMELLIA_BLOCK_SIZE_BYTES   CAMELLIA_MAX_BLOCK_SIZE
191*5c591343SA. Cody Schuffelen 
192*5c591343SA. Cody Schuffelen // Table 1:24 - Defines for TDES Symmetric Cipher Algorithm Constants
193*5c591343SA. Cody Schuffelen #define TDES_KEY_SIZES_BITS         (128 * TDES_128), (192 * TDES_192)
194*5c591343SA. Cody Schuffelen #if   TDES_192
195*5c591343SA. Cody Schuffelen #   define TDES_MAX_KEY_SIZE_BITS   192
196*5c591343SA. Cody Schuffelen #elif TDES_128
197*5c591343SA. Cody Schuffelen #   define TDES_MAX_KEY_SIZE_BITS   128
198*5c591343SA. Cody Schuffelen #else
199*5c591343SA. Cody Schuffelen #   define TDES_MAX_KEY_SIZE_BITS   0
200*5c591343SA. Cody Schuffelen #endif
201*5c591343SA. Cody Schuffelen #define MAX_TDES_KEY_BITS           TDES_MAX_KEY_SIZE_BITS
202*5c591343SA. Cody Schuffelen #define MAX_TDES_KEY_BYTES          ((TDES_MAX_KEY_SIZE_BITS + 7) / 8)
203*5c591343SA. Cody Schuffelen #define TDES_128_BLOCK_SIZE_BYTES   (TDES_128 * 8)
204*5c591343SA. Cody Schuffelen #define TDES_192_BLOCK_SIZE_BYTES   (TDES_192 * 8)
205*5c591343SA. Cody Schuffelen #define TDES_BLOCK_SIZES            \
206*5c591343SA. Cody Schuffelen             TDES_128_BLOCK_SIZE_BYTES, TDES_192_BLOCK_SIZE_BYTES
207*5c591343SA. Cody Schuffelen #if   ALG_TDES
208*5c591343SA. Cody Schuffelen #   define TDES_MAX_BLOCK_SIZE      8
209*5c591343SA. Cody Schuffelen #else
210*5c591343SA. Cody Schuffelen #   define TDES_MAX_BLOCK_SIZE      0
211*5c591343SA. Cody Schuffelen #endif
212*5c591343SA. Cody Schuffelen #define MAX_TDES_BLOCK_SIZE_BYTES   TDES_MAX_BLOCK_SIZE
213*5c591343SA. Cody Schuffelen 
214*5c591343SA. Cody Schuffelen // Additional values for benefit of code
215*5c591343SA. Cody Schuffelen #define TPM_CC_FIRST                        0x0000011F
216*5c591343SA. Cody Schuffelen #define TPM_CC_LAST                         0x0000019A
217*5c591343SA. Cody Schuffelen 
218*5c591343SA. Cody Schuffelen 
219*5c591343SA. Cody Schuffelen #if COMPRESSED_LISTS
220*5c591343SA. Cody Schuffelen #define ADD_FILL            0
221*5c591343SA. Cody Schuffelen #else
222*5c591343SA. Cody Schuffelen #define ADD_FILL            1
223*5c591343SA. Cody Schuffelen #endif
224*5c591343SA. Cody Schuffelen 
225*5c591343SA. Cody Schuffelen // Size the array of library commands based on whether or not
226*5c591343SA. Cody Schuffelen // the array is packed (only defined commands) or dense
227*5c591343SA. Cody Schuffelen // (having entries for unimplemented commands)
228*5c591343SA. Cody Schuffelen #define LIBRARY_COMMAND_ARRAY_SIZE       (0      \
229*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_UndefineSpaceSpecial)              /* 0x0000011F */       \
230*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_EvictControl)                         /* 0x00000120 */       \
231*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_HierarchyControl)                     /* 0x00000121 */       \
232*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_UndefineSpace)                     /* 0x00000122 */       \
233*5c591343SA. Cody Schuffelen     +  ADD_FILL                                             /* 0x00000123 */       \
234*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ChangeEPS)                            /* 0x00000124 */       \
235*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ChangePPS)                            /* 0x00000125 */       \
236*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Clear)                                /* 0x00000126 */       \
237*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ClearControl)                         /* 0x00000127 */       \
238*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ClockSet)                             /* 0x00000128 */       \
239*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_HierarchyChangeAuth)                  /* 0x00000129 */       \
240*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_DefineSpace)                       /* 0x0000012A */       \
241*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PCR_Allocate)                         /* 0x0000012B */       \
242*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PCR_SetAuthPolicy)                    /* 0x0000012C */       \
243*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PP_Commands)                          /* 0x0000012D */       \
244*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_SetPrimaryPolicy)                     /* 0x0000012E */       \
245*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_FieldUpgradeStart)                    /* 0x0000012F */       \
246*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ClockRateAdjust)                      /* 0x00000130 */       \
247*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_CreatePrimary)                        /* 0x00000131 */       \
248*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_GlobalWriteLock)                   /* 0x00000132 */       \
249*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_GetCommandAuditDigest)                /* 0x00000133 */       \
250*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_Increment)                         /* 0x00000134 */       \
251*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_SetBits)                           /* 0x00000135 */       \
252*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_Extend)                            /* 0x00000136 */       \
253*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_Write)                             /* 0x00000137 */       \
254*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_WriteLock)                         /* 0x00000138 */       \
255*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_DictionaryAttackLockReset)            /* 0x00000139 */       \
256*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_DictionaryAttackParameters)           /* 0x0000013A */       \
257*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_ChangeAuth)                        /* 0x0000013B */       \
258*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PCR_Event)                            /* 0x0000013C */       \
259*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PCR_Reset)                            /* 0x0000013D */       \
260*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_SequenceComplete)                     /* 0x0000013E */       \
261*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_SetAlgorithmSet)                      /* 0x0000013F */       \
262*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_SetCommandCodeAuditStatus)            /* 0x00000140 */       \
263*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_FieldUpgradeData)                     /* 0x00000141 */       \
264*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_IncrementalSelfTest)                  /* 0x00000142 */       \
265*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_SelfTest)                             /* 0x00000143 */       \
266*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Startup)                              /* 0x00000144 */       \
267*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Shutdown)                             /* 0x00000145 */       \
268*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_StirRandom)                           /* 0x00000146 */       \
269*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ActivateCredential)                   /* 0x00000147 */       \
270*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Certify)                              /* 0x00000148 */       \
271*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyNV)                             /* 0x00000149 */       \
272*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_CertifyCreation)                      /* 0x0000014A */       \
273*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Duplicate)                            /* 0x0000014B */       \
274*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_GetTime)                              /* 0x0000014C */       \
275*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_GetSessionAuditDigest)                /* 0x0000014D */       \
276*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_Read)                              /* 0x0000014E */       \
277*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_ReadLock)                          /* 0x0000014F */       \
278*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ObjectChangeAuth)                     /* 0x00000150 */       \
279*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicySecret)                         /* 0x00000151 */       \
280*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Rewrap)                               /* 0x00000152 */       \
281*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Create)                               /* 0x00000153 */       \
282*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ECDH_ZGen)                            /* 0x00000154 */       \
283*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_HMAC || CC_MAC)                       /* 0x00000155 */       \
284*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Import)                               /* 0x00000156 */       \
285*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Load)                                 /* 0x00000157 */       \
286*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Quote)                                /* 0x00000158 */       \
287*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_RSA_Decrypt)                          /* 0x00000159 */       \
288*5c591343SA. Cody Schuffelen     +  ADD_FILL                                             /* 0x0000015A */       \
289*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_HMAC_Start || CC_MAC_Start)           /* 0x0000015B */       \
290*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_SequenceUpdate)                       /* 0x0000015C */       \
291*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Sign)                                 /* 0x0000015D */       \
292*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Unseal)                               /* 0x0000015E */       \
293*5c591343SA. Cody Schuffelen     +  ADD_FILL                                             /* 0x0000015F */       \
294*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicySigned)                         /* 0x00000160 */       \
295*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ContextLoad)                          /* 0x00000161 */       \
296*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ContextSave)                          /* 0x00000162 */       \
297*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ECDH_KeyGen)                          /* 0x00000163 */       \
298*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_EncryptDecrypt)                       /* 0x00000164 */       \
299*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_FlushContext)                         /* 0x00000165 */       \
300*5c591343SA. Cody Schuffelen     +  ADD_FILL                                             /* 0x00000166 */       \
301*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_LoadExternal)                         /* 0x00000167 */       \
302*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_MakeCredential)                       /* 0x00000168 */       \
303*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_ReadPublic)                        /* 0x00000169 */       \
304*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyAuthorize)                      /* 0x0000016A */       \
305*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyAuthValue)                      /* 0x0000016B */       \
306*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyCommandCode)                    /* 0x0000016C */       \
307*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyCounterTimer)                   /* 0x0000016D */       \
308*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyCpHash)                         /* 0x0000016E */       \
309*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyLocality)                       /* 0x0000016F */       \
310*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyNameHash)                       /* 0x00000170 */       \
311*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyOR)                             /* 0x00000171 */       \
312*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyTicket)                         /* 0x00000172 */       \
313*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ReadPublic)                           /* 0x00000173 */       \
314*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_RSA_Encrypt)                          /* 0x00000174 */       \
315*5c591343SA. Cody Schuffelen     +  ADD_FILL                                             /* 0x00000175 */       \
316*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_StartAuthSession)                     /* 0x00000176 */       \
317*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_VerifySignature)                      /* 0x00000177 */       \
318*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ECC_Parameters)                       /* 0x00000178 */       \
319*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_FirmwareRead)                         /* 0x00000179 */       \
320*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_GetCapability)                        /* 0x0000017A */       \
321*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_GetRandom)                            /* 0x0000017B */       \
322*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_GetTestResult)                        /* 0x0000017C */       \
323*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Hash)                                 /* 0x0000017D */       \
324*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PCR_Read)                             /* 0x0000017E */       \
325*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyPCR)                            /* 0x0000017F */       \
326*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyRestart)                        /* 0x00000180 */       \
327*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ReadClock)                            /* 0x00000181 */       \
328*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PCR_Extend)                           /* 0x00000182 */       \
329*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PCR_SetAuthValue)                     /* 0x00000183 */       \
330*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_NV_Certify)                           /* 0x00000184 */       \
331*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_EventSequenceComplete)                /* 0x00000185 */       \
332*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_HashSequenceStart)                    /* 0x00000186 */       \
333*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyPhysicalPresence)               /* 0x00000187 */       \
334*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyDuplicationSelect)              /* 0x00000188 */       \
335*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyGetDigest)                      /* 0x00000189 */       \
336*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_TestParms)                            /* 0x0000018A */       \
337*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Commit)                               /* 0x0000018B */       \
338*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyPassword)                       /* 0x0000018C */       \
339*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ZGen_2Phase)                          /* 0x0000018D */       \
340*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_EC_Ephemeral)                         /* 0x0000018E */       \
341*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyNvWritten)                      /* 0x0000018F */       \
342*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyTemplate)                       /* 0x00000190 */       \
343*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_CreateLoaded)                         /* 0x00000191 */       \
344*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_PolicyAuthorizeNV)                    /* 0x00000192 */       \
345*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_EncryptDecrypt2)                      /* 0x00000193 */       \
346*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_AC_GetCapability)                     /* 0x00000194 */       \
347*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_AC_Send)                              /* 0x00000195 */       \
348*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_Policy_AC_SendSelect)                 /* 0x00000196 */       \
349*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_CertifyX509)                          /* 0x00000197 */       \
350*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ACT_SetTimeout)                       /* 0x00000198 */       \
351*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ECC_Encrypt)                          /* 0x00000199 */       \
352*5c591343SA. Cody Schuffelen     + (ADD_FILL || CC_ECC_Decrypt)                          /* 0x0000019A */       \
353*5c591343SA. Cody Schuffelen     )
354*5c591343SA. Cody Schuffelen 
355*5c591343SA. Cody Schuffelen #define VENDOR_COMMAND_ARRAY_SIZE   (0 + CC_Vendor_TCG_Test)
356*5c591343SA. Cody Schuffelen 
357*5c591343SA. Cody Schuffelen #define COMMAND_COUNT       (LIBRARY_COMMAND_ARRAY_SIZE + VENDOR_COMMAND_ARRAY_SIZE)
358*5c591343SA. Cody Schuffelen 
359*5c591343SA. Cody Schuffelen #define HASH_COUNT          \
360*5c591343SA. Cody Schuffelen             (ALG_SHA1     + ALG_SHA256   + ALG_SHA384   + ALG_SHA3_256 +           \
361*5c591343SA. Cody Schuffelen              ALG_SHA3_384 + ALG_SHA3_512 + ALG_SHA512   + ALG_SM3_256)
362*5c591343SA. Cody Schuffelen 
363*5c591343SA. Cody Schuffelen #define MAX_HASH_BLOCK_SIZE \
364*5c591343SA. Cody Schuffelen             (MAX(ALG_SHA1     * SHA1_BLOCK_SIZE,                                   \
365*5c591343SA. Cody Schuffelen              MAX(ALG_SHA256   * SHA256_BLOCK_SIZE,                                 \
366*5c591343SA. Cody Schuffelen              MAX(ALG_SHA384   * SHA384_BLOCK_SIZE,                                 \
367*5c591343SA. Cody Schuffelen              MAX(ALG_SHA3_256 * SHA3_256_BLOCK_SIZE,                               \
368*5c591343SA. Cody Schuffelen              MAX(ALG_SHA3_384 * SHA3_384_BLOCK_SIZE,                               \
369*5c591343SA. Cody Schuffelen              MAX(ALG_SHA3_512 * SHA3_512_BLOCK_SIZE,                               \
370*5c591343SA. Cody Schuffelen              MAX(ALG_SHA512   * SHA512_BLOCK_SIZE,                                 \
371*5c591343SA. Cody Schuffelen              MAX(ALG_SM3_256  * SM3_256_BLOCK_SIZE,                                \
372*5c591343SA. Cody Schuffelen              0)))))))))
373*5c591343SA. Cody Schuffelen 
374*5c591343SA. Cody Schuffelen #define MAX_DIGEST_SIZE     \
375*5c591343SA. Cody Schuffelen             (MAX(ALG_SHA1     * SHA1_DIGEST_SIZE,                                  \
376*5c591343SA. Cody Schuffelen              MAX(ALG_SHA256   * SHA256_DIGEST_SIZE,                                \
377*5c591343SA. Cody Schuffelen              MAX(ALG_SHA384   * SHA384_DIGEST_SIZE,                                \
378*5c591343SA. Cody Schuffelen              MAX(ALG_SHA3_256 * SHA3_256_DIGEST_SIZE,                              \
379*5c591343SA. Cody Schuffelen              MAX(ALG_SHA3_384 * SHA3_384_DIGEST_SIZE,                              \
380*5c591343SA. Cody Schuffelen              MAX(ALG_SHA3_512 * SHA3_512_DIGEST_SIZE,                              \
381*5c591343SA. Cody Schuffelen              MAX(ALG_SHA512   * SHA512_DIGEST_SIZE,                                \
382*5c591343SA. Cody Schuffelen              MAX(ALG_SM3_256  * SM3_256_DIGEST_SIZE,                               \
383*5c591343SA. Cody Schuffelen              0)))))))))
384*5c591343SA. Cody Schuffelen 
385*5c591343SA. Cody Schuffelen #if MAX_DIGEST_SIZE == 0 || MAX_HASH_BLOCK_SIZE == 0
386*5c591343SA. Cody Schuffelen #error "Hash data not valid"
387*5c591343SA. Cody Schuffelen #endif
388*5c591343SA. Cody Schuffelen 
389*5c591343SA. Cody Schuffelen // Define the 2B structure that would hold any hash block
390*5c591343SA. Cody Schuffelen TPM2B_TYPE(MAX_HASH_BLOCK, MAX_HASH_BLOCK_SIZE);
391*5c591343SA. Cody Schuffelen 
392*5c591343SA. Cody Schuffelen // Following typedef is for some old code
393*5c591343SA. Cody Schuffelen typedef TPM2B_MAX_HASH_BLOCK    TPM2B_HASH_BLOCK;
394*5c591343SA. Cody Schuffelen 
395*5c591343SA. Cody Schuffelen /* Additional symmetric constants */
396*5c591343SA. Cody Schuffelen #define MAX_SYM_KEY_BITS        \
397*5c591343SA. Cody Schuffelen             (MAX(AES_MAX_KEY_SIZE_BITS,      MAX(CAMELLIA_MAX_KEY_SIZE_BITS,       \
398*5c591343SA. Cody Schuffelen              MAX(SM4_MAX_KEY_SIZE_BITS,      MAX(TDES_MAX_KEY_SIZE_BITS,           \
399*5c591343SA. Cody Schuffelen              0)))))
400*5c591343SA. Cody Schuffelen 
401*5c591343SA. Cody Schuffelen #define MAX_SYM_KEY_BYTES       ((MAX_SYM_KEY_BITS + 7) / 8)
402*5c591343SA. Cody Schuffelen 
403*5c591343SA. Cody Schuffelen #define MAX_SYM_BLOCK_SIZE      \
404*5c591343SA. Cody Schuffelen             (MAX(AES_MAX_BLOCK_SIZE,      MAX(CAMELLIA_MAX_BLOCK_SIZE,             \
405*5c591343SA. Cody Schuffelen              MAX(SM4_MAX_BLOCK_SIZE,      MAX(TDES_MAX_BLOCK_SIZE,                 \
406*5c591343SA. Cody Schuffelen              0)))))
407*5c591343SA. Cody Schuffelen 
408*5c591343SA. Cody Schuffelen #if MAX_SYM_KEY_BITS == 0 || MAX_SYM_BLOCK_SIZE == 0
409*5c591343SA. Cody Schuffelen #   error Bad size for MAX_SYM_KEY_BITS or MAX_SYM_BLOCK
410*5c591343SA. Cody Schuffelen #endif
411*5c591343SA. Cody Schuffelen 
412*5c591343SA. Cody Schuffelen 
413*5c591343SA. Cody Schuffelen #endif // _TPM_ALGORITHM_DEFINES_H_
414