예제 #1
0
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;
}
예제 #2
0
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;
  }
}