1 /* 2 * Copyright (C) 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "tpm_commands.h" 18 19 #include <tss2/tss2_tpm2_types.h> 20 21 #include <cstddef> 22 #include <string> 23 24 namespace cuttlefish { 25 TpmCommandName(std::uint32_t command_num)26std::string TpmCommandName(std::uint32_t command_num) { 27 switch(command_num) { 28 #define MATCH_TPM_COMMAND(name) case name: return #name; 29 MATCH_TPM_COMMAND(TPM2_CC_NV_UndefineSpaceSpecial) 30 MATCH_TPM_COMMAND(TPM2_CC_EvictControl) 31 MATCH_TPM_COMMAND(TPM2_CC_HierarchyControl) 32 MATCH_TPM_COMMAND(TPM2_CC_NV_UndefineSpace) 33 MATCH_TPM_COMMAND(TPM2_CC_ChangeEPS) 34 MATCH_TPM_COMMAND(TPM2_CC_ChangePPS) 35 MATCH_TPM_COMMAND(TPM2_CC_Clear) 36 MATCH_TPM_COMMAND(TPM2_CC_ClearControl) 37 MATCH_TPM_COMMAND(TPM2_CC_ClockSet) 38 MATCH_TPM_COMMAND(TPM2_CC_HierarchyChangeAuth) 39 MATCH_TPM_COMMAND(TPM2_CC_NV_DefineSpace) 40 MATCH_TPM_COMMAND(TPM2_CC_PCR_Allocate) 41 MATCH_TPM_COMMAND(TPM2_CC_PCR_SetAuthPolicy) 42 MATCH_TPM_COMMAND(TPM2_CC_PP_Commands) 43 MATCH_TPM_COMMAND(TPM2_CC_SetPrimaryPolicy) 44 MATCH_TPM_COMMAND(TPM2_CC_FieldUpgradeStart) 45 MATCH_TPM_COMMAND(TPM2_CC_ClockRateAdjust) 46 MATCH_TPM_COMMAND(TPM2_CC_CreatePrimary) 47 MATCH_TPM_COMMAND(TPM2_CC_NV_GlobalWriteLock) 48 MATCH_TPM_COMMAND(TPM2_CC_GetCommandAuditDigest) 49 MATCH_TPM_COMMAND(TPM2_CC_NV_Increment) 50 MATCH_TPM_COMMAND(TPM2_CC_NV_SetBits) 51 MATCH_TPM_COMMAND(TPM2_CC_NV_Extend) 52 MATCH_TPM_COMMAND(TPM2_CC_NV_Write) 53 MATCH_TPM_COMMAND(TPM2_CC_NV_WriteLock) 54 MATCH_TPM_COMMAND(TPM2_CC_DictionaryAttackLockReset) 55 MATCH_TPM_COMMAND(TPM2_CC_DictionaryAttackParameters) 56 MATCH_TPM_COMMAND(TPM2_CC_NV_ChangeAuth) 57 MATCH_TPM_COMMAND(TPM2_CC_PCR_Event) 58 MATCH_TPM_COMMAND(TPM2_CC_PCR_Reset) 59 MATCH_TPM_COMMAND(TPM2_CC_SequenceComplete) 60 MATCH_TPM_COMMAND(TPM2_CC_SetAlgorithmSet) 61 MATCH_TPM_COMMAND(TPM2_CC_SetCommandCodeAuditStatus) 62 MATCH_TPM_COMMAND(TPM2_CC_FieldUpgradeData) 63 MATCH_TPM_COMMAND(TPM2_CC_IncrementalSelfTest) 64 MATCH_TPM_COMMAND(TPM2_CC_SelfTest) 65 MATCH_TPM_COMMAND(TPM2_CC_Startup) 66 MATCH_TPM_COMMAND(TPM2_CC_Shutdown) 67 MATCH_TPM_COMMAND(TPM2_CC_StirRandom) 68 MATCH_TPM_COMMAND(TPM2_CC_ActivateCredential) 69 MATCH_TPM_COMMAND(TPM2_CC_Certify) 70 MATCH_TPM_COMMAND(TPM2_CC_PolicyNV) 71 MATCH_TPM_COMMAND(TPM2_CC_CertifyCreation) 72 MATCH_TPM_COMMAND(TPM2_CC_Duplicate) 73 MATCH_TPM_COMMAND(TPM2_CC_GetTime) 74 MATCH_TPM_COMMAND(TPM2_CC_GetSessionAuditDigest) 75 MATCH_TPM_COMMAND(TPM2_CC_NV_Read) 76 MATCH_TPM_COMMAND(TPM2_CC_NV_ReadLock) 77 MATCH_TPM_COMMAND(TPM2_CC_ObjectChangeAuth) 78 MATCH_TPM_COMMAND(TPM2_CC_PolicySecret) 79 MATCH_TPM_COMMAND(TPM2_CC_Rewrap) 80 MATCH_TPM_COMMAND(TPM2_CC_Create) 81 MATCH_TPM_COMMAND(TPM2_CC_ECDH_ZGen) 82 MATCH_TPM_COMMAND(TPM2_CC_HMAC) 83 MATCH_TPM_COMMAND(TPM2_CC_Import) 84 MATCH_TPM_COMMAND(TPM2_CC_Load) 85 MATCH_TPM_COMMAND(TPM2_CC_Quote) 86 MATCH_TPM_COMMAND(TPM2_CC_RSA_Decrypt) 87 MATCH_TPM_COMMAND(TPM2_CC_HMAC_Start) 88 MATCH_TPM_COMMAND(TPM2_CC_SequenceUpdate) 89 MATCH_TPM_COMMAND(TPM2_CC_Sign) 90 MATCH_TPM_COMMAND(TPM2_CC_Unseal) 91 MATCH_TPM_COMMAND(TPM2_CC_PolicySigned) 92 MATCH_TPM_COMMAND(TPM2_CC_ContextLoad) 93 MATCH_TPM_COMMAND(TPM2_CC_ContextSave) 94 MATCH_TPM_COMMAND(TPM2_CC_ECDH_KeyGen) 95 MATCH_TPM_COMMAND(TPM2_CC_EncryptDecrypt) 96 MATCH_TPM_COMMAND(TPM2_CC_FlushContext) 97 MATCH_TPM_COMMAND(TPM2_CC_LoadExternal) 98 MATCH_TPM_COMMAND(TPM2_CC_MakeCredential) 99 MATCH_TPM_COMMAND(TPM2_CC_NV_ReadPublic) 100 MATCH_TPM_COMMAND(TPM2_CC_PolicyAuthorize) 101 MATCH_TPM_COMMAND(TPM2_CC_PolicyAuthValue) 102 MATCH_TPM_COMMAND(TPM2_CC_PolicyCommandCode) 103 MATCH_TPM_COMMAND(TPM2_CC_PolicyCounterTimer) 104 MATCH_TPM_COMMAND(TPM2_CC_PolicyCpHash) 105 MATCH_TPM_COMMAND(TPM2_CC_PolicyLocality) 106 MATCH_TPM_COMMAND(TPM2_CC_PolicyNameHash) 107 MATCH_TPM_COMMAND(TPM2_CC_PolicyOR) 108 MATCH_TPM_COMMAND(TPM2_CC_PolicyTicket) 109 MATCH_TPM_COMMAND(TPM2_CC_ReadPublic) 110 MATCH_TPM_COMMAND(TPM2_CC_RSA_Encrypt) 111 MATCH_TPM_COMMAND(TPM2_CC_StartAuthSession) 112 MATCH_TPM_COMMAND(TPM2_CC_VerifySignature) 113 MATCH_TPM_COMMAND(TPM2_CC_ECC_Parameters) 114 MATCH_TPM_COMMAND(TPM2_CC_FirmwareRead) 115 MATCH_TPM_COMMAND(TPM2_CC_GetCapability) 116 MATCH_TPM_COMMAND(TPM2_CC_GetRandom) 117 MATCH_TPM_COMMAND(TPM2_CC_GetTestResult) 118 MATCH_TPM_COMMAND(TPM2_CC_Hash) 119 MATCH_TPM_COMMAND(TPM2_CC_PCR_Read) 120 MATCH_TPM_COMMAND(TPM2_CC_PolicyPCR) 121 MATCH_TPM_COMMAND(TPM2_CC_PolicyRestart) 122 MATCH_TPM_COMMAND(TPM2_CC_ReadClock) 123 MATCH_TPM_COMMAND(TPM2_CC_PCR_Extend) 124 MATCH_TPM_COMMAND(TPM2_CC_PCR_SetAuthValue) 125 MATCH_TPM_COMMAND(TPM2_CC_NV_Certify) 126 MATCH_TPM_COMMAND(TPM2_CC_EventSequenceComplete) 127 MATCH_TPM_COMMAND(TPM2_CC_HashSequenceStart) 128 MATCH_TPM_COMMAND(TPM2_CC_PolicyPhysicalPresence) 129 MATCH_TPM_COMMAND(TPM2_CC_PolicyDuplicationSelect) 130 MATCH_TPM_COMMAND(TPM2_CC_PolicyGetDigest) 131 MATCH_TPM_COMMAND(TPM2_CC_TestParms) 132 MATCH_TPM_COMMAND(TPM2_CC_Commit) 133 MATCH_TPM_COMMAND(TPM2_CC_PolicyPassword) 134 MATCH_TPM_COMMAND(TPM2_CC_ZGen_2Phase) 135 MATCH_TPM_COMMAND(TPM2_CC_EC_Ephemeral) 136 MATCH_TPM_COMMAND(TPM2_CC_PolicyNvWritten) 137 MATCH_TPM_COMMAND(TPM2_CC_PolicyTemplate) 138 MATCH_TPM_COMMAND(TPM2_CC_CreateLoaded) 139 MATCH_TPM_COMMAND(TPM2_CC_PolicyAuthorizeNV) 140 MATCH_TPM_COMMAND(TPM2_CC_EncryptDecrypt2) 141 MATCH_TPM_COMMAND(TPM2_CC_AC_GetCapability) 142 MATCH_TPM_COMMAND(TPM2_CC_AC_Send) 143 MATCH_TPM_COMMAND(TPM2_CC_Policy_AC_SendSelect) 144 MATCH_TPM_COMMAND(TPM2_CC_Vendor_TCG_Test) 145 #undef MATCH_TPM_COMMAND 146 default: 147 return "Unknown"; 148 } 149 } 150 151 } // namespace cuttlefish 152