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 24 TSS_RESULT 25 Tspi_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 35 TSS_RESULT 36 Tspi_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 46 TSS_RESULT 47 Tspi_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 58 TSS_RESULT 59 Tspi_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