trousers: add string function for ordinal and error
Add function to convert ordinal and error to human-readable string.
BUG=b:255259293
TEST=build
Change-Id: Idda87f949ed0a8a7c0044797cbf81a9fb0ebf4f2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/trousers/+/4035875
Reviewed-by: Leo Lai <cylai@google.com>
Tested-by: Ching-Kang Yen <chingkang@chromium.org>
Commit-Queue: Ching-Kang Yen <chingkang@chromium.org>
diff --git a/src/include/trousers/trousers.h b/src/include/trousers/trousers.h
index 3dee970..23405c1 100644
--- a/src/include/trousers/trousers.h
+++ b/src/include/trousers/trousers.h
@@ -281,6 +281,13 @@
/* Error Functions */
+/* return a human readable string of enum TCSD_ORD */
+char *Trspi_Ordinal_String(UINT32 ord);
+
+/* return a human readable string of the error code or NULL for unknown
+ * command */
+char *Trspi_Error_Code_String(TSS_RESULT r);
+
/* return a human readable string based on the result */
char *Trspi_Error_String(TSS_RESULT);
diff --git a/src/trspi/trousers.c b/src/trspi/trousers.c
index 10e57f8..b938a82 100644
--- a/src/trspi/trousers.c
+++ b/src/trspi/trousers.c
@@ -31,6 +31,7 @@
#include "tsplog.h"
#include "obj.h"
#include "tcs_tsp.h"
+#include "tcsd_wrap.h"
void
Trspi_UnloadBlob_NONCE(UINT64 *offset, BYTE *blob, TPM_NONCE *n)
@@ -1815,6 +1816,351 @@
Trspi_LoadBlob(offset, payloadLength, blob, bd.payloadData);
}
+char *
+Trspi_Ordinal_String(UINT32 ord) {
+ switch(ord) {
+ case TCSD_ORD_ERROR: return "TCSD_ORD_ERROR";
+ case TCSD_ORD_OPENCONTEXT: return "TCSD_ORD_OPENCONTEXT";
+ case TCSD_ORD_CLOSECONTEXT: return "TCSD_ORD_CLOSECONTEXT";
+ case TCSD_ORD_FREEMEMORY: return "TCSD_ORD_FREEMEMORY";
+ case TCSD_ORD_TCSGETCAPABILITY: return "TCSD_ORD_TCSGETCAPABILITY";
+ case TCSD_ORD_REGISTERKEY: return "TCSD_ORD_REGISTERKEY";
+ case TCSD_ORD_UNREGISTERKEY: return "TCSD_ORD_UNREGISTERKEY";
+ case TCSD_ORD_ENUMREGISTEREDKEYS: return "TCSD_ORD_ENUMREGISTEREDKEYS";
+ case TCSD_ORD_GETREGISTEREDKEY: return "TCSD_ORD_GETREGISTEREDKEY";
+ case TCSD_ORD_GETREGISTEREDKEYBLOB: return "TCSD_ORD_GETREGISTEREDKEYBLOB";
+ case TCSD_ORD_GETREGISTEREDKEYBYPUBLICINFO: return "TCSD_ORD_GETREGISTEREDKEYBYPUBLICINFO";
+ case TCSD_ORD_LOADKEYBYBLOB: return "TCSD_ORD_LOADKEYBYBLOB";
+ case TCSD_ORD_LOADKEYBYUUID: return "TCSD_ORD_LOADKEYBYUUID";
+ case TCSD_ORD_EVICTKEY: return "TCSD_ORD_EVICTKEY";
+ case TCSD_ORD_CREATEWRAPKEY: return "TCSD_ORD_CREATEWRAPKEY";
+ case TCSD_ORD_GETPUBKEY: return "TCSD_ORD_GETPUBKEY";
+ case TCSD_ORD_MAKEIDENTITY: return "TCSD_ORD_MAKEIDENTITY";
+ case TCSD_ORD_LOGPCREVENT: return "TCSD_ORD_LOGPCREVENT";
+ case TCSD_ORD_GETPCREVENT: return "TCSD_ORD_GETPCREVENT";
+ case TCSD_ORD_GETPCREVENTBYPCR: return "TCSD_ORD_GETPCREVENTBYPCR";
+ case TCSD_ORD_GETPCREVENTLOG: return "TCSD_ORD_GETPCREVENTLOG";
+ case TCSD_ORD_SETOWNERINSTALL: return "TCSD_ORD_SETOWNERINSTALL";
+ case TCSD_ORD_TAKEOWNERSHIP: return "TCSD_ORD_TAKEOWNERSHIP";
+ case TCSD_ORD_OIAP: return "TCSD_ORD_OIAP";
+ case TCSD_ORD_OSAP: return "TCSD_ORD_OSAP";
+ case TCSD_ORD_CHANGEAUTH: return "TCSD_ORD_CHANGEAUTH";
+ case TCSD_ORD_CHANGEAUTHOWNER: return "TCSD_ORD_CHANGEAUTHOWNER";
+ case TCSD_ORD_CHANGEAUTHASYMSTART: return "TCSD_ORD_CHANGEAUTHASYMSTART";
+ case TCSD_ORD_CHANGEAUTHASYMFINISH: return "TCSD_ORD_CHANGEAUTHASYMFINISH";
+ case TCSD_ORD_TERMINATEHANDLE: return "TCSD_ORD_TERMINATEHANDLE";
+ case TCSD_ORD_ACTIVATETPMIDENTITY: return "TCSD_ORD_ACTIVATETPMIDENTITY";
+ case TCSD_ORD_EXTEND: return "TCSD_ORD_EXTEND";
+ case TCSD_ORD_PCRREAD: return "TCSD_ORD_PCRREAD";
+ case TCSD_ORD_QUOTE: return "TCSD_ORD_QUOTE";
+ case TCSD_ORD_DIRWRITEAUTH: return "TCSD_ORD_DIRWRITEAUTH";
+ case TCSD_ORD_DIRREAD: return "TCSD_ORD_DIRREAD";
+ case TCSD_ORD_SEAL: return "TCSD_ORD_SEAL";
+ case TCSD_ORD_UNSEAL: return "TCSD_ORD_UNSEAL";
+ case TCSD_ORD_UNBIND: return "TCSD_ORD_UNBIND";
+ case TCSD_ORD_CREATEMIGRATIONBLOB: return "TCSD_ORD_CREATEMIGRATIONBLOB";
+ case TCSD_ORD_CONVERTMIGRATIONBLOB: return "TCSD_ORD_CONVERTMIGRATIONBLOB";
+ case TCSD_ORD_AUTHORIZEMIGRATIONKEY: return "TCSD_ORD_AUTHORIZEMIGRATIONKEY";
+ case TCSD_ORD_CERTIFYKEY: return "TCSD_ORD_CERTIFYKEY";
+ case TCSD_ORD_SIGN: return "TCSD_ORD_SIGN";
+ case TCSD_ORD_GETRANDOM: return "TCSD_ORD_GETRANDOM";
+ case TCSD_ORD_STIRRANDOM: return "TCSD_ORD_STIRRANDOM";
+ case TCSD_ORD_GETCAPABILITY: return "TCSD_ORD_GETCAPABILITY";
+ case TCSD_ORD_GETCAPABILITYSIGNED: return "TCSD_ORD_GETCAPABILITYSIGNED";
+ case TCSD_ORD_GETCAPABILITYOWNER: return "TCSD_ORD_GETCAPABILITYOWNER";
+ case TCSD_ORD_CREATEENDORSEMENTKEYPAIR: return "TCSD_ORD_CREATEENDORSEMENTKEYPAIR";
+ case TCSD_ORD_READPUBEK: return "TCSD_ORD_READPUBEK";
+ case TCSD_ORD_DISABLEPUBEKREAD: return "TCSD_ORD_DISABLEPUBEKREAD";
+ case TCSD_ORD_OWNERREADPUBEK: return "TCSD_ORD_OWNERREADPUBEK";
+ case TCSD_ORD_SELFTESTFULL: return "TCSD_ORD_SELFTESTFULL";
+ case TCSD_ORD_CERTIFYSELFTEST: return "TCSD_ORD_CERTIFYSELFTEST";
+ case TCSD_ORD_CONTINUESELFTEST: return "TCSD_ORD_CONTINUESELFTEST";
+ case TCSD_ORD_GETTESTRESULT: return "TCSD_ORD_GETTESTRESULT";
+ case TCSD_ORD_OWNERSETDISABLE: return "TCSD_ORD_OWNERSETDISABLE";
+ case TCSD_ORD_OWNERCLEAR: return "TCSD_ORD_OWNERCLEAR";
+ case TCSD_ORD_DISABLEOWNERCLEAR: return "TCSD_ORD_DISABLEOWNERCLEAR";
+ case TCSD_ORD_FORCECLEAR: return "TCSD_ORD_FORCECLEAR";
+ case TCSD_ORD_DISABLEFORCECLEAR: return "TCSD_ORD_DISABLEFORCECLEAR";
+ case TCSD_ORD_PHYSICALDISABLE: return "TCSD_ORD_PHYSICALDISABLE";
+ case TCSD_ORD_PHYSICALENABLE: return "TCSD_ORD_PHYSICALENABLE";
+ case TCSD_ORD_PHYSICALSETDEACTIVATED: return "TCSD_ORD_PHYSICALSETDEACTIVATED";
+ case TCSD_ORD_SETTEMPDEACTIVATED: return "TCSD_ORD_SETTEMPDEACTIVATED";
+ case TCSD_ORD_PHYSICALPRESENCE: return "TCSD_ORD_PHYSICALPRESENCE";
+ case TCSD_ORD_FIELDUPGRADE: return "TCSD_ORD_FIELDUPGRADE";
+ case TCSD_ORD_SETRIDIRECTION: return "TCSD_ORD_SETRIDIRECTION";
+ case TCSD_ORD_CREATEMAINTENANCEARCHIVE: return "TCSD_ORD_CREATEMAINTENANCEARCHIVE";
+ case TCSD_ORD_LOADMAINTENANCEARCHIVE: return "TCSD_ORD_LOADMAINTENANCEARCHIVE";
+ case TCSD_ORD_KILLMAINTENANCEFEATURE: return "TCSD_ORD_KILLMAINTENANCEFEATURE";
+ case TCSD_ORD_LOADMANUFACTURERMAINTENANCEPUB: return "TCSD_ORD_LOADMANUFACTURERMAINTENANCEPUB";
+ case TCSD_ORD_READMANUFACTURERMAINTENANCEPUB: return "TCSD_ORD_READMANUFACTURERMAINTENANCEPUB";
+ case TCSD_ORD_DAAJOIN: return "TCSD_ORD_DAAJOIN";
+ case TCSD_ORD_DAASIGN: return "TCSD_ORD_DAASIGN";
+ case TCSD_ORD_SETCAPABILITY: return "TCSD_ORD_SETCAPABILITY";
+ case TCSD_ORD_RESETLOCKVALUE: return "TCSD_ORD_RESETLOCKVALUE";
+ case TCSD_ORD_PCRRESET: return "TCSD_ORD_PCRRESET";
+ case TCSD_ORD_READCOUNTER: return "TCSD_ORD_READCOUNTER";
+ case TCSD_ORD_CREATECOUNTER: return "TCSD_ORD_CREATECOUNTER";
+ case TCSD_ORD_INCREMENTCOUNTER: return "TCSD_ORD_INCREMENTCOUNTER";
+ case TCSD_ORD_RELEASECOUNTER: return "TCSD_ORD_RELEASECOUNTER";
+ case TCSD_ORD_RELEASECOUNTEROWNER: return "TCSD_ORD_RELEASECOUNTEROWNER";
+ case TCSD_ORD_READCURRENTTICKS: return "TCSD_ORD_READCURRENTTICKS";
+ case TCSD_ORD_TICKSTAMPBLOB: return "TCSD_ORD_TICKSTAMPBLOB";
+ case TCSD_ORD_GETCREDENTIAL: return "TCSD_ORD_GETCREDENTIAL";
+ case TCSD_ORD_NVDEFINEORRELEASESPACE: return "TCSD_ORD_NVDEFINEORRELEASESPACE";
+ case TCSD_ORD_NVWRITEVALUE: return "TCSD_ORD_NVWRITEVALUE";
+ case TCSD_ORD_NVWRITEVALUEAUTH: return "TCSD_ORD_NVWRITEVALUEAUTH";
+ case TCSD_ORD_NVREADVALUE: return "TCSD_ORD_NVREADVALUE";
+ case TCSD_ORD_NVREADVALUEAUTH: return "TCSD_ORD_NVREADVALUEAUTH";
+ case TCSD_ORD_ESTABLISHTRANSPORT: return "TCSD_ORD_ESTABLISHTRANSPORT";
+ case TCSD_ORD_EXECUTETRANSPORT: return "TCSD_ORD_EXECUTETRANSPORT";
+ case TCSD_ORD_RELEASETRANSPORTSIGNED: return "TCSD_ORD_RELEASETRANSPORTSIGNED";
+ case TCSD_ORD_SETORDINALAUDITSTATUS: return "TCSD_ORD_SETORDINALAUDITSTATUS";
+ case TCSD_ORD_GETAUDITDIGEST: return "TCSD_ORD_GETAUDITDIGEST";
+ case TCSD_ORD_GETAUDITDIGESTSIGNED: return "TCSD_ORD_GETAUDITDIGESTSIGNED";
+ case TCSD_ORD_SEALX: return "TCSD_ORD_SEALX";
+ case TCSD_ORD_SETOPERATORAUTH: return "TCSD_ORD_SETOPERATORAUTH";
+ case TCSD_ORD_OWNERREADINTERNALPUB: return "TCSD_ORD_OWNERREADINTERNALPUB";
+ case TCSD_ORD_ENUMREGISTEREDKEYS2: return "TCSD_ORD_ENUMREGISTEREDKEYS2";
+ case TCSD_ORD_SETTEMPDEACTIVATED2: return "TCSD_ORD_SETTEMPDEACTIVATED2";
+ case TCSD_ORD_DELEGATE_MANAGE: return "TCSD_ORD_DELEGATE_MANAGE";
+ case TCSD_ORD_DELEGATE_CREATEKEYDELEGATION: return "TCSD_ORD_DELEGATE_CREATEKEYDELEGATION";
+ case TCSD_ORD_DELEGATE_CREATEOWNERDELEGATION: return "TCSD_ORD_DELEGATE_CREATEOWNERDELEGATION";
+ case TCSD_ORD_DELEGATE_LOADOWNERDELEGATION: return "TCSD_ORD_DELEGATE_LOADOWNERDELEGATION";
+ case TCSD_ORD_DELEGATE_READTABLE: return "TCSD_ORD_DELEGATE_READTABLE";
+ case TCSD_ORD_DELEGATE_UPDATEVERIFICATIONCOUNT: return "TCSD_ORD_DELEGATE_UPDATEVERIFICATIONCOUNT";
+ case TCSD_ORD_DELEGATE_VERIFYDELEGATION: return "TCSD_ORD_DELEGATE_VERIFYDELEGATION";
+ case TCSD_ORD_CREATEREVOCABLEENDORSEMENTKEYPAIR: return "TCSD_ORD_CREATEREVOCABLEENDORSEMENTKEYPAIR";
+ case TCSD_ORD_REVOKEENDORSEMENTKEYPAIR: return "TCSD_ORD_REVOKEENDORSEMENTKEYPAIR";
+ case TCSD_ORD_MAKEIDENTITY2: return "TCSD_ORD_MAKEIDENTITY2";
+ case TCSD_ORD_QUOTE2: return "TCSD_ORD_QUOTE2";
+ case TCSD_ORD_CMK_SETRESTRICTIONS: return "TCSD_ORD_CMK_SETRESTRICTIONS";
+ case TCSD_ORD_CMK_APPROVEMA: return "TCSD_ORD_CMK_APPROVEMA";
+ case TCSD_ORD_CMK_CREATEKEY: return "TCSD_ORD_CMK_CREATEKEY";
+ case TCSD_ORD_CMK_CREATETICKET: return "TCSD_ORD_CMK_CREATETICKET";
+ case TCSD_ORD_CMK_CREATEBLOB: return "TCSD_ORD_CMK_CREATEBLOB";
+ case TCSD_ORD_CMK_CONVERTMIGRATION: return "TCSD_ORD_CMK_CONVERTMIGRATION";
+ case TCSD_ORD_FLUSHSPECIFIC: return "TCSD_ORD_FLUSHSPECIFIC";
+ case TCSD_ORD_KEYCONTROLOWNER: return "TCSD_ORD_KEYCONTROLOWNER";
+ case TCSD_ORD_DSAP: return "TCSD_ORD_DSAP";
+ default: return NULL;
+ }
+ return NULL;
+}
+
+char *
+Trspi_Error_Code_String(TSS_RESULT r) {
+ if (TSS_ERROR_CODE(r) == TSS_SUCCESS) {
+ return "TSS_SUCCESS";
+ }
+ if (TSS_ERROR_LAYER(r) == TSS_LAYER_TPM) {
+ switch (TSS_ERROR_CODE(r)) {
+ case TPM_E_AUTHFAIL: return "TPM_E_AUTHFAIL";
+ case TPM_E_BAD_PARAMETER: return "TPM_E_BAD_PARAMETER";
+ case TPM_E_BADINDEX: return "TPM_E_BADINDEX";
+ case TPM_E_AUDITFAILURE: return "TPM_E_AUDITFAILURE";
+ case TPM_E_CLEAR_DISABLED: return "TPM_E_CLEAR_DISABLED";
+ case TPM_E_DEACTIVATED: return "TPM_E_DEACTIVATED";
+ case TPM_E_DISABLED: return "TPM_E_DISABLED";
+ case TPM_E_FAIL: return "TPM_E_FAIL";
+ case TPM_E_BAD_ORDINAL: return "TPM_E_BAD_ORDINAL";
+ case TPM_E_INSTALL_DISABLED: return "TPM_E_INSTALL_DISABLED";
+ case TPM_E_INVALID_KEYHANDLE: return "TPM_E_INVALID_KEYHANDLE";
+ case TPM_E_KEYNOTFOUND: return "TPM_E_KEYNOTFOUND";
+ case TPM_E_INAPPROPRIATE_ENC: return "TPM_E_INAPPROPRIATE_ENC";
+ case TPM_E_MIGRATEFAIL: return "TPM_E_MIGRATEFAIL";
+ case TPM_E_INVALID_PCR_INFO: return "TPM_E_INVALID_PCR_INFO";
+ case TPM_E_NOSPACE: return "TPM_E_NOSPACE";
+ case TPM_E_NOSRK: return "TPM_E_NOSRK";
+ case TPM_E_NOTSEALED_BLOB: return "TPM_E_NOTSEALED_BLOB";
+ case TPM_E_OWNER_SET: return "TPM_E_OWNER_SET";
+ case TPM_E_RESOURCES: return "TPM_E_RESOURCES";
+ case TPM_E_SHORTRANDOM: return "TPM_E_SHORTRANDOM";
+ case TPM_E_SIZE: return "TPM_E_SIZE";
+ case TPM_E_WRONGPCRVAL: return "TPM_E_WRONGPCRVAL";
+ case TPM_E_BAD_PARAM_SIZE: return "TPM_E_BAD_PARAM_SIZE";
+ case TPM_E_SHA_THREAD: return "TPM_E_SHA_THREAD";
+ case TPM_E_SHA_ERROR: return "TPM_E_SHA_ERROR";
+ case TPM_E_FAILEDSELFTEST: return "TPM_E_FAILEDSELFTEST";
+ case TPM_E_AUTH2FAIL: return "TPM_E_AUTH2FAIL";
+ case TPM_E_BADTAG: return "TPM_E_BADTAG";
+ case TPM_E_IOERROR: return "TPM_E_IOERROR";
+ case TPM_E_ENCRYPT_ERROR: return "TPM_E_ENCRYPT_ERROR";
+ case TPM_E_DECRYPT_ERROR: return "TPM_E_DECRYPT_ERROR";
+ case TPM_E_INVALID_AUTHHANDLE: return "TPM_E_INVALID_AUTHHANDLE";
+ case TPM_E_NO_ENDORSEMENT: return "TPM_E_NO_ENDORSEMENT";
+ case TPM_E_INVALID_KEYUSAGE: return "TPM_E_INVALID_KEYUSAGE";
+ case TPM_E_WRONG_ENTITYTYPE: return "TPM_E_WRONG_ENTITYTYPE";
+ case TPM_E_INVALID_POSTINIT: return "TPM_E_INVALID_POSTINIT";
+ case TPM_E_INAPPROPRIATE_SIG: return "TPM_E_INAPPROPRIATE_SIG";
+ case TPM_E_BAD_KEY_PROPERTY: return "TPM_E_BAD_KEY_PROPERTY";
+ case TPM_E_BAD_MIGRATION: return "TPM_E_BAD_MIGRATION";
+ case TPM_E_BAD_SCHEME: return "TPM_E_BAD_SCHEME";
+ case TPM_E_BAD_DATASIZE: return "TPM_E_BAD_DATASIZE";
+ case TPM_E_BAD_MODE: return "TPM_E_BAD_MODE";
+ case TPM_E_BAD_PRESENCE: return "TPM_E_BAD_PRESENCE";
+ case TPM_E_BAD_VERSION: return "TPM_E_BAD_VERSION";
+ case TPM_E_NO_WRAP_TRANSPORT: return "TPM_E_NO_WRAP_TRANSPORT";
+ case TPM_E_AUDITFAIL_UNSUCCESSFUL: return "TPM_E_AUDITFAIL_UNSUCCESSFUL";
+ case TPM_E_AUDITFAIL_SUCCESSFUL: return "TPM_E_AUDITFAIL_SUCCESSFUL";
+ case TPM_E_NOTRESETABLE: return "TPM_E_NOTRESETABLE";
+ case TPM_E_NOTLOCAL: return "TPM_E_NOTLOCAL";
+ case TPM_E_BAD_TYPE: return "TPM_E_BAD_TYPE";
+ case TPM_E_INVALID_RESOURCE: return "TPM_E_INVALID_RESOURCE";
+ case TPM_E_NOTFIPS: return "TPM_E_NOTFIPS";
+ case TPM_E_INVALID_FAMILY: return "TPM_E_INVALID_FAMILY";
+ case TPM_E_NO_NV_PERMISSION: return "TPM_E_NO_NV_PERMISSION";
+ case TPM_E_REQUIRES_SIGN: return "TPM_E_REQUIRES_SIGN";
+ case TPM_E_KEY_NOTSUPPORTED: return "TPM_E_KEY_NOTSUPPORTED";
+ case TPM_E_AUTH_CONFLICT: return "TPM_E_AUTH_CONFLICT";
+ case TPM_E_AREA_LOCKED: return "TPM_E_AREA_LOCKED";
+ case TPM_E_BAD_LOCALITY: return "TPM_E_BAD_LOCALITY";
+ case TPM_E_READ_ONLY: return "TPM_E_READ_ONLY";
+ case TPM_E_PER_NOWRITE: return "TPM_E_PER_NOWRITE";
+ case TPM_E_FAMILYCOUNT: return "TPM_E_FAMILYCOUNT";
+ case TPM_E_WRITE_LOCKED: return "TPM_E_WRITE_LOCKED";
+ case TPM_E_BAD_ATTRIBUTES: return "TPM_E_BAD_ATTRIBUTES";
+ case TPM_E_INVALID_STRUCTURE: return "TPM_E_INVALID_STRUCTURE";
+ case TPM_E_KEY_OWNER_CONTROL: return "TPM_E_KEY_OWNER_CONTROL";
+ case TPM_E_BAD_COUNTER: return "TPM_E_BAD_COUNTER";
+ case TPM_E_NOT_FULLWRITE: return "TPM_E_NOT_FULLWRITE";
+ case TPM_E_CONTEXT_GAP: return "TPM_E_CONTEXT_GAP";
+ case TPM_E_MAXNVWRITES: return "TPM_E_MAXNVWRITES";
+ case TPM_E_NOOPERATOR: return "TPM_E_NOOPERATOR";
+ case TPM_E_RESOURCEMISSING: return "TPM_E_RESOURCEMISSING";
+ case TPM_E_DELEGATE_LOCK: return "TPM_E_DELEGATE_LOCK";
+ case TPM_E_DELEGATE_FAMILY: return "TPM_E_DELEGATE_FAMILY";
+ case TPM_E_DELEGATE_ADMIN: return "TPM_E_DELEGATE_ADMIN";
+ case TPM_E_TRANSPORT_NOTEXCLUSIVE: return "TPM_E_TRANSPORT_NOTEXCLUSIVE";
+ case TPM_E_OWNER_CONTROL: return "TPM_E_OWNER_CONTROL";
+ case TPM_E_DAA_RESOURCES: return "TPM_E_DAA_RESOURCES";
+ case TPM_E_DAA_INPUT_DATA0: return "TPM_E_DAA_INPUT_DATA0";
+ case TPM_E_DAA_INPUT_DATA1: return "TPM_E_DAA_INPUT_DATA1";
+ case TPM_E_DAA_ISSUER_SETTINGS: return "TPM_E_DAA_ISSUER_SETTINGS";
+ case TPM_E_DAA_TPM_SETTINGS: return "TPM_E_DAA_TPM_SETTINGS";
+ case TPM_E_DAA_STAGE: return "TPM_E_DAA_STAGE";
+ case TPM_E_DAA_ISSUER_VALIDITY: return "TPM_E_DAA_ISSUER_VALIDITY";
+ case TPM_E_DAA_WRONG_W: return "TPM_E_DAA_WRONG_W";
+ case TPM_E_BAD_HANDLE: return "TPM_E_BAD_HANDLE";
+ case TPM_E_BAD_DELEGATE: return "TPM_E_BAD_DELEGATE";
+ case TPM_E_BADCONTEXT: return "TPM_E_BADCONTEXT";
+ case TPM_E_TOOMANYCONTEXTS: return "TPM_E_TOOMANYCONTEXTS";
+ case TPM_E_MA_TICKET_SIGNATURE: return "TPM_E_MA_TICKET_SIGNATURE";
+ case TPM_E_MA_DESTINATION: return "TPM_E_MA_DESTINATION";
+ case TPM_E_MA_SOURCE: return "TPM_E_MA_SOURCE";
+ case TPM_E_MA_AUTHORITY: return "TPM_E_MA_AUTHORITY";
+ case TPM_E_PERMANENTEK: return "TPM_E_PERMANENTEK";
+ case TPM_E_BAD_SIGNATURE: return "TPM_E_BAD_SIGNATURE";
+ case TPM_E_NOCONTEXTSPACE: return "TPM_E_NOCONTEXTSPACE";
+ case TPM_E_RETRY: return "TPM_E_RETRY";
+ case TPM_E_NEEDS_SELFTEST: return "TPM_E_NEEDS_SELFTEST";
+ case TPM_E_DOING_SELFTEST: return "TPM_E_DOING_SELFTEST";
+ case TPM_E_DEFEND_LOCK_RUNNING: return "TPM_E_DEFEND_LOCK_RUNNING";
+ case TPM_E_DISABLED_CMD: return "TPM_E_DISABLED_CMD";
+ default: return NULL;
+ }
+ } else if (TSS_ERROR_LAYER(r) == TSS_LAYER_TDDL) {
+ switch (TSS_ERROR_CODE(r)) {
+ case TSS_E_FAIL: return "TSS_E_FAIL";
+ case TSS_E_BAD_PARAMETER: return "TSS_E_BAD_PARAMETER";
+ case TSS_E_INTERNAL_ERROR: return "TSS_E_INTERNAL_ERROR";
+ case TSS_E_NOTIMPL: return "TSS_E_NOTIMPL";
+ case TSS_E_PS_KEY_NOTFOUND: return "TSS_E_PS_KEY_NOTFOUND";
+ case TSS_E_KEY_ALREADY_REGISTERED: return "TSS_E_KEY_ALREADY_REGISTERED";
+ case TSS_E_CANCELED: return "TSS_E_CANCELED";
+ case TSS_E_TIMEOUT: return "TSS_E_TIMEOUT";
+ case TSS_E_OUTOFMEMORY: return "TSS_E_OUTOFMEMORY";
+ case TSS_E_TPM_UNEXPECTED: return "TSS_E_TPM_UNEXPECTED";
+ case TSS_E_COMM_FAILURE: return "TSS_E_COMM_FAILURE";
+ case TSS_E_TPM_UNSUPPORTED_FEATURE: return "TSS_E_TPM_UNSUPPORTED_FEATURE";
+ case TDDL_E_COMPONENT_NOT_FOUND: return "TDDL_E_COMPONENT_NOT_FOUND";
+ case TDDL_E_ALREADY_OPENED: return "TDDL_E_ALREADY_OPENED";
+ case TDDL_E_BADTAG: return "TDDL_E_BADTAG";
+ case TDDL_E_INSUFFICIENT_BUFFER: return "TDDL_E_INSUFFICIENT_BUFFER";
+ case TDDL_E_COMMAND_COMPLETED: return "TDDL_E_COMMAND_COMPLETED";
+ case TDDL_E_COMMAND_ABORTED: return "TDDL_E_COMMAND_ABORTED";
+ case TDDL_E_ALREADY_CLOSED: return "TDDL_E_ALREADY_CLOSED";
+ case TDDL_E_IOERROR: return "TDDL_E_IOERROR";
+ default: return NULL;
+ }
+ } else if (TSS_ERROR_LAYER(r) == TSS_LAYER_TCS) {
+ switch (TSS_ERROR_CODE(r)) {
+ case TSS_E_FAIL: return "TSS_E_FAIL";
+ case TSS_E_BAD_PARAMETER: return "TSS_E_BAD_PARAMETER";
+ case TSS_E_INTERNAL_ERROR: return "TSS_E_INTERNAL_ERROR";
+ case TSS_E_NOTIMPL: return "TSS_E_NOTIMPL";
+ case TSS_E_PS_KEY_NOTFOUND: return "TSS_E_PS_KEY_NOTFOUND";
+ case TSS_E_KEY_ALREADY_REGISTERED: return "TSS_E_KEY_ALREADY_REGISTERED";
+ case TSS_E_CANCELED: return "TSS_E_CANCELED";
+ case TSS_E_TIMEOUT: return "TSS_E_TIMEOUT";
+ case TSS_E_OUTOFMEMORY: return "TSS_E_OUTOFMEMORY";
+ case TSS_E_TPM_UNEXPECTED: return "TSS_E_TPM_UNEXPECTED";
+ case TSS_E_COMM_FAILURE: return "TSS_E_COMM_FAILURE";
+ case TSS_E_TPM_UNSUPPORTED_FEATURE: return "TSS_E_TPM_UNSUPPORTED_FEATURE";
+ case TCS_E_KEY_MISMATCH: return "TCS_E_KEY_MISMATCH";
+ case TCS_E_KM_LOADFAILED: return "TCS_E_KM_LOADFAILED";
+ case TCS_E_KEY_CONTEXT_RELOAD: return "TCS_E_KEY_CONTEXT_RELOAD";
+ case TCS_E_BAD_INDEX: return "TCS_E_BAD_INDEX";
+ case TCS_E_INVALID_CONTEXTHANDLE: return "TCS_E_INVALID_CONTEXTHANDLE";
+ case TCS_E_INVALID_KEYHANDLE: return "TCS_E_INVALID_KEYHANDLE";
+ case TCS_E_INVALID_AUTHHANDLE: return "TCS_E_INVALID_AUTHHANDLE";
+ case TCS_E_INVALID_AUTHSESSION: return "TCS_E_INVALID_AUTHSESSION";
+ case TCS_E_INVALID_KEY: return "TCS_E_INVALID_KEY";
+ default: return NULL;
+ }
+ } else {
+ switch (TSS_ERROR_CODE(r)) {
+ case TSS_E_FAIL: return "TSS_E_FAIL";
+ case TSS_E_BAD_PARAMETER: return "TSS_E_BAD_PARAMETER";
+ case TSS_E_INTERNAL_ERROR: return "TSS_E_INTERNAL_ERROR";
+ case TSS_E_NOTIMPL: return "TSS_E_NOTIMPL";
+ case TSS_E_PS_KEY_NOTFOUND: return "TSS_E_PS_KEY_NOTFOUND";
+ case TSS_E_KEY_ALREADY_REGISTERED: return "TSS_E_KEY_ALREADY_REGISTERED";
+ case TSS_E_CANCELED: return "TSS_E_CANCELED";
+ case TSS_E_TIMEOUT: return "TSS_E_TIMEOUT";
+ case TSS_E_OUTOFMEMORY: return "TSS_E_OUTOFMEMORY";
+ case TSS_E_TPM_UNEXPECTED: return "TSS_E_TPM_UNEXPECTED";
+ case TSS_E_COMM_FAILURE: return "TSS_E_COMM_FAILURE";
+ case TSS_E_TPM_UNSUPPORTED_FEATURE: return "TSS_E_TPM_UNSUPPORTED_FEATURE";
+ case TSS_E_INVALID_OBJECT_TYPE: return "TSS_E_INVALID_OBJECT_TYPE";
+ case TSS_E_INVALID_OBJECT_INITFLAG: return "TSS_E_INVALID_OBJECT_INITFLAG";
+ case TSS_E_INVALID_HANDLE: return "TSS_E_INVALID_HANDLE";
+ case TSS_E_NO_CONNECTION: return "TSS_E_NO_CONNECTION";
+ case TSS_E_CONNECTION_FAILED: return "TSS_E_CONNECTION_FAILED";
+ case TSS_E_CONNECTION_BROKEN: return "TSS_E_CONNECTION_BROKEN";
+ case TSS_E_HASH_INVALID_ALG: return "TSS_E_HASH_INVALID_ALG";
+ case TSS_E_HASH_INVALID_LENGTH: return "TSS_E_HASH_INVALID_LENGTH";
+ case TSS_E_HASH_NO_DATA: return "TSS_E_HASH_NO_DATA";
+ case TSS_E_SILENT_CONTEXT: return "TSS_E_SILENT_CONTEXT";
+ case TSS_E_INVALID_ATTRIB_FLAG: return "TSS_E_INVALID_ATTRIB_FLAG";
+ case TSS_E_INVALID_ATTRIB_SUBFLAG: return "TSS_E_INVALID_ATTRIB_SUBFLAG";
+ case TSS_E_INVALID_ATTRIB_DATA: return "TSS_E_INVALID_ATTRIB_DATA";
+ case TSS_E_NO_PCRS_SET: return "TSS_E_NO_PCRS_SET";
+ case TSS_E_KEY_NOT_LOADED: return "TSS_E_KEY_NOT_LOADED";
+ case TSS_E_KEY_NOT_SET: return "TSS_E_KEY_NOT_SET";
+ case TSS_E_VALIDATION_FAILED: return "TSS_E_VALIDATION_FAILED";
+ case TSS_E_TSP_AUTHREQUIRED: return "TSS_E_TSP_AUTHREQUIRED";
+ case TSS_E_TSP_AUTH2REQUIRED: return "TSS_E_TSP_AUTH2REQUIRED";
+ case TSS_E_TSP_AUTHFAIL: return "TSS_E_TSP_AUTHFAIL";
+ case TSS_E_TSP_AUTH2FAIL: return "TSS_E_TSP_AUTH2FAIL";
+ case TSS_E_KEY_NO_MIGRATION_POLICY: return "TSS_E_KEY_NO_MIGRATION_POLICY";
+ case TSS_E_POLICY_NO_SECRET: return "TSS_E_POLICY_NO_SECRET";
+ case TSS_E_INVALID_OBJ_ACCESS: return "TSS_E_INVALID_OBJ_ACCESS";
+ case TSS_E_INVALID_ENCSCHEME: return "TSS_E_INVALID_ENCSCHEME";
+ case TSS_E_INVALID_SIGSCHEME: return "TSS_E_INVALID_SIGSCHEME";
+ case TSS_E_ENC_INVALID_LENGTH: return "TSS_E_ENC_INVALID_LENGTH";
+ case TSS_E_ENC_NO_DATA: return "TSS_E_ENC_NO_DATA";
+ case TSS_E_ENC_INVALID_TYPE: return "TSS_E_ENC_INVALID_TYPE";
+ case TSS_E_INVALID_KEYUSAGE: return "TSS_E_INVALID_KEYUSAGE";
+ case TSS_E_VERIFICATION_FAILED: return "TSS_E_VERIFICATION_FAILED";
+ case TSS_E_HASH_NO_IDENTIFIER: return "TSS_E_HASH_NO_IDENTIFIER";
+ case TSS_E_NV_AREA_EXIST: return "TSS_E_NV_AREA_EXIST";
+ case TSS_E_NV_AREA_NOT_EXIST: return "TSS_E_NV_AREA_NOT_EXIST";
+ default: return NULL;
+ }
+ }
+ return NULL;
+}
+
/* function to mimic strerror with TSS error codes */
char *
Trspi_Error_String(TSS_RESULT r)