1use crate::tpm_enum;
6
7tpm_enum! {
8 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash, Default)]
9 pub enum TpmAlgId(u16) {
10 (Error, 0x0000, "TPM_ALG_ERROR"),
11 (Rsa, 0x0001, "TPM_ALG_RSA"),
12 (Sha1, 0x0004, "TPM_ALG_SHA1"),
13 (Hmac, 0x0005, "TPM_ALG_HMAC"),
14 (Aes, 0x0006, "TPM_ALG_AES"),
15 (Mgf1, 0x0007, "TPM_ALG_MGF1"),
16 (KeyedHash, 0x0008, "TPM_ALG_KEYEDHASH"),
17 (Xor, 0x000A, "TPM_ALG_XOR"),
18 (Sha256, 0x000B, "TPM_ALG_SHA256"),
19 (Sha384, 0x000C, "TPM_ALG_SHA384"),
20 (Sha512, 0x000D, "TPM_ALG_SHA512"),
21 #[default]
22 (Null, 0x0010, "TPM_ALG_NULL"),
23 (Sm3_256, 0x0012, "TPM_ALG_SM3_256"),
24 (Sm4, 0x0013, "TPM_ALG_SM4"),
25 (Rsassa, 0x0014, "TPM_ALG_RSASSA"),
26 (Rsaes, 0x0015, "TPM_ALG_RSAES"),
27 (Rsapss, 0x0016, "TPM_ALG_RSAPSS"),
28 (Oaep, 0x0017, "TPM_ALG_OAEP"),
29 (Ecdsa, 0x0018, "TPM_ALG_ECDSA"),
30 (Ecdh, 0x0019, "TPM_ALG_ECDH"),
31 (Ecdaa, 0x001A, "TPM_ALG_ECDAA"),
32 (Sm2, 0x001B, "TPM_ALG_SM2"),
33 (Ecschnorr, 0x001C, "TPM_ALG_ECSCHNORR"),
34 (Ecmqv, 0x001D, "TPM_ALG_ECMQV"),
35 (Kdf1Sp800_56A, 0x0020, "TPM_ALG_KDF1_SP800_56A"),
36 (Kdf2, 0x0021, "TPM_ALG_KDF2"),
37 (Kdf1Sp800_108, 0x0022, "TPM_ALG_KDF1_SP800_108"),
38 (Ecc, 0x0023, "TPM_ALG_ECC"),
39 (SymCipher, 0x0025, "TPM_ALG_SYMCIPHER"),
40 (Camellia, 0x0026, "TPM_ALG_CAMELLIA"),
41 (Ctr, 0x0040, "TPM_ALG_CTR"),
42 (Ofb, 0x0041, "TPM_ALG_OFB"),
43 (Cbc, 0x0042, "TPM_ALG_CBC"),
44 (Cfb, 0x0043, "TPM_ALG_CFB"),
45 (Ecb, 0x0044, "TPM_ALG_ECB"),
46 }
47}
48
49tpm_enum! {
50 #[derive(Debug, PartialEq, Eq, Copy, Clone)]
51 pub enum TpmCap(u32) {
52 (Algs, 0x0000_0000, "TPM_CAP_ALGS"),
53 (Handles, 0x0000_0001, "TPM_CAP_HANDLES"),
54 (Commands, 0x0000_0002, "TPM_CAP_COMMANDS"),
55 (Pcrs, 0x0000_0005, "TPM_CAP_PCRS"),
56 }
57}
58
59tpm_enum! {
60 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Clone)]
61 pub enum TpmCc(u32) {
62 (NvUndefineSpaceSpecial, 0x0000_011F, "TPM_CC_NV_UndefineSpaceSpecial"),
63 (EvictControl, 0x0000_0120, "TPM_CC_EvictControl"),
64 (HierarchyControl, 0x0000_0121, "TPM_CC_HierarchyControl"),
65 (NvUndefineSpace, 0x0000_0122, "TPM_CC_NV_UndefineSpace"),
66 (ChangeEps, 0x0000_0124, "TPM_CC_ChangeEPS"),
67 (ChangePps, 0x0000_0125, "TPM_CC_ChangePPS"),
68 (Clear, 0x0000_0126, "TPM_CC_Clear"),
69 (ClearControl, 0x0000_0127, "TPM_CC_ClearControl"),
70 (HierarchyChangeAuth, 0x0000_0129, "TPM_CC_HierarchyChangeAuth"),
71 (NvDefineSpace, 0x0000_012A, "TPM_CC_NV_DefineSpace"),
72 (PcrAllocate, 0x0000_012B, "TPM_CC_PCR_Allocate"),
73 (PcrSetAuthPolicy, 0x0000_012C, "TPM_CC_PCR_SetAuthPolicy"),
74 (SetPrimaryPolicy, 0x0000_012E, "TPM_CC_SetPrimaryPolicy"),
75 (CreatePrimary, 0x0000_0131, "TPM_CC_CreatePrimary"),
76 (NvGlobalWriteLock, 0x0000_0132, "TPM_CC_NV_GlobalWriteLock"),
77 (GetCommandAuditDigest, 0x0000_0133, "TPM_CC_GetCommandAuditDigest"),
78 (NvIncrement, 0x0000_0134, "TPM_CC_NV_Increment"),
79 (NvSetBits, 0x0000_0135, "TPM_CC_NV_SetBits"),
80 (NvExtend, 0x0000_0136, "TPM_CC_NV_Extend"),
81 (NvWrite, 0x0000_0137, "TPM_CC_NV_Write"),
82 (NvWriteLock, 0x0000_0138, "TPM_CC_NV_WriteLock"),
83 (DictionaryAttackLockReset, 0x0000_0139, "TPM_CC_DictionaryAttackLockReset"),
84 (NvChangeAuth, 0x0000_013B, "TPM_CC_NV_ChangeAuth"),
85 (PcrEvent, 0x0000_013C, "TPM_CC_PCR_Event"),
86 (PcrReset, 0x0000_013D, "TPM_CC_PCR_Reset"),
87 (SequenceComplete, 0x0000_013E, "TPM_CC_SequenceComplete"),
88 (IncrementalSelfTest, 0x0000_0142, "TPM_CC_IncrementalSelfTest"),
89 (SelfTest, 0x0000_0143, "TPM_CC_SelfTest"),
90 (Startup, 0x0000_0144, "TPM_CC_Startup"),
91 (Shutdown, 0x0000_0145, "TPM_CC_Shutdown"),
92 (StirRandom, 0x0000_0146, "TPM_CC_StirRandom"),
93 (ActivateCredential, 0x0000_0147, "TPM_CC_ActivateCredential"),
94 (Certify, 0x0000_0148, "TPM_CC_Certify"),
95 (CertifyCreation, 0x0000_014A, "TPM_CC_CertifyCreation"),
96 (Duplicate, 0x0000_014B, "TPM_CC_Duplicate"),
97 (GetTime, 0x0000_014C, "TPM_CC_GetTime"),
98 (GetSessionAuditDigest, 0x0000_014D, "TPM_CC_GetSessionAuditDigest"),
99 (NvRead, 0x0000_014E, "TPM_CC_NV_Read"),
100 (NvReadLock, 0x0000_014F, "TPM_CC_NV_ReadLock"),
101 (ObjectChangeAuth, 0x0000_0150, "TPM_CC_ObjectChangeAuth"),
102 (PolicySecret, 0x0000_0151, "TPM_CC_PolicySecret"),
103 (Rewrap, 0x0000_0152, "TPM_CC_Rewrap"),
104 (Create, 0x0000_0153, "TPM_CC_Create"),
105 (EcdhZGen, 0x0000_0154, "TPM_CC_ECDH_ZGen"),
106 (ZGen2Phase, 0x0000_0155, "TPM_CC_ZGen_2Phase"),
107 (Import, 0x0000_0156, "TPM_CC_Import"),
108 (Load, 0x0000_0157, "TPM_CC_Load"),
109 (Quote, 0x0000_0158, "TPM_CC_Quote"),
110 (RsaDecrypt, 0x0000_0159, "TPM_CC_RSA_Decrypt"),
111 (EccEncrypt, 0x0000_015A, "TPM_CC_ECC_Encrypt"),
112 (EccDecrypt, 0x0000_015B, "TPM_CC_ECC_Decrypt"),
113 (SequenceUpdate, 0x0000_015C, "TPM_CC_SequenceUpdate"),
114 (Sign, 0x0000_015D, "TPM_CC_Sign"),
115 (Unseal, 0x0000_015E, "TPM_CC_Unseal"),
116 (PolicySigned, 0x0000_0160, "TPM_CC_PolicySigned"),
117 (ContextLoad, 0x0000_0161, "TPM_CC_ContextLoad"),
118 (ContextSave, 0x0000_0162, "TPM_CC_ContextSave"),
119 (EcdhKeyGen, 0x0000_0163, "TPM_CC_ECDH_KeyGen"),
120 (FlushContext, 0x0000_0165, "TPM_CC_FlushContext"),
121 (LoadExternal, 0x0000_0167, "TPM_CC_LoadExternal"),
122 (MakeCredential, 0x0000_0168, "TPM_CC_MakeCredential"),
123 (NvReadPublic, 0x0000_0169, "TPM_CC_NV_ReadPublic"),
124 (PolicyAuthValue, 0x0000_016B, "TPM_CC_PolicyAuthValue"),
125 (PolicyCommandCode, 0x0000_016C, "TPM_CC_PolicyCommandCode"),
126 (PolicyCpHash, 0x0000_016E, "TPM_CC_PolicyCpHash"),
127 (PolicyLocality, 0x0000_016F, "TPM_CC_PolicyLocality"),
128 (PolicyOR, 0x0000_0171, "TPM_CC_PolicyOR"),
129 (PolicyTicket, 0x0000_0172, "TPM_CC_PolicyTicket"),
130 (ReadPublic, 0x0000_0173, "TPM_CC_ReadPublic"),
131 (RsaEncrypt, 0x0000_0174, "TPM_CC_RSA_Encrypt"),
132 (StartAuthSession, 0x0000_0176, "TPM_CC_StartAuthSession"),
133 (VerifySignature, 0x0000_0177, "TPM_CC_VerifySignature"),
134 (EccParameters, 0x0000_0178, "TPM_CC_ECC_Parameters"),
135 (GetCapability, 0x0000_017A, "TPM_CC_GetCapability"),
136 (GetRandom, 0x0000_017B, "TPM_CC_GetRandom"),
137 (GetTestResult, 0x0000_017C, "TPM_CC_GetTestResult"),
138 (Hash, 0x0000_017D, "TPM_CC_Hash"),
139 (PcrRead, 0x0000_017E, "TPM_CC_PCR_Read"),
140 (PolicyPcr, 0x0000_017F, "TPM_CC_PolicyPCR"),
141 (PolicyRestart, 0x0000_0180, "TPM_CC_PolicyRestart"),
142 (PcrExtend, 0x0000_0182, "TPM_CC_PCR_Extend"),
143 (PcrSetAuthValue, 0x0000_0183, "TPM_CC_PCR_SetAuthValue"),
144 (NvCertify, 0x0000_0184, "TPM_CC_NV_Certify"),
145 (EventSequenceComplete, 0x0000_0185, "TPM_CC_EventSequenceComplete"),
146 (HashSequenceStart, 0x0000_0186, "TPM_CC_HashSequenceStart"),
147 (PolicyPhysicalPresence, 0x0000_0187, "TPM_CC_PolicyPhysicalPresence"),
148 (PolicyGetDigest, 0x0000_0189, "TPM_CC_PolicyGetDigest"),
149 (PolicyPassword, 0x0000_018C, "TPM_CC_PolicyPassword"),
150 (EncryptDecrypt2, 0x0000_0193, "TPM_CC_EncryptDecrypt2"),
151 (NvDefineSpace2, 0x0000_019D, "TPM_CC_NV_DefineSpace2"),
152 (NvReadPublic2, 0x0000_019E, "TPM_CC_NV_ReadPublic2"),
153 (VendorTcgTest, 0x2000_0000, "TPM_CC_Vendor_TCG_Test"),
154 }
155}
156
157tpm_enum! {
158 #[derive(Debug, Default, PartialEq, Eq, Clone, Copy)]
159 pub enum TpmEccCurve(u16) {
160 #[default]
161 (None, 0x0000, "TPM_ECC_NONE"),
162 (NistP192, 0x0001, "TPM_ECC_NIST_P192"),
163 (NistP224, 0x0002, "TPM_ECC_NIST_P224"),
164 (NistP256, 0x0003, "TPM_ECC_NIST_P256"),
165 (NistP384, 0x0004, "TPM_ECC_NIST_P384"),
166 (NistP521, 0x0005, "TPM_ECC_NIST_P521"),
167 }
168}
169
170tpm_enum! {
171 #[derive(Debug, Default, PartialEq, Eq, Copy, Clone)]
172 pub enum TpmRh(u32) {
173 (Owner, 0x4000_0001, "TPM_RH_OWNER"),
174 #[default]
175 (Null, 0x4000_0007, "TPM_RH_NULL"),
176 (Password, 0x4000_0009, "TPM_RH_PW"),
177 (Lockout, 0x4000_000A, "TPM_RH_LOCKOUT"),
178 (Endorsement, 0x4000_000B, "TPM_RH_ENDORSEMENT"),
179 (Platform, 0x4000_000C, "TPM_RH_PLATFORM"),
180 (TransientFirst, 0x8000_0000, "First transient handle"),
181 (PersistentFirst, 0x8100_0000, "First persistent handle"),
182 }
183}
184
185tpm_enum! {
186 #[derive(Debug, PartialEq, Eq, Copy, Clone, Default)]
187 pub enum TpmSe(u8) {
188 #[default]
189 (Hmac, 0x00, "TPM_SE_HMAC"),
190 (Policy, 0x01, "TPM_SE_POLICY"),
191 (Trial, 0x03, "TPM_SE_TRIAL"),
192 }
193}
194
195tpm_enum! {
196 #[derive(Debug, PartialEq, Eq, Copy, Clone, Default)]
197 pub enum TpmSt(u16) {
198 (RspCommand, 0x00C4, "TPM_ST_RSP_COMMAND"),
199 #[default]
200 (Null, 0x8000, "TPM_ST_NULL"),
201 (NoSessions, 0x8001, "TPM_ST_NO_SESSIONS"),
202 (Sessions, 0x8002, "TPM_ST_SESSIONS"),
203 (AttestNv, 0x8014, "TPM_ST_ATTEST_NV"),
204 (AttestCommandAudit, 0x8015, "TPM_ST_ATTEST_COMMAND_AUDIT"),
205 (AttestSessionAudit, 0x8016, "TPM_ST_ATTEST_SESSION_AUDIT"),
206 (AttestCertify, 0x8017, "TPM_ST_ATTEST_CERTIFY"),
207 (AttestQuote, 0x8018, "TPM_ST_ATTEST_QUOTE"),
208 (AttestTime, 0x8019, "TPM_ST_ATTEST_TIME"),
209 (AttestCreation, 0x801A, "TPM_ST_ATTEST_CREATION"),
210 (AttestNvDigest, 0x801C, "TPM_ST_ATTEST_NV_DIGEST"),
211 (Creation, 0x8021, "TPM_ST_CREATION"),
212 (Verified, 0x8022, "TPM_ST_VERIFIED"),
213 (AuthSecret, 0x8023, "TPM_ST_AUTH_SECRET"),
214 (HashCheck, 0x8024, "TPM_ST_HASHCHECK"),
215 (AuthSigned, 0x8025, "TPM_ST_AUTH_SIGNED"),
216 }
217}
218
219tpm_enum! {
220 #[derive(Debug, PartialEq, Eq, Copy, Clone, Default)]
221 pub enum TpmSu(u16) {
222 (Clear, 0x0000, "TPM_SU_CLEAR"),
223 #[default]
224 (State, 0x0001, "TPM_SU_STATE"),
225 }
226}
227
228tpm_enum! {
229 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash, Default)]
230 pub enum TpmiEccKeyExchange(u16) {
231 #[default]
232 (None, 0x0000, "TPM_ECC_NONE"),
233 (Ecdh, 0x0019, "TPM_ALG_ECDH"),
234 (Ecmqv, 0x001D, "TPM_ALG_ECMQV"),
235 (Sm2, 0x001B, "TPM_ALG_SM2"),
236 }
237}