| // Copyright 2016 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CRYPTOHOME_TPM_METRICS_H_ |
| #define CRYPTOHOME_TPM_METRICS_H_ |
| |
| #include "cryptohome/tpm.h" |
| |
| namespace cryptohome { |
| |
| // WARNING: The values in the following enum are written to logs and the |
| // elements must not be renumbered or deleted (and hence possibly reused). |
| enum TpmResult { |
| kTpmSuccess = 1, // TSS_SUCCESS. |
| |
| // TSS_LAYER_TPM errors: |
| kTpmErrorAuthenticationFail = 2, // TPM_E_AUTHFAIL. |
| kTpmErrorBadParameter = 3, // TPM_E_BAD_PARAMETER. |
| kTpmErrorBadIndex = 4, // TPM_E_BADINDEX. |
| kTpmErrorAuditFail = 5, // TPM_E_AUDITFAILURE. |
| kTpmErrorClearDisabled = 6, // TPM_E_CLEAR_DISABLED. |
| kTpmErrorTpmDeactivated = 7, // TPM_E_DEACTIVATED. |
| kTpmErrorTpmDisabled = 8, // TPM_E_DISABLED. |
| kTpmErrorFailed = 9, // TPM_E_FAIL. |
| kTpmErrorBadOrdinal = 10, // TPM_E_BAD_ORDINAL. |
| kTpmErrorOwnerInstallDisabled = 11, // TPM_E_INSTALL_DISABLED. |
| kTpmErrorInvalidKeyHandle = 12, // TPM_E_INVALID_KEYHANDLE. |
| kTpmErrorKeyNotFound = 13, // TPM_E_KEYNOTFOUND. |
| kTpmErrorBadEncryptionScheme = 14, // TPM_E_INAPPROPRIATE_ENC. |
| kTpmErrorMigrationAuthorizationFail = 15, // TPM_E_MIGRATEFAIL. |
| kTpmErrorInvalidPcrInfo = 16, // TPM_E_INVALID_PCR_INFO. |
| kTpmErrorNoSpaceToLoadKey = 17, // TPM_E_NOSPACE. |
| kTpmErrorNoSrk = 18, // TPM_E_NOSRK. |
| kTpmErrorInvalidEncryptedBlob = 19, // TPM_E_NOTSEALED_BLOB. |
| kTpmErrorOwnerAlreadySet = 20, // TPM_E_OWNER_SET. |
| kTpmErrorNotEnoughTpmResources = 21, // TPM_E_RESOURCES. |
| kTpmErrorRandomStringTooShort = 22, // TPM_E_SHORTRANDOM. |
| kTpmErrorTpmOutOfSpace = 23, // TPM_E_SIZE. |
| kTpmErrorWrongPcrValue = 24, // TPM_E_WRONGPCRVAL. |
| kTpmErrorBadParamSize = 25, // TPM_E_BAD_PARAM_SIZE. |
| kTpmErrorNoSha1Thread = 26, // TPM_E_SHA_THREAD. |
| kTpmErrorSha1Error = 27, // TPM_E_SHA_ERROR. |
| kTpmErrorTpmSelfTestFailed = 28, // TPM_E_FAILEDSELFTEST. |
| kTpmErrorSecondAuthorizationFailed = 29, // TPM_E_AUTH2FAIL. |
| kTpmErrorBadTag = 30, // TPM_E_BADTAG. |
| kTpmErrorIOError = 31, // TPM_E_IOERROR. |
| kTpmErrorEncryptionError = 32, // TPM_E_ENCRYPT_ERROR. |
| kTpmErrorDecryptionError = 33, // TPM_E_DECRYPT_ERROR. |
| kTpmErrorInvalidAuthorizationHandle = 34, // TPM_E_INVALID_AUTHHANDLE. |
| kTpmErrorNoEndorsement = 35, // TPM_E_NO_ENDORSEMENT. |
| kTpmErrorInvalidKeyUsage = 36, // TPM_E_INVALID_KEYUSAGE. |
| kTpmErrorWrongEntityType = 37, // TPM_E_WRONG_ENTITYTYPE. |
| kTpmErrorInvalidPostInitSequence = 38, // TPM_E_INVALID_POSTINIT. |
| kTpmErrorInvalidSignatureFormat = 39, // TPM_E_INAPPROPRIATE_SIG. |
| kTpmErrorBadKeyProperty = 40, // TPM_E_BAD_KEY_PROPERTY. |
| kTpmErrorBadMigration = 41, // TPM_E_BAD_MIGRATION. |
| kTpmErrorBadScheme = 42, // TPM_E_BAD_SCHEME. |
| kTpmErrorBadDataSize = 43, // TPM_E_BAD_DATASIZE. |
| kTpmErrorBadModeParameter = 44, // TPM_E_BAD_MODE. |
| kTpmErrorBadPresenceValue = 45, // TPM_E_BAD_PRESENCE. |
| kTpmErrorBadVersion = 46, // TPM_E_BAD_VERSION. |
| kTpmErrorWrapTransportNotAllowed = 47, // TPM_E_NO_WRAP_TRANSPORT. |
| kTpmErrorAuditFailCommandUnsuccessful = 48, // TPM_E_AUDITFAIL_UNSUCCESSFUL. |
| kTpmErrorAuditFailCommandSuccessful = 49, // TPM_E_AUDITFAIL_SUCCESSFUL. |
| kTpmErrorPcrRegisterNotResetable = 50, // TPM_E_NOTRESETABLE. |
| kTpmErrorPcrRegisterResetRequiresLocality = 51, // TPM_E_NOTLOCAL. |
| kTpmErrorBadTypeOfIdentityBlob = 52, // TPM_E_BAD_TYPE. |
| kTpmErrorBadResourceType = 53, // TPM_E_INVALID_RESOURCE. |
| kTpmErrorCommandAvailableOnlyInFipsMode = 54, // TPM_E_NOTFIPS. |
| kTpmErrorInvalidFamilyId = 55, // TPM_E_INVALID_FAMILY. |
| kTpmErrorNoNvRamPermission = 56, // TPM_E_NO_NV_PERMISSION. |
| kTpmErrorSignedCommandRequired = 57, // TPM_E_REQUIRES_SIGN. |
| kTpmErrorNvRamKeyNotSupported = 58, // TPM_E_KEY_NOTSUPPORTED. |
| kTpmErrorAuthorizationConflict = 59, // TPM_E_AUTH_CONFLICT. |
| kTpmErrorNvRamAreaLocked = 60, // TPM_E_AREA_LOCKED. |
| kTpmErrorBadLocality = 61, // TPM_E_BAD_LOCALITY. |
| kTpmErrorNvRamAreaReadOnly = 62, // TPM_E_READ_ONLY. |
| kTpmErrorNvRamAreaNoWriteProtection = 63, // TPM_E_PER_NOWRITE. |
| kTpmErrorFamilyCountMismatch = 64, // TPM_E_FAMILYCOUNT. |
| kTpmErrorNvRamAreaWriteLocked = 65, // TPM_E_WRITE_LOCKED. |
| kTpmErrorNvRamAreaBadAttributes = 66, // TPM_E_BAD_ATTRIBUTES. |
| kTpmErrorInvalidStructure = 67, // TPM_E_INVALID_STRUCTURE. |
| kTpmErrorKeyUnderOwnerControl = 68, // TPM_E_KEY_OWNER_CONTROL. |
| kTpmErrorBadCounterHandle = 69, // TPM_E_BAD_COUNTER. |
| kTpmErrorNotAFullWrite = 70, // TPM_E_NOT_FULLWRITE. |
| kTpmErrorContextGap = 71, // TPM_E_CONTEXT_GAP. |
| kTpmErrorMaxNvRamWrites = 72, // TPM_E_MAXNVWRITES. |
| kTpmErrorNoOperator = 73, // TPM_E_NOOPERATOR. |
| kTpmErrorResourceMissing = 74, // TPM_E_RESOURCEMISSING. |
| kTpmErrorDelagteLocked = 75, // TPM_E_DELEGATE_LOCK. |
| kTpmErrorDelegateFamily = 76, // TPM_E_DELEGATE_FAMILY. |
| kTpmErrorDelegateAdmin = 77, // TPM_E_DELEGATE_ADMIN. |
| kTpmErrorTransportNotExclusive = 78, // TPM_E_TRANSPORT_NOTEXCLUSIVE. |
| kTpmErrorOwnerControl = 79, // TPM_E_OWNER_CONTROL. |
| kTpmErrorDaaResourcesNotAvailable = 80, // TPM_E_DAA_RESOURCES. |
| kTpmErrorDaaInputData0 = 81, // TPM_E_DAA_INPUT_DATA0. |
| kTpmErrorDaaInputData1 = 82, // TPM_E_DAA_INPUT_DATA1. |
| kTpmErrorDaaIssuerSettings = 83, // TPM_E_DAA_ISSUER_SETTINGS. |
| kTpmErrorDaaTpmSettings = 84, // TPM_E_DAA_TPM_SETTINGS. |
| kTpmErrorDaaStage = 85, // TPM_E_DAA_STAGE. |
| kTpmErrorDaaIssuerValidity = 86, // TPM_E_DAA_ISSUER_VALIDITY. |
| kTpmErrorDaaWrongW = 87, // TPM_E_DAA_WRONG_W. |
| kTpmErrorBadHandle = 88, // TPM_E_BAD_HANDLE. |
| kTpmErrorBadDelegate = 89, // TPM_E_BAD_DELEGATE. |
| kTpmErrorBadContextBlob = 90, // TPM_E_BADCONTEXT. |
| kTpmErrorTooManyContexts = 91, // TPM_E_TOOMANYCONTEXTS. |
| kTpmErrorMigrationAuthoritySignatureFail = 92, // TPM_E_MA_TICKET_SIGNATURE. |
| kTpmErrorMigrationDestinationNotAuthenticated = 93, // TPM_E_MA_DESTINATION. |
| kTpmErrorBadMigrationSource = 94, // TPM_E_MA_SOURCE. |
| kTpmErrorBadMigrationAuthority = 95, // TPM_E_MA_AUTHORITY. |
| kTpmErrorPermanentEk = 96, // TPM_E_PERMANENTEK. |
| kTpmErrorCmkTicketBadSignature = 97, // TPM_E_BAD_SIGNATURE. |
| kTpmErrorNoContextSpace = 98, // TPM_E_NOCONTEXTSPACE. |
| kTpmErrorTpmBusyRetryLater = 99, // TPM_E_RETRY. |
| kTpmErrorNeedsSelfTest = 100, // TPM_E_NEEDS_SELFTEST. |
| kTpmErrorDoingSelfTest = 101, // TPM_E_DOING_SELFTEST. |
| kTpmErrorDefendLockRunning = 102, // TPM_E_DEFEND_LOCK_RUNNING. |
| kTpmErrorTpmCommandDisabled = 103, // TPM_E_DISABLED_CMD. |
| kTpmErrorUnknownError = 104, // Unknown TPM error. |
| |
| // TSS_LAYER_TDDL errors: |
| kTddlErrorGeneralFail = 105, // TSS_E_FAIL. |
| kTddlErrorBadParameter = 106, // TSS_E_BAD_PARAMETER. |
| kTddlErrorInternalSoftwareError = 107, // TSS_E_INTERNAL_ERROR. |
| kTddlErrorNotImplemented = 108, // TSS_E_NOTIMPL. |
| kTddlErrorKeyNotFoundInPersistentStorage = 109, // TSS_E_PS_KEY_NOTFOUND. |
| kTddlErrorKeyAlreadyRegistered = 110, // TSS_E_KEY_ALREADY_REGISTERED. |
| kTddlErrorActionCanceledByRequest = 111, // TSS_E_CANCELED. |
| kTddlErrorTimeout = 112, // TSS_E_TIMEOUT. |
| kTddlErrorOutOfMemory = 113, // TSS_E_OUTOFMEMORY. |
| kTddlErrorUnexpectedTpmOutput = 114, // TSS_E_TPM_UNEXPECTED. |
| kTddlErrorCommunicationFailure = 115, // TSS_E_COMM_FAILURE. |
| kTddlErrorTpmUnsupportedFeature = 116, // TSS_E_TPM_UNSUPPORTED_FEATURE. |
| kTddlErrorConnectionToTpmDeviceFailed = 117, // TDDL_E_COMPONENT_NOT_FOUND. |
| kTddlErrorDeviceAlreadyOpened = 118, // TDDL_E_ALREADY_OPENED. |
| kTddlErrorBadTag = 119, // TDDL_E_BADTAG. |
| kTddlErrorReceiveBufferTooSmall = 120, // TDDL_E_INSUFFICIENT_BUFFER. |
| kTddlErrorCommandAlreadyCompleted = 121, // TDDL_E_COMMAND_COMPLETED. |
| kTddlErrorCommandAborted = 122, // TDDL_E_COMMAND_ABORTED. |
| kTddlErrorDeviceDriverAlreadyClosed = 123, // TDDL_E_ALREADY_CLOSED. |
| kTddlErrorIOError = 124, // TDDL_E_IOERROR. |
| kTddlErrorUnknownError = 125, // Unknown TDDL error. |
| |
| // TSS_LAYER_TCS errors: |
| kTcsErrorGeneralFail = 126, // TSS_E_FAIL. |
| kTcsErrorBadParameter = 127, // TSS_E_BAD_PARAMETER. |
| kTcsErrorInternalSoftwareError = 128, // TSS_E_INTERNAL_ERROR. |
| kTcsErrorNotImplemented = 129, // TSS_E_NOTIMPL. |
| kTcsErrorKeyNotFoundInPersistentStorage = 130, // TSS_E_PS_KEY_NOTFOUND. |
| kTcsErrorKeyAlreadyRegistered = 131, // TSS_E_KEY_ALREADY_REGISTERED. |
| kTcsErrorActionCanceledByRequest = 132, // TSS_E_CANCELED. |
| kTcsErrorTimeout = 133, // // TSS_E_TIMEOUT. |
| kTcsErrorOutOfMemory = 134, // TSS_E_OUTOFMEMORY. |
| kTcsErrorUnexpectedTpmOutput = 135, // TSS_E_TPM_UNEXPECTED. |
| kTcsErrorCommunicationFailure = 136, // TSS_E_COMM_FAILURE. |
| kTcsErrorTpmUnsupportedFeature = 137, // TSS_E_TPM_UNSUPPORTED_FEATURE. |
| kTcsErrorKeyMismatch = 138, // TCS_E_KEY_MISMATCH. |
| kTcsErrorKeyLoadFail = 139, // TCS_E_KM_LOADFAILED. |
| kTcsErrorKeyContextReloadFail = 140, // TCS_E_KEY_CONTEXT_RELOAD. |
| kTcsErrorBadMemoryIndex = 141, // TCS_E_BAD_INDEX. |
| kTcsErrorBadContextHandle = 142, // TCS_E_INVALID_CONTEXTHANDLE. |
| kTcsErrorBadKeyHandle = 143, // TCS_E_INVALID_KEYHANDLE. |
| kTcsErrorBadAuthorizationHandle = 144, // TCS_E_INVALID_AUTHHANDLE. |
| kTcsErrorAuthorizationSessionClosedByTpm = 145, // TCS_E_INVALID_AUTHSESSION. |
| kTcsErrorInvalidKey = 146, // TCS_E_INVALID_KEY. |
| kTcsErrorUnknownError = 147, // Unknown TCS error. |
| |
| // Other TSS errors: |
| kTssErrorGeneralFail = 148, // TSS_E_FAIL. |
| kTssErrorBadParameter = 149, // TSS_E_BAD_PARAMETER. |
| kTssErrorInternalSoftwareError = 150, // TSS_E_INTERNAL_ERROR. |
| kTssErrorNotImplemented = 151, // TSS_E_NOTIMPL. |
| kTssErrorKeyNotFoundInPersistentStorage = 152, // TSS_E_PS_KEY_NOTFOUND. |
| kTssErrorKeyAlreadyRegistered = 153, // TSS_E_KEY_ALREADY_REGISTERED. |
| kTssErrorActionCanceledByRequest = 154, // TSS_E_CANCELED. |
| kTssErrorTimeout = 155, // TSS_E_TIMEOUT. |
| kTssErrorOutOfMemory = 156, // TSS_E_OUTOFMEMORY. |
| kTssErrorUnexpectedTpmOutput = 157, // TSS_E_TPM_UNEXPECTED. |
| kTssErrorCommunicationFailure = 158, // TSS_E_COMM_FAILURE. |
| kTssErrorTpmUnsupportedFeature = 159, // TSS_E_TPM_UNSUPPORTED_FEATURE. |
| kTssErrorBadObjectType = 160, // TSS_E_INVALID_OBJECT_TYPE. |
| kTssErrorBadObjectInitFlag = 161, // TSS_E_INVALID_OBJECT_INITFLAG. |
| kTssErrorInvalidHandle = 162, // TSS_E_INVALID_HANDLE. |
| kTssErrorNoCoreServiceConnection = 163, // TSS_E_NO_CONNECTION. |
| kTssErrorCoreServiceConnectionFail = 164, // TSS_E_CONNECTION_FAILED. |
| kTssErrorCoreServiceConnectionBroken = 165, // TSS_E_CONNECTION_BROKEN. |
| kTssErrorInvalidHashAlgorithm = 166, // TSS_E_HASH_INVALID_ALG. |
| kTssErrorBadHashLength = 167, // TSS_E_HASH_INVALID_LENGTH. |
| kTssErrorHashObjectHasNoValue = 168, // TSS_E_HASH_NO_DATA. |
| kTssErrorSilentContextNeedsUserInput = 169, // TSS_E_SILENT_CONTEXT. |
| kTssErrorBadAttributeFlag = 170, // TSS_E_INVALID_ATTRIB_FLAG. |
| kTssErrorBadAttributeSubFlag = 171, // TSS_E_INVALID_ATTRIB_SUBFLAG. |
| kTssErrorBadAttributeData = 172, // TSS_E_INVALID_ATTRIB_DATA. |
| kTssErrorNoPcrRegistersSet = 173, // TSS_E_NO_PCRS_SET. |
| kTssErrorKeyNotLoaded = 174, // TSS_E_KEY_NOT_LOADED. |
| kTssErrorKeyNotSet = 175, // TSS_E_KEY_NOT_SET. |
| kTssErrorValidationFailed = 176, // TSS_E_VALIDATION_FAILED. |
| kTssErrorTspAuthorizationRequired = 177, // TSS_E_TSP_AUTHREQUIRED. |
| kTssErrorTspMultipleAuthorizationRequired = 178, // TSS_E_TSP_AUTH2REQUIRED. |
| kTssErrorTspAuthorizationFailed = 179, // TSS_E_TSP_AUTHFAIL. |
| kTssErrorTspMultipleAuthorizationFailed = 180, // TSS_E_TSP_AUTH2FAIL. |
| kTssErrorKeyHasNoMigrationPolicy = 181, // TSS_E_KEY_NO_MIGRATION_POLICY. |
| kTssErrorPolicyHasNoSecret = 182, // TSS_E_POLICY_NO_SECRET. |
| kTssErrorBadObjectAccess = 183, // TSS_E_INVALID_OBJ_ACCESS. |
| kTssErrorBadEncryptionScheme = 184, // TSS_E_INVALID_ENCSCHEME. |
| kTssErrorBadSignatureScheme = 185, // TSS_E_INVALID_SIGSCHEME. |
| kTssErrorEncryptedObjectBadLength = 186, // TSS_E_ENC_INVALID_LENGTH. |
| kTssErrorEncryptedObjectHasNoData = 187, // TSS_E_ENC_NO_DATA. |
| kTssErrorEncryptedObjectBadType = 188, // TSS_E_ENC_INVALID_TYPE. |
| kTssErrorBadKeyUsage = 189, // TSS_E_INVALID_KEYUSAGE. |
| kTssErrorVerificationFailed = 190, // TSS_E_VERIFICATION_FAILED. |
| kTssErrorNoHashAlgorithmId = 191, // TSS_E_HASH_NO_IDENTIFIER. |
| kTssErrorNvRamAreaAlreadyExists = 192, // TSS_E_NV_AREA_EXIST. |
| kTssErrorNvRamAreaDoesntExist = 193, // TSS_E_NV_AREA_NOT_EXIST. |
| kTssErrorUnknownError = 194, // Unknown TSS error. |
| |
| // Must be the last entry. |
| kTpmResultNumberOfBuckets = 195, |
| }; |
| |
| // Returns the corresponding TpmResult enum value to be used to report a |
| // "Cryptohome.TpmResults" histogram sample. |
| TpmResult GetTpmResultSample(TpmReturnCode result); |
| |
| } // namespace cryptohome |
| |
| #endif // CRYPTOHOME_TPM_METRICS_H_ |