TSS_RESULT Tddli_GetCapability(UINT32 CapArea, UINT32 SubCap, BYTE* pCapBuf, UINT32* puntCapBufLen) { TSS_RESULT res = TDDL_SUCCESS; if (tddli_dh < 0) return TDDL_E_FAIL; tddli_mutex_lock(&tddli_lock); switch (CapArea) { case TDDL_CAP_VERSION: res = cap_version(SubCap, pCapBuf, puntCapBufLen); break; case TDDL_CAP_PROPERTY: res = cap_property(SubCap, pCapBuf, puntCapBufLen); break; default: res = TDDL_E_BAD_PARAMETER; } tddli_mutex_unlock(&tddli_lock); return res; }
TPM_RESULT TPM_GetCapability(TPM_CAPABILITY_AREA capArea, UINT32 subCapSize, BYTE *subCap, UINT32 *respSize, BYTE **resp) { info("TPM_GetCapability() (not fully implemented yet)"); switch (capArea) { case TPM_CAP_ORD: debug("[TPM_CAP_ORD]"); return cap_ord(subCapSize, subCap, respSize, resp); case TPM_CAP_ALG: debug("[TPM_CAP_ALG]"); return cap_alg(subCapSize, subCap, respSize, resp); case TPM_CAP_PID: debug("[TPM_CAP_PID]"); return cap_pid(subCapSize, subCap, respSize, resp); case TPM_CAP_FLAG: debug("[TPM_CAP_FLAG]"); return cap_flag(subCapSize, subCap, respSize, resp); case TPM_CAP_PROPERTY: debug("[TPM_CAP_PROPERTY]"); return cap_property(subCapSize, subCap, respSize, resp); case TPM_CAP_VERSION: debug("[TPM_CAP_VERSION]"); return cap_version(respSize, resp); case TPM_CAP_KEY_HANDLE: debug("[TPM_CAP_KEY_HANDLE]"); subCapSize = CPU_TO_BE32(TPM_RT_KEY); return cap_handle(4, (BYTE*)&subCapSize, respSize, resp); case TPM_CAP_CHECK_LOADED: debug("[TPM_CAP_CHECK_LOADED]"); return cap_loaded(subCapSize, subCap, respSize, resp); case TPM_CAP_SYM_MODE: debug("[TPM_CAP_SYM_MODE]"); /* TODO: TPM_CAP_SYM_MODE */ return TPM_FAIL; case TPM_CAP_KEY_STATUS: debug("[TPM_CAP_KEY_STATUS]"); /* TODO: TPM_CAP_KEY_STATUS */ return TPM_FAIL; case TPM_CAP_NV_LIST: debug("[TPM_CAP_NV_LIST]"); /* TODO: TPM_CAP_NV_LIST */ return TPM_FAIL; case TPM_CAP_MFR: debug("[TPM_CAP_MFR]"); return cap_mfr(respSize, resp); case TPM_CAP_NV_INDEX: debug("[TPM_CAP_NV_INDEX]"); /* TODO: TPM_CAP_NV_INDEX */ return TPM_FAIL; case TPM_CAP_TRANS_ALG: debug("[TPM_CAP_TRANS_ALG]"); /* TODO: TPM_CAP_TRANS_ALG */ return TPM_FAIL; case TPM_CAP_HANDLE: debug("[TPM_CAP_HANDLE]"); return cap_handle(subCapSize, subCap, respSize, resp); case TPM_CAP_TRANS_ES: debug("[TPM_CAP_TRANS_ES]"); /* TODO: TPM_CAP_TRANS_ES */ return TPM_FAIL; case TPM_CAP_AUTH_ENCRYPT: debug("[TPM_CAP_AUTH_ENCRYPT]"); return cap_auth_encrypt(subCapSize, subCap, respSize, resp); case TPM_CAP_SELECT_SIZE: debug("[TPM_CAP_SELECT_SIZE]"); /* TODO: TPM_CAP_SELECT_SIZE */ return TPM_FAIL; case TPM_CAP_VERSION_VAL: debug("[TPM_CAP_VERSION_VAL]"); return cap_version_val(respSize, resp); default: return TPM_BAD_MODE; } }