author | Huie-Ying Lee <huieying.lee@oracle.com> |
Wed, 20 May 2015 15:14:17 -0700 | |
branch | s11-update |
changeset 4329 | 771a6f41f496 |
parent 3971 | 6eb9cb342fe8 |
permissions | -rw-r--r-- |
3971
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
1 |
# |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
2 |
# 30-tpm-failover.patch |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
3 |
# This patch c implements the tcsd part of |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
4 |
# Solaris- and SPARC-specific TPM failover. |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
5 |
# It is not suitable for upstream use. |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
6 |
# This change was implemented in-house. |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
7 |
# |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
8 |
--- src/tcs/tcs_key_ps.c. 2010-06-09 13:20:44.000000000 -0700 |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
9 |
+++ src/tcs/tcs_key_ps.c 2014-07-23 16:48:40.316448661 -0700 |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
10 |
@@ -26,6 +26,16 @@ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
11 |
#include "tcsps.h" |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
12 |
#include "req_mgr.h" |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
13 |
|
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
14 |
+#if defined(SOLARIS) && defined(__sparcv9) |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
15 |
+#include <signal.h> |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
16 |
+#include <fcntl.h> |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
17 |
+#include <sys/paths.h> |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
18 |
+#define FILE_PREFIX "application-security-tcsd:" |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
19 |
+#define PATH_TPMFOD_PID _PATH_SYSVOL "/" FILE_PREFIX "tpmfod.pid" |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
20 |
+#define PATH_ADMIN_PIN _PATH_SYSVOL "/" FILE_PREFIX "admin.pin" |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
21 |
+#define PATH_BACKUP_PIN _PATH_SYSVOL "/" FILE_PREFIX "backup.pin" |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
22 |
+#endif /* SOLARIS && __sparcv9 */ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
23 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
24 |
|
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
25 |
TSS_RESULT |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
26 |
ps_init_disk_cache(void) |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
27 |
@@ -338,6 +348,42 @@ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
28 |
return ret; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
29 |
} |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
30 |
|
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
31 |
+#if defined(SOLARIS) && defined(__sparcv9) |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
32 |
+/* Notify the tpmfod when the System keystore (persistent storage) changes */ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
33 |
+static void |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
34 |
+notify_system_ps_change(void) |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
35 |
+{ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
36 |
+ int fd; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
37 |
+ pid_t pid = -1; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
38 |
+ char pid_string[256] = ""; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
39 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
40 |
+ /* No failover support if no tpmfod daemon. */ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
41 |
+ if (access(PATH_TPMFOD_PID, R_OK) < 0) { |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
42 |
+ return; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
43 |
+ } |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
44 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
45 |
+ /* Read pid string from file and convert to integer */ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
46 |
+ if ((fd = open(PATH_TPMFOD_PID, O_RDONLY)) == -1) { |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
47 |
+ return; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
48 |
+ } |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
49 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
50 |
+ if (read(fd, pid_string, strlen(pid_string)) < 0) { |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
51 |
+ (void) close(fd); |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
52 |
+ return; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
53 |
+ } |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
54 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
55 |
+ (void) close(fd); |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
56 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
57 |
+ pid = atoll(pid_string); |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
58 |
+ if (pid <= 0) { |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
59 |
+ return; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
60 |
+ } |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
61 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
62 |
+ /* Signal tpmfod */ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
63 |
+ (void) kill(pid, SIGUSR1); |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
64 |
+} |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
65 |
+#endif /* SOLARIS && __sparcv9 */ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
66 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
67 |
TSS_RESULT |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
68 |
ps_write_key(TSS_UUID *uuid, TSS_UUID *parent_uuid, BYTE *vendor_data, |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
69 |
UINT32 vendor_size, BYTE *blob, UINT32 blob_size) |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
70 |
@@ -363,5 +409,10 @@ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
71 |
vendor_size, blob, short_blob_size); |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
72 |
|
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
73 |
put_file(fd); |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
74 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
75 |
+#if defined(SOLARIS) && defined(__sparcv9) |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
76 |
+ notify_system_ps_change(); |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
77 |
+#endif /* SOLARIS && __sparcv9 */ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
78 |
+ |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
79 |
return TSS_SUCCESS; |
6eb9cb342fe8
19280108 Trousers support for TPM Failover for SPARC M7 systems
Dan Anderson <dan.anderson@oracle.com>
parents:
diff
changeset
|
80 |
} |