/* * Licensed Materials - Property of IBM * * trousers - An open source TCG Software Stack * * (C) Copyright International Business Machines Corp. 2004-2007 * */ #include #include #include #include #include #include "trousers/tss.h" #include "trousers/trousers.h" #include "trousers_types.h" #include "trousers_types.h" #include "spi_utils.h" #include "capabilities.h" #include "tsplog.h" #include "obj.h" TSS_RESULT Tspi_GetPolicyObject(TSS_HOBJECT hObject, /* in */ TSS_FLAG policyType, /* in */ TSS_HPOLICY * phPolicy) /* out */ { TSS_RESULT result; if (phPolicy == NULL) return TSPERR(TSS_E_BAD_PARAMETER); if (obj_is_tpm(hObject)) { result = obj_tpm_get_policy(hObject, policyType, phPolicy); #ifdef TSS_BUILD_NV } else if (obj_is_nvstore(hObject)) { result = obj_nvstore_get_policy(hObject, policyType, phPolicy); #endif #ifdef TSS_BUILD_RSAKEY_LIST } else if (obj_is_rsakey(hObject)) { result = obj_rsakey_get_policy(hObject, policyType, phPolicy, NULL); #endif #ifdef TSS_BUILD_ENCDATA_LIST } else if (obj_is_encdata(hObject)) { result = obj_encdata_get_policy(hObject, policyType, phPolicy); #endif } else { if (obj_is_policy(hObject) || obj_is_hash(hObject) || obj_is_pcrs(hObject) || obj_is_context(hObject)) result = TSPERR(TSS_E_BAD_PARAMETER); else result = TSPERR(TSS_E_INVALID_HANDLE); } if (result == TSS_SUCCESS && *phPolicy == NULL_HPOLICY) result = TSPERR(TSS_E_INTERNAL_ERROR); return result; } TSS_RESULT Tspi_Policy_SetSecret(TSS_HPOLICY hPolicy, /* in */ TSS_FLAG secretMode, /* in */ UINT32 ulSecretLength, /* in */ BYTE * rgbSecret) /* in */ { TSS_RESULT result; TSS_HCONTEXT tspContext; if ((result = obj_policy_get_tsp_context(hPolicy, &tspContext))) return result; if (obj_context_is_silent(tspContext) && secretMode == TSS_SECRET_MODE_POPUP) return TSPERR(TSS_E_SILENT_CONTEXT); return obj_policy_set_secret(hPolicy, secretMode, ulSecretLength, rgbSecret); } TSS_RESULT Tspi_Policy_FlushSecret(TSS_HPOLICY hPolicy) /* in */ { return obj_policy_flush_secret(hPolicy); } TSS_RESULT Tspi_Policy_AssignToObject(TSS_HPOLICY hPolicy, /* in */ TSS_HOBJECT hObject) /* in */ { TSS_RESULT result; if (obj_is_tpm(hObject)) { result = obj_tpm_set_policy(hObject, hPolicy); #ifdef TSS_BUILD_NV } else if (obj_is_nvstore(hObject)) { result = obj_nvstore_set_policy(hObject, hPolicy); #endif #ifdef TSS_BUILD_RSAKEY_LIST } else if (obj_is_rsakey(hObject)) { result = obj_rsakey_set_policy(hObject, hPolicy); #endif #ifdef TSS_BUILD_ENCDATA_LIST } else if (obj_is_encdata(hObject)) { result = obj_encdata_set_policy(hObject, hPolicy); #endif } else { result = TSPERR(TSS_E_BAD_PARAMETER); } return result; }