/* Copyright (c) 2010 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.
 */

/* TPM error codes.
 *
 * Copy-pasted and lightly edited from TCG TPM Main Part 2 TPM Structures
 * Version 1.2 Level 2 Revision 103 26 October 2006 Draft.
 */

#ifndef TPM_ERROR_MESSAGES_H
#define TPM_ERROR_MESSAGES_H

#define TPM_E_BASE 0x0
#define TPM_E_NON_FATAL 0x800

typedef struct tpm_error_info {
	const char *name;
	uint32_t code;
	const char *description;
} tpm_error_info;

tpm_error_info tpm_error_table[] = {
	{"TPM_AUTHFAIL", TPM_E_BASE + 1,
	 "Authentication failed"},
	{"TPM_BADINDEX", TPM_E_BASE + 2,
	 "The index to a PCR, DIR or other register is incorrect"},
	{"TPM_BAD_PARAMETER", TPM_E_BASE + 3,
	 "One or more parameter is bad"},
	{"TPM_AUDITFAILURE", TPM_E_BASE + 4,
	 "An operation completed successfully\n\
but the auditing of that operation failed"},
	{"TPM_CLEAR_DISABLED", TPM_E_BASE + 5,
	 "The clear disable flag is set and all clear operations now require\n\
physical access"},
	{"TPM_DEACTIVATED", TPM_E_BASE + 6,
	 "The TPM is deactivated"},
	{"TPM_DISABLED", TPM_E_BASE + 7,
	 "The TPM is disabled"},
	{"TPM_DISABLED_CMD", TPM_E_BASE + 8,
	 "The target command has been disabled"},
	{"TPM_FAIL", TPM_E_BASE + 9,
	 "The operation failed"},
	{"TPM_BAD_ORDINAL", TPM_E_BASE + 10,
	 "The ordinal was unknown or inconsistent"},
	{"TPM_INSTALL_DISABLED", TPM_E_BASE + 11,
	 "The ability to install an owner is disabled"},
	{"TPM_INVALID_KEYHANDLE", TPM_E_BASE + 12,
	 "The key handle can not be interpreted"},
	{"TPM_KEYNOTFOUND", TPM_E_BASE + 13,
	 "The key handle points to an invalid key"},
	{"TPM_INAPPROPRIATE_ENC", TPM_E_BASE + 14,
	 "Unacceptable encryption scheme"},
	{"TPM_MIGRATEFAIL", TPM_E_BASE + 15,
	 "Migration authorization failed"},
	{"TPM_INVALID_PCR_INFO", TPM_E_BASE + 16,
	 "PCR information could not be interpreted"},
	{"TPM_NOSPACE", TPM_E_BASE + 17,
	 "No room to load key"},
	{"TPM_NOSRK", TPM_E_BASE + 18,
	 "There is no SRK set"},
	{"TPM_NOTSEALED_BLOB", TPM_E_BASE + 19,
	 "An encrypted blob is invalid or was not created by this TPM"},
	{"TPM_OWNER_SET", TPM_E_BASE + 20,
	 "There is already an Owner"},
	{"TPM_RESOURCES", TPM_E_BASE + 21,
	 "The TPM has insufficient internal resources to perform the requested action"},
	{"TPM_SHORTRANDOM", TPM_E_BASE + 22,
	 "A random string was too short"},
	{"TPM_SIZE", TPM_E_BASE + 23,
	 "The TPM does not have the space to perform the operation"},
	{"TPM_WRONGPCRVAL", TPM_E_BASE + 24,
	 "The named PCR value does not match the current PCR value"},
	{"TPM_BAD_PARAM_SIZE", TPM_E_BASE + 25,
	 "The paramSize argument to the command has the incorrect value"},
	{"TPM_SHA_THREAD", TPM_E_BASE + 26,
	 "There is no existing SHA-1 thread"},
	{"TPM_SHA_ERROR", TPM_E_BASE + 27,
	 "The calculation is unable to proceed because the existing SHA-1\n\
thread has already encountered an error"},
	{"TPM_FAILEDSELFTEST", TPM_E_BASE + 28,
	 "Self-test has failed and the TPM has shutdown"},
	{"TPM_AUTH2FAIL", TPM_E_BASE + 29,
	 "The authorization for the second key in a 2 key function\n\
failed authorization"},
	{"TPM_BADTAG", TPM_E_BASE + 30,
	 "The tag value sent to for a command is invalid"},
	{"TPM_IOERROR", TPM_E_BASE + 31,
	 "An IO error occurred transmitting information to the TPM"},
	{"TPM_ENCRYPT_ERROR", TPM_E_BASE + 32,
	 "The encryption process had a problem"},
	{"TPM_DECRYPT_ERROR", TPM_E_BASE + 33,
	 "The decryption process did not complete"},
	{"TPM_INVALID_AUTHHANDLE", TPM_E_BASE + 34,
	 "An invalid handle was used"},
	{"TPM_NO_ENDORSEMENT", TPM_E_BASE + 35,
	 "The TPM does not a EK installed"},
	{"TPM_INVALID_KEYUSAGE", TPM_E_BASE + 36,
	 "The usage of a key is not allowed"},
	{"TPM_WRONG_ENTITYTYPE", TPM_E_BASE + 37,
	 "The submitted entity type is not allowed"},
	{"TPM_INVALID_POSTINIT", TPM_E_BASE + 38,
	 "The command was received in the wrong sequence relative to TPM_Init\n\
and a subsequent TPM_Startup"},
	{"TPM_INAPPROPRIATE_SIG", TPM_E_BASE + 39,
	 "Signed data cannot include additional DER information"},
	{"TPM_BAD_KEY_PROPERTY", TPM_E_BASE + 40,
	 "The key properties in TPM_KEY_PARMs are not supported by this TPM"},
	{"TPM_BAD_MIGRATION", TPM_E_BASE + 41,
	 "The migration properties of this key are incorrect"},
	{"TPM_BAD_SCHEME", TPM_E_BASE + 42,
	 "The signature or encryption scheme for this key is incorrect or not\n\
permitted in this situation"},
	{"TPM_BAD_DATASIZE", TPM_E_BASE + 43,
	 "The size of the data (or blob) parameter is bad or inconsistent\n\
with the referenced key"},
	{"TPM_BAD_MODE", TPM_E_BASE + 44,
	 "A mode parameter is bad, such as capArea or subCapArea for\n\
TPM_GetCapability, physicalPresence parameter for TPM_PhysicalPresence,\n\
or migrationType for, TPM_CreateMigrationBlob"},
	{"TPM_BAD_PRESENCE", TPM_E_BASE + 45,
	 "Either the physicalPresence or physicalPresenceLock bits\n\
have the wrong value"},
	{"TPM_BAD_VERSION", TPM_E_BASE + 46,
	 "The TPM cannot perform this version of the capability"},
	{"TPM_NO_WRAP_TRANSPORT", TPM_E_BASE + 47,
	 "The TPM does not allow for wrapped transport sessions"},
	{"TPM_AUDITFAIL_UNSUCCESSFUL", TPM_E_BASE + 48,
	 "TPM audit construction failed and the underlying command\n\
was returning a failure code also"},
	{"TPM_AUDITFAIL_SUCCESSFUL", TPM_E_BASE + 49,
	 "TPM audit construction failed and the underlying command\n\
was returning success"},
	{"TPM_NOTRESETABLE", TPM_E_BASE + 50,
	 "Attempt to reset a PCR register that does not have the resettable attribute"},
	{"TPM_NOTLOCAL", TPM_E_BASE + 51,
	 "Attempt to reset a PCR register that requires locality\n\
and locality modifier not part of command transport"},
	{"TPM_BAD_TYPE", TPM_E_BASE + 52,
	 "Make identity blob not properly typed"},
	{"TPM_INVALID_RESOURCE", TPM_E_BASE + 53,
	 "When saving context identified resource type does not match actual resource"},
	{"TPM_NOTFIPS", TPM_E_BASE + 54,
	 "The TPM is attempting to execute a command only available when in FIPS mode"},
	{"TPM_INVALID_FAMILY", TPM_E_BASE + 55,
	 "The command is attempting to use an invalid family ID"},
	{"TPM_NO_NV_PERMISSION", TPM_E_BASE + 56,
	 "The permission to manipulate the NV storage is not available"},
	{"TPM_REQUIRES_SIGN", TPM_E_BASE + 57,
	 "The operation requires a signed command"},
	{"TPM_KEY_NOTSUPPORTED", TPM_E_BASE + 58,
	 "Wrong operation to load an NV key"},
	{"TPM_AUTH_CONFLICT", TPM_E_BASE + 59,
	 "NV_LoadKey blob requires both owner and blob authorization"},
	{"TPM_AREA_LOCKED", TPM_E_BASE + 60,
	 "The NV area is locked and not writable"},
	{"TPM_BAD_LOCALITY", TPM_E_BASE + 61,
	 "The locality is incorrect for the attempted operation"},
	{"TPM_READ_ONLY", TPM_E_BASE + 62,
	 "The NV area is read only and can't be written to"},
	{"TPM_PER_NOWRITE", TPM_E_BASE + 63,
	 "There is no protection on the write to the NV area"},
	{"TPM_FAMILYCOUNT", TPM_E_BASE + 64,
	 "The family count value does not match"},
	{"TPM_WRITE_LOCKED", TPM_E_BASE + 65,
	 "The NV area has already been written to"},
	{"TPM_BAD_ATTRIBUTES", TPM_E_BASE + 66,
	 "The NV area attributes conflict"},
	{"TPM_INVALID_STRUCTURE", TPM_E_BASE + 67,
	 "The structure tag and version are invalid or inconsistent"},
	{"TPM_KEY_OWNER_CONTROL", TPM_E_BASE + 68,
	 "The key is under control of the TPM Owner and can only be evicted\n\
by the TPM Owner"},
	{"TPM_BAD_COUNTER", TPM_E_BASE + 69,
	 "The counter handle is incorrect"},
	{"TPM_NOT_FULLWRITE", TPM_E_BASE + 70,
	 "The write is not a complete write of the area"},
	{"TPM_CONTEXT_GAP", TPM_E_BASE + 71,
	 "The gap between saved context counts is too large"},
	{"TPM_MAXNVWRITES", TPM_E_BASE + 72,
	 "The maximum number of NV writes without an owner has been exceeded"},
	{"TPM_NOOPERATOR", TPM_E_BASE + 73,
	 "No operator AuthData value is set"},
	{"TPM_RESOURCEMISSING", TPM_E_BASE + 74,
	 "The resource pointed to by context is not loaded"},
	{"TPM_DELEGATE_LOCK", TPM_E_BASE + 75,
	 "The delegate administration is locked"},
	{"TPM_DELEGATE_FAMILY", TPM_E_BASE + 76,
	 "Attempt to manage a family other then the delegated family"},
	{"TPM_DELEGATE_ADMIN", TPM_E_BASE + 77,
	 "Delegation table management not enabled"},
	{"TPM_TRANSPORT_NOTEXCLUSIVE", TPM_E_BASE + 78,
	 "There was a command executed outside of an exclusive transport session"},
	{"TPM_OWNER_CONTROL", TPM_E_BASE + 79,
	 "Attempt to context save a owner evict controlled key"},
	{"TPM_DAA_RESOURCES", TPM_E_BASE + 80,
	 "The DAA command has no resources available to execute the command"},
	{"TPM_DAA_INPUT_DATA0", TPM_E_BASE + 81,
	 "The consistency check on DAA parameter inputData0 has failed"},
	{"TPM_DAA_INPUT_DATA1", TPM_E_BASE + 82,
	 "The consistency check on DAA parameter inputData1 has failed"},
	{"TPM_DAA_ISSUER_SETTINGS", TPM_E_BASE + 83,
	 "The consistency check on DAA_issuerSettings has failed"},
	{"TPM_DAA_TPM_SETTINGS", TPM_E_BASE + 84,
	 "The consistency check on DAA_tpmSpecific has failed"},
	{"TPM_DAA_STAGE", TPM_E_BASE + 85,
	 "The atomic process indicated by the submitted DAA command is not\n\
the expected process"},
	{"TPM_DAA_ISSUER_VALIDITY", TPM_E_BASE + 86,
	 "The issuer's validity check has detected an inconsistency"},
	{"TPM_DAA_WRONG_W", TPM_E_BASE + 87,
	 "The consistency check on w has failed"},
	{"TPM_BAD_HANDLE", TPM_E_BASE + 88,
	 "The handle is incorrect"},
	{"TPM_BAD_DELEGATE", TPM_E_BASE + 89,
	 "Delegation is not correct"},
	{"TPM_BADCONTEXT", TPM_E_BASE + 90,
	 "The context blob is invalid"},
	{"TPM_TOOMANYCONTEXTS", TPM_E_BASE + 91,
	 "Too many contexts held by the TPM"},
	{"TPM_MA_TICKET_SIGNATURE", TPM_E_BASE + 92,
	 "Migration authority signature validation failure"},
	{"TPM_MA_DESTINATION", TPM_E_BASE + 93,
	 "Migration destination not authenticated"},
	{"TPM_MA_SOURCE", TPM_E_BASE + 94,
	 "Migration source incorrect"},
	{"TPM_MA_AUTHORITY", TPM_E_BASE + 95,
	 "Incorrect migration authority"},
	{"TPM_PERMANENTEK", TPM_E_BASE + 97,
	 "Attempt to revoke the EK and the EK is not revocable"},
	{"TPM_BAD_SIGNATURE", TPM_E_BASE + 98,
	 "Bad signature of CMK ticket"},
	{"TPM_NOCONTEXTSPACE", TPM_E_BASE + 99,
	 "There is no room in the context list for additional contexts"},
	{"TPM_RETRY", TPM_E_BASE + TPM_E_NON_FATAL,
	 "The TPM is too busy to respond to the command immediately, but\n\
the command could be resubmitted at a later time.  The TPM MAY\n\
return TPM_RETRY for any command at any time"},
	{"TPM_NEEDS_SELFTEST", TPM_E_BASE + TPM_E_NON_FATAL + 1,
	 "TPM_ContinueSelfTest has not been run"},
	{"TPM_DOING_SELFTEST", TPM_E_BASE + TPM_E_NON_FATAL + 2,
	 "The TPM is currently executing the actions of TPM_ContinueSelfTest\n\
because the ordinal required resources that have not been tested"},
	{"TPM_DEFEND_LOCK_RUNNING", TPM_E_BASE + TPM_E_NON_FATAL + 3,
	 "The TPM is defending against dictionary attacks and is in some\n\
time-out period"},
};

#endif				/* TPM_ERROR_MESSAGES_H */
