blob: fcf7de663c5f00cf1eb17e49e102827da8802a6d [file] [log] [blame]
// 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_