xref: /netbsd-src/crypto/external/cpl/trousers/dist/src/tspi/ps/ps_utils.c (revision 7d62b00eb9ad855ffcd7da46b41e23feb5476fac)
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. 2006
8  *
9  */
10 
11 
12 #include <stdlib.h>
13 #include <stdio.h>
14 #include <unistd.h>
15 #include <string.h>
16 #include <errno.h>
17 
18 #include "trousers/tss.h"
19 #include "trousers_types.h"
20 #include "tcs_tsp.h"
21 #include "spi_utils.h"
22 #include "tspps.h"
23 #include "tsplog.h"
24 
25 TSS_RESULT
26 read_data(int fd, void *data, UINT32 size)
27 {
28 	int rc;
29 
30 	rc = read(fd, data, size);
31 	if (rc == -1) {
32 		LogError("read of %d bytes: %s", size, strerror(errno));
33 		return TSPERR(TSS_E_INTERNAL_ERROR);
34 	} else if ((unsigned)rc != size) {
35 		LogError("read of %d bytes (only %d read)", size, rc);
36 		return TSPERR(TSS_E_INTERNAL_ERROR);
37 	}
38 
39 	return TSS_SUCCESS;
40 }
41 
42 TSS_RESULT
43 write_data(int fd, void *data, UINT32 size)
44 {
45 	int rc;
46 
47 	rc = write(fd, data, size);
48 	if (rc == -1) {
49 		LogError("write of %d bytes: %s", size, strerror(errno));
50 		return TSPERR(TSS_E_INTERNAL_ERROR);
51 	} else if ((unsigned)rc != size) {
52 		LogError("write of %d bytes (only %d written)", size, rc);
53 		return TSPERR(TSS_E_INTERNAL_ERROR);
54 	}
55 
56 	return TSS_SUCCESS;
57 }
58