1 2/* 3 * Licensed Materials - Property of IBM 4 * 5 * trousers - An open source TCG Software Stack 6 * 7 * (C) Copyright International Business Machines Corp. 2007 8 * 9 */ 10 11#include <stdlib.h> 12#include <stdio.h> 13#include <string.h> 14 15#include "trousers/tss.h" 16#include "trousers/trousers.h" 17#include "trousers_types.h" 18#include "spi_utils.h" 19#include "capabilities.h" 20#include "tsplog.h" 21#include "obj.h" 22 23 24TSS_RESULT 25Tspi_PcrComposite_SetPcrLocality(TSS_HPCRS hPcrComposite, /* in */ 26 UINT32 LocalityValue) /* in */ 27{ 28 /* LocalityValue must be some combination of TPM_LOC_* values logically or'd together */ 29 if (!LocalityValue || (LocalityValue & (~TSS_LOCALITY_ALL))) 30 return TSPERR(TSS_E_BAD_PARAMETER); 31 32 return obj_pcrs_set_locality(hPcrComposite, LocalityValue); 33} 34 35TSS_RESULT 36Tspi_PcrComposite_GetPcrLocality(TSS_HPCRS hPcrComposite, /* in */ 37 UINT32* pLocalityValue) /* out */ 38{ 39 if (pLocalityValue == NULL) 40 return TSPERR(TSS_E_BAD_PARAMETER); 41 42 return obj_pcrs_get_locality(hPcrComposite, pLocalityValue); 43 44} 45 46TSS_RESULT 47Tspi_PcrComposite_GetCompositeHash(TSS_HPCRS hPcrComposite, /* in */ 48 UINT32* pLen, /* out */ 49 BYTE** ppbHashData) /* out */ 50{ 51 if (pLen == NULL || ppbHashData == NULL) 52 return TSPERR(TSS_E_BAD_PARAMETER); 53 54 return obj_pcrs_get_digest_at_release(hPcrComposite, pLen, ppbHashData); 55 56} 57 58TSS_RESULT 59Tspi_PcrComposite_SelectPcrIndexEx(TSS_HPCRS hPcrComposite, /* in */ 60 UINT32 ulPcrIndex, /* in */ 61 UINT32 Direction) /* in */ 62{ 63 if (Direction != TSS_PCRS_DIRECTION_CREATION && Direction != TSS_PCRS_DIRECTION_RELEASE) 64 return TSPERR(TSS_E_BAD_PARAMETER); 65 66 return obj_pcrs_select_index_ex(hPcrComposite, Direction, ulPcrIndex); 67} 68