author | Drew Fisher <drew.fisher@oracle.com> |
Thu, 01 Aug 2013 14:53:52 -0600 | |
changeset 1417 | 5158e071d299 |
parent 777 | e2e604cdbd6a |
child 5941 | db8aa9865e9f |
permissions | -rw-r--r-- |
622
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
1 |
--- src/tddl/tddl.c Mon Apr 12 22:24:21 2010 |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
2 |
+++ src/tddl/tddl.c.new Thu Sep 22 12:28:25 2011 |
259
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
3 |
@@ -18,13 +18,17 @@ |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
4 |
|
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
5 |
#include "trousers/tss.h" |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
6 |
#include "trousers_types.h" |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
7 |
+#ifndef SOLARIS |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
8 |
#include "linux/tpm.h" |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
9 |
+#endif |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
10 |
#include "tcslog.h" |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
11 |
#include "tddl.h" |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
12 |
|
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
13 |
struct tpm_device_node tpm_device_nodes[] = { |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
14 |
+#ifndef SOLARIS |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
15 |
{"/dev/tpm0", TDDL_UNDEF, TDDL_UNDEF}, |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
16 |
{"/udev/tpm0", TDDL_UNDEF, TDDL_UNDEF}, |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
17 |
+#endif |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
18 |
{"/dev/tpm", TDDL_UNDEF, TDDL_UNDEF}, |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
19 |
{NULL, 0, 0} |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
20 |
}; |
622
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
21 |
@@ -42,6 +46,13 @@ |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
22 |
#include <netdb.h> |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
23 |
#include <fcntl.h> |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
24 |
|
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
25 |
+#ifdef SOLARIS |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
26 |
+int |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
27 |
+get_device_fd() |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
28 |
+{ |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
29 |
+ return (opened_device->fd); |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
30 |
+} |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
31 |
+#endif |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
32 |
|
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
33 |
int |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
34 |
open_device() |
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
35 |
@@ -63,7 +74,7 @@ |
399
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
36 |
|
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
37 |
|
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
38 |
fd = socket(AF_INET, SOCK_STREAM, 0); |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
39 |
- if (fd > 0) { |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
40 |
+ if (fd >= 0) { |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
41 |
struct hostent *host = gethostbyname(tcp_device_hostname); |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
42 |
if (host != NULL) { |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
43 |
struct sockaddr_in addr; |
622
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
44 |
@@ -105,12 +116,16 @@ |
259
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
45 |
/* tpm_device_paths is filled out in tddl.h */ |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
46 |
for (i = 0; tpm_device_nodes[i].path != NULL; i++) { |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
47 |
errno = 0; |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
48 |
- if ((fd = open(tpm_device_nodes[i].path, O_RDWR)) >= 0) |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
49 |
+ if ((fd = open(tpm_device_nodes[i].path, O_RDWR)) >= 0) { |
399
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
50 |
break; |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
51 |
+ } else { |
259
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
52 |
+ fprintf(stderr, "Error opening %s: %s\n", |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
53 |
+ tpm_device_nodes[i].path, strerror(errno)); |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
54 |
+ } |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
55 |
} |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
56 |
} |
399
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
57 |
- |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
58 |
- if (fd > 0) { |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
59 |
+ |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
60 |
+ if (fd >= 0) { |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
61 |
opened_device = &(tpm_device_nodes[i]); |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
62 |
tpm_device_nodes[i].fd = fd; |
d877cc559d95
7056071 enable tcsd failed in Solaris 11
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
259
diff
changeset
|
63 |
} |
622
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
64 |
@@ -181,11 +196,13 @@ |
259
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
65 |
/* fall through */ |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
66 |
case TDDL_TRANSMIT_IOCTL: |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
67 |
errno = 0; |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
68 |
+#ifndef SOLARIS |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
69 |
if ((sizeResult = ioctl(opened_device->fd, TPMIOC_TRANSMIT, txBuffer)) != -1) { |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
70 |
opened_device->transmit = TDDL_TRANSMIT_IOCTL; |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
71 |
break; |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
72 |
} |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
73 |
LogWarn("ioctl: (%d) %s", errno, strerror(errno)); |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
74 |
+#endif |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
75 |
LogInfo("Falling back to Read/Write device support."); |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
76 |
/* fall through */ |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
77 |
case TDDL_TRANSMIT_RW: |
622
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
78 |
@@ -255,6 +272,7 @@ |
259
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
79 |
|
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
80 |
TSS_RESULT Tddli_Cancel(void) |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
81 |
{ |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
82 |
+#ifndef SOLARIS |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
83 |
int rc; |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
84 |
|
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
85 |
if (opened_device->transmit == TDDL_TRANSMIT_IOCTL) { |
622
fd8f0e501744
7023102 TCSD should store the TPM Event Log
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
399
diff
changeset
|
86 |
@@ -270,4 +288,7 @@ |
259
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
87 |
} else { |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
88 |
return TDDLERR(TSS_E_NOTIMPL); |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
89 |
} |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
90 |
+#else |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
91 |
+ return TDDLERR(TSS_E_NOTIMPL); |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
92 |
+#endif /* SOLARIS */ |
520697a05dde
7045320 Move trousers from SFW to Userland
Wyllys Ingersoll <Wyllys.Ingersoll@Oracle.COM>
parents:
diff
changeset
|
93 |
} |