xref: /netbsd-src/crypto/external/cpl/trousers/dist/src/tspi/tspi_pcr_comp12.c (revision 2d5f7628c5531eb583b9313ac2fd1cf8582b4479)
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
Tspi_PcrComposite_SetPcrLocality(TSS_HPCRS hPcrComposite,UINT32 LocalityValue)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
Tspi_PcrComposite_GetPcrLocality(TSS_HPCRS hPcrComposite,UINT32 * pLocalityValue)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
Tspi_PcrComposite_GetCompositeHash(TSS_HPCRS hPcrComposite,UINT32 * pLen,BYTE ** ppbHashData)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
Tspi_PcrComposite_SelectPcrIndexEx(TSS_HPCRS hPcrComposite,UINT32 ulPcrIndex,UINT32 Direction)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