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)
