/* * The Initial Developer of the Original Code is International * Business Machines Corporation. Portions created by IBM * Corporation are Copyright (C) 2005 International Business * Machines Corporation. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the Common Public License as published by * IBM Corporation; either version 1 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Common Public License for more details. * * You should have received a copy of the Common Public License * along with this program; if not, a copy can be viewed at * http://www.opensource.org/licenses/cpl1.0.php. */ #ifndef __TPM_TSPI_H #define __TPM_TSPI_H #include #include #include #include extern TSS_UUID SRK_UUID; #define NULL_HOBJECT 0 #define NULL_HKEY NULL_HOBJECT #define NULL_HPCRS NULL_HOBJECT //Display functions const char *displayKeyUsageMap(UINT32 a_uiData); const char *displayKeyFlagsMap(UINT32 a_uiFlags); const char *displayAuthUsageMap(UINT32 a_uiData); const char *displayAlgorithmMap(UINT32 a_uiData); const char *displayEncSchemeMap(UINT32 a_uiData); const char *displaySigSchemeMap(UINT32 a_uiData); TSS_RESULT displayKey(TSS_HKEY a_hKey); //Generic query functions BOOL isTpmOwned(TSS_HCONTEXT hContext); //TSPI logging functions void tspiDebug(const char *a_szName, TSS_RESULT a_iResult); void tspiError(const char *a_szName, TSS_RESULT a_iResult); void tspiResult(const char *a_szName, TSS_RESULT a_tResult); // Map a TSS_BOOL into a BOOL BOOL mapTssBool(TSS_BOOL a_bValue); //TSPI generic setup/teardown functions TSS_RESULT contextCreate(TSS_HCONTEXT * a_hContext); TSS_RESULT contextClose(TSS_HCONTEXT a_hContext); TSS_RESULT contextConnect(TSS_HCONTEXT a_hContext); TSS_RESULT contextCreateObject(TSS_HCONTEXT a_hContext, TSS_FLAG a_fType, TSS_FLAG a_fAttrs, TSS_HOBJECT * a_hObject); TSS_RESULT contextCloseObject(TSS_HCONTEXT a_hContext, TSS_HOBJECT a_hObject); TSS_RESULT contextGetTpm(TSS_HCONTEXT a_hContext, TSS_HTPM * a_hTpm); TSS_RESULT policyGet(TSS_HOBJECT a_hObject, TSS_HPOLICY * a_hPolicy); TSS_RESULT policyAssign(TSS_HPOLICY a_hPolicy, TSS_HOBJECT a_hObject); TSS_RESULT policySetSecret(TSS_HPOLICY a_hPolicy, UINT32 a_uiSecretLen, BYTE * a_chSecret); TSS_RESULT policyFlushSecret(TSS_HPOLICY a_hPolicy); //Common TSPI functions TSS_RESULT tpmGetPubEk(TSS_HTPM a_hTpm, TSS_BOOL a_fOwner, TSS_VALIDATION * a_pValData, TSS_HKEY * a_phEPubKey); TSS_RESULT tpmGetRandom(TSS_HTPM a_hTpm, UINT32 a_length, BYTE ** a_data); TSS_RESULT tpmSetStatus(TSS_HTPM a_hTpm, TSS_FLAG a_fStatus, TSS_BOOL a_bValue); TSS_RESULT tpmGetStatus(TSS_HTPM a_hTpm, TSS_FLAG a_fStatus, TSS_BOOL * a_bValue); TSS_RESULT getCapability(TSS_HTPM a_hTpm, TSS_FLAG a_fCapArea, UINT32 a_uiSubCapLen, BYTE * a_pSubCap, UINT32 * a_uiResultLen, BYTE ** a_pResult); TSS_RESULT getAttribData(TSS_HOBJECT a_hObject, TSS_FLAG a_fAttr, TSS_FLAG a_fSubAttr, UINT32 * a_uiSize, BYTE ** a_pData); TSS_RESULT getAttribUint32(TSS_HOBJECT a_hObject, TSS_FLAG a_fAttr, TSS_FLAG a_fSubAttr, UINT32 * a_uiData); //TSPI key functions TSS_RESULT keyLoadKey(TSS_HKEY a_hKey, TSS_HKEY a_hWrapKey); TSS_RESULT keyLoadKeyByUUID(TSS_HCONTEXT a_hContext, TSS_FLAG a_fStoreType, TSS_UUID a_uKeyId, TSS_HKEY * a_hKey); TSS_RESULT keyGetPubKey(TSS_HKEY a_hKey, UINT32 * a_uiKeyLen, BYTE ** a_pKey); TSS_RESULT keyGetKeyByUUID(TSS_HCONTEXT a_hContext, TSS_FLAG a_fStoreType, TSS_UUID a_uKeyId, TSS_HKEY * a_hKey); TSS_RESULT keyCreateKey(TSS_HKEY a_hKey, TSS_HKEY a_hWrapKey, TSS_HPCRS a_hPcrs); TSS_RESULT dataSeal(TSS_HENCDATA a_hEncdata, TSS_HKEY a_hKey, UINT32 a_len, BYTE * a_data, TSS_HPCRS a_hPcrs); TSS_RESULT tpmPcrRead(TSS_HTPM a_hTpm, UINT32 a_Idx, UINT32 *a_PcrSize, BYTE **a_PcrValue); TSS_RESULT pcrcompositeSetPcrValue(TSS_HPCRS a_hPcrs, UINT32 a_Idx, UINT32 a_PcrSize, BYTE *a_PcrValue); #ifdef TSS_LIB_IS_12 TSS_RESULT unloadVersionInfo(UINT64 *offset, BYTE *blob, TPM_CAP_VERSION_INFO *v); TSS_RESULT pcrcompositeSetPcrLocality(TSS_HPCRS a_hPcrs, UINT32 localityValue); TSS_RESULT NVDefineSpace(TSS_HNVSTORE hNVStore, TSS_HPCRS hReadPcrComposite, TSS_HPCRS hWritePcrComposite); TSS_RESULT NVReleaseSpace(TSS_HNVSTORE hNVStore); TSS_RESULT NVWriteValue(TSS_HNVSTORE hNVStore, UINT32 offset, UINT32 ulDataLength, BYTE *rgbDataToWrite); TSS_RESULT NVReadValue(TSS_HNVSTORE hNVStore, UINT32 offset, UINT32 *ulDataLength, BYTE **rgbDataRead); TSS_RESULT unloadNVDataPublic(UINT64 *offset, BYTE *blob, UINT32 bloblen, TPM_NV_DATA_PUBLIC *v); #endif #endif