xref: /netbsd-src/crypto/external/cpl/trousers/dist/src/tspi/tspi_hash.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. 2004-2006
8  *
9  */
10 
11 
12 #include <stdlib.h>
13 #include <stdio.h>
14 #include <string.h>
15 
16 #include "trousers/tss.h"
17 #include "trousers/trousers.h"
18 #include "trousers_types.h"
19 #include "spi_utils.h"
20 #include "capabilities.h"
21 #include "tsplog.h"
22 #include "obj.h"
23 
24 
25 TSS_RESULT
Tspi_Hash_SetHashValue(TSS_HHASH hHash,UINT32 ulHashValueLength,BYTE * rgbHashValue)26 Tspi_Hash_SetHashValue(TSS_HHASH hHash,			/* in */
27 		       UINT32 ulHashValueLength,	/* in */
28 		       BYTE * rgbHashValue)		/* in */
29 {
30 	if (ulHashValueLength == 0 || rgbHashValue == NULL)
31 		return TSPERR(TSS_E_BAD_PARAMETER);
32 
33 	return obj_hash_set_value(hHash, ulHashValueLength, rgbHashValue);
34 }
35 
36 TSS_RESULT
Tspi_Hash_GetHashValue(TSS_HHASH hHash,UINT32 * pulHashValueLength,BYTE ** prgbHashValue)37 Tspi_Hash_GetHashValue(TSS_HHASH hHash,			/* in */
38 		       UINT32 * pulHashValueLength,	/* out */
39 		       BYTE ** prgbHashValue)		/* out */
40 {
41 	if (pulHashValueLength == NULL || prgbHashValue == NULL)
42 		return TSPERR(TSS_E_BAD_PARAMETER);
43 
44 	return obj_hash_get_value(hHash, pulHashValueLength, prgbHashValue);
45 }
46 
47 TSS_RESULT
Tspi_Hash_UpdateHashValue(TSS_HHASH hHash,UINT32 ulDataLength,BYTE * rgbData)48 Tspi_Hash_UpdateHashValue(TSS_HHASH hHash,	/* in */
49 			  UINT32 ulDataLength,	/* in */
50 			  BYTE *rgbData)	/* in */
51 {
52 	if (rgbData == NULL && ulDataLength != 0)
53 		return TSPERR(TSS_E_BAD_PARAMETER);
54 
55 	if (ulDataLength == 0)
56 		return TSS_SUCCESS;
57 
58 	return obj_hash_update_value(hHash, ulDataLength, rgbData);
59 }
60