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. 2005, 2007
8  *
9  */
10 
11 
12 #ifndef _TCSD_COMMANDS_H_
13 #define _TCSD_COMMANDS_H_
14 
15 #include "tcsd_wrap.h"
16 
17 #define OPENCONTEXT			TCSD_ORD_OPENCONTEXT
18 #define CLOSECONTEXT			TCSD_ORD_CLOSECONTEXT
19 #define FREEMEMORY			TCSD_ORD_FREEMEMORY
20 #define TCSGETCAPABILITY		TCSD_ORD_TCSGETCAPABILITY
21 #define REGISTERKEY			TCSD_ORD_REGISTERKEY
22 #define UNREGISTERKEY			TCSD_ORD_UNREGISTERKEY
23 #define GETREGISTEREDKEYBLOB		TCSD_ORD_GETREGISTEREDKEYBLOB
24 #define GETREGISTEREDKEYBYPUBLICINFO	TCSD_ORD_GETREGISTEREDKEYBYPUBLICINFO
25 #define GETPUBKEY			TCSD_ORD_GETPUBKEY
26 #define LOADKEYBYBLOB			TCSD_ORD_LOADKEYBYBLOB
27 #define LOADKEYBYUUID			TCSD_ORD_LOADKEYBYUUID
28 #define CREATEWRAPKEY			TCSD_ORD_CREATEWRAPKEY
29 #define GETPCREVENTLOG			TCSD_ORD_GETPCREVENTLOG
30 #define OIAP				TCSD_ORD_OIAP
31 #define OSAP				TCSD_ORD_OSAP
32 #define TERMINATEHANDLE			TCSD_ORD_TERMINATEHANDLE
33 #define PCRREAD				TCSD_ORD_PCRREAD
34 #define PCRRESET			TCSD_ORD_PCRRESET
35 #define QUOTE				TCSD_ORD_QUOTE
36 #define SEAL				TCSD_ORD_SEAL
37 #define UNSEAL				TCSD_ORD_UNSEAL
38 #define UNBIND				TCSD_ORD_UNBIND
39 #define CERTIFYKEY			TCSD_ORD_CERTIFYKEY
40 #define SIGN				TCSD_ORD_SIGN
41 #define GETRANDOM			TCSD_ORD_GETRANDOM
42 #define STIRRANDOM			TCSD_ORD_STIRRANDOM
43 #define GETCAPABILITY			TCSD_ORD_GETCAPABILITY
44 #define READPUBEK			TCSD_ORD_READPUBEK
45 #define SELFTESTFULL			TCSD_ORD_SELFTESTFULL
46 #define CERTIFYSELFTEST			TCSD_ORD_CERTIFYSELFTEST
47 #define CONTINUESELFTEST		TCSD_ORD_CONTINUESELFTEST
48 #define GETTESTRESULT			TCSD_ORD_GETTESTRESULT
49 /* below this line are ordinals that probably shouldn't be allowed for non-localhosts */
50 #if 0
51 #define OWNERREADPUBEK			TCSD_ORD_OWNERREADPUBEK
52 #define GETPCREVENT			TCSD_ORD_GETPCREVENT
53 #define GETPCREVENTBYPCR		TCSD_ORD_GETPCREVENTBYPCR
54 #define GETCAPABILITYSIGNED		TCSD_ORD_GETCAPABILITYSIGNED
55 #define ENUMREGISTEREDKEYS		TCSD_ORD_ENUMREGISTEREDKEYS
56 #define ENUMREGISTEREDKEYS2		TCSD_ORD_ENUMREGISTEREDKEYS2
57 #define GETREGISTEREDKEY		TCSD_ORD_GETREGISTEREDKEY
58 #define EXTEND				TCSD_ORD_EXTEND
59 #define LOGPCREVENT			TCSD_ORD_LOGPCREVENT
60 #define EVICTKEY			TCSD_ORD_EVICTKEY
61 #define DISABLEPUBEKREAD		TCSD_ORD_DISABLEPUBEKREAD
62 #define SETOWNERINSTALL			TCSD_ORD_SETOWNERINSTALL
63 #define MAKEIDENTITY			TCSD_ORD_MAKEIDENTITY
64 #define MAKEIDENTITY2			TCSD_ORD_MAKEIDENTITY2
65 #define TAKEOWNERSHIP			TCSD_ORD_TAKEOWNERSHIP
66 #define CREATEENDORSEMENTKEYPAIR	TCSD_ORD_CREATEENDORSEMENTKEYPAIR
67 #define GETCAPABILITYOWNER		TCSD_ORD_GETCAPABILITYOWNER
68 #define ACTIVATETPMIDENTITY		TCSD_ORD_ACTIVATETPMIDENTITY
69 #define AUTHORIZEMIGRATIONKEY		TCSD_ORD_AUTHORIZEMIGRATIONKEY
70 #define CHANGEAUTH			TCSD_ORD_CHANGEAUTH
71 #define CHANGEAUTHOWNER			TCSD_ORD_CHANGEAUTHOWNER
72 #define CHANGEAUTHASYMSTART		TCSD_ORD_CHANGEAUTHASYMSTART
73 #define CHANGEAUTHASYMFINISH		TCSD_ORD_CHANGEAUTHASYMFINISH
74 #define DIRREAD				TCSD_ORD_DIRREAD
75 #define DIRWRITEAUTH			TCSD_ORD_DIRWRITEAUTH
76 #define CREATEMIGRATIONBLOB		TCSD_ORD_CREATEMIGRATIONBLOB
77 #define CONVERTMIGRATIONBLOB		TCSD_ORD_CONVERTMIGRATIONBLOB
78 #define OWNERSETDISABLE			TCSD_ORD_OWNERSETDISABLE
79 #define OWNERCLEAR			TCSD_ORD_OWNERCLEAR
80 #define DISABLEOWNERCLEAR		TCSD_ORD_DISABLEOWNERCLEAR
81 #define FORCECLEAR			TCSD_ORD_FORCECLEAR
82 #define DISABLEFORCECLEAR		TCSD_ORD_DISABLEFORCECLEAR
83 #define PHYSICALDISABLE			TCSD_ORD_PHYSICALDISABLE
84 #define PHYSICALENABLE			TCSD_ORD_PHYSICALENABLE
85 #define PHYSICALSETDEACTIVATED		TCSD_ORD_PHYSICALSETDEACTIVATED
86 #define SETTEMPDEACTIVATED		TCSD_ORD_SETTEMPDEACTIVATED
87 #define PHYSICALPRESENCE		TCSD_ORD_PHYSICALPRESENCE
88 #define FIELDUPGRADE			TCSD_ORD_FIELDUPGRADE
89 #define SETRIDIRECTION			TCSD_ORD_SETRIDIRECTION
90 #define CREATEMAINTENANCEARCHIVE	TCSD_ORD_CREATEMAINTENANCEARCHIVE
91 #define LOADMAINTENANCEARCHIVE		TCSD_ORD_LOADMAINTENANCEARCHIVE
92 #define KILLMAINTENANCEFEATURE		TCSD_ORD_KILLMAINTENANCEFEATURE
93 #define LOADMANUFECTURERMAINTENANCEPUB	TCSD_ORD_LOADMANUFECTURERMAINTENANCEPUB
94 #define READMANUFECTURERMAINTENANCEPUB	TCSD_ORD_READMANUFECTURERMAINTENANCEPUB
95 #define SETTEMPDEACTIVATED2		TCSD_ORD_SETTEMPDEACTIVATED2
96 #endif
97 
98 /* TCSD ordinal sub-command sets */
99 #define SUBOP_CONTEXT			OPENCONTEXT, CLOSECONTEXT
100 #define SUBOP_RANDOM			STIRRANDOM, GETRANDOM
101 #define SUBOP_AUTHSESS			OIAP, OSAP, TERMINATEHANDLE
102 #define SUBOP_LOADKEYBYUUID		LOADKEYBYUUID, GETREGISTEREDKEYBLOB, FREEMEMORY
103 #define SUBOP_SELFTEST			SELFTESTFULL, CERTIFYSELFTEST, CONTINUESELFTEST, GETTESTRESULT
104 
105 /* Top level TCSD operations which can be enabled to be used by remote hosts. Each of these
106  * should have a corresponding on/off switch in the tcsd.conf file
107  */
108 #define TCSD_OP_SEAL				SEAL, SUBOP_LOADKEYBYUUID, SUBOP_RANDOM, SUBOP_AUTHSESS, SUBOP_CONTEXT, 0
109 #define TCSD_OP_UNSEAL				UNSEAL, SUBOP_LOADKEYBYUUID, SUBOP_RANDOM, SUBOP_AUTHSESS, SUBOP_CONTEXT, 0
110 #define TCSD_OP_GETREGISTEREDKEYBYPUBLICINFO	GETREGISTEREDKEYBYPUBLICINFO, SUBOP_CONTEXT, 0
111 #define TCSD_OP_GETPUBKEY			GETPUBKEY, SUBOP_RANDOM, SUBOP_AUTHSESS, SUBOP_CONTEXT, 0
112 #define TCSD_OP_LOADKEY				LOADKEYBYBLOB, SUBOP_LOADKEYBYUUID, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
113 #define TCSD_OP_REGISTERKEY			REGISTERKEY, SUBOP_CONTEXT, SUBOP_LOADKEYBYUUID, LOADKEYBYBLOB, 0
114 #define TCSD_OP_UNREGISTERKEY			UNREGISTERKEY, SUBOP_CONTEXT, 0
115 #define TCSD_OP_CREATEKEY			CREATEWRAPKEY, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_LOADKEYBYUUID, SUBOP_RANDOM, 0
116 #define TCSD_OP_SIGN				SIGN, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, FREEMEMORY, 0
117 #define TCSD_OP_RANDOM				SUBOP_RANDOM, SUBOP_CONTEXT, FREEMEMORY, 0
118 #define TCSD_OP_GETCAPABILITY			GETCAPABILITY, TCSGETCAPABILITY, SUBOP_CONTEXT, FREEMEMORY, 0
119 #define TCSD_OP_UNBIND				UNBIND, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
120 #define TCSD_OP_QUOTE				QUOTE, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
121 #define TCSD_OP_READPUBEK			READPUBEK, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
122 #define TCSD_OP_SELFTEST			SUBOP_SELFTEST, SUBOP_CONTEXT, FREEMEMORY, 0
123 
124 struct tcsd_op {
125 	char *name;
126 	int op[];
127 };
128 
129 struct tcsd_op tcsd_op_seal = {"seal", {TCSD_OP_SEAL}};
130 struct tcsd_op tcsd_op_unseal = {"unseal", {TCSD_OP_UNSEAL}};
131 struct tcsd_op tcsd_op_registerkey = {"registerkey", {TCSD_OP_REGISTERKEY}};
132 struct tcsd_op tcsd_op_unregisterkey = {"unregisterkey", {TCSD_OP_UNREGISTERKEY}};
133 struct tcsd_op tcsd_op_getregisteredkeybypublicinfo = {"getregisteredkeybypublicinfo", {TCSD_OP_GETREGISTEREDKEYBYPUBLICINFO}};
134 struct tcsd_op tcsd_op_getpubkey = {"getpubkey", {TCSD_OP_GETPUBKEY}};
135 struct tcsd_op tcsd_op_loadkey = {"loadkey", {TCSD_OP_LOADKEY}};
136 struct tcsd_op tcsd_op_createkey = {"createkey", {TCSD_OP_CREATEKEY}};
137 struct tcsd_op tcsd_op_sign = {"sign", {TCSD_OP_SIGN}};
138 struct tcsd_op tcsd_op_random = {"random", {TCSD_OP_RANDOM}};
139 struct tcsd_op tcsd_op_getcapability = {"getcapability", {TCSD_OP_GETCAPABILITY}};
140 struct tcsd_op tcsd_op_unbind = {"unbind", {TCSD_OP_UNBIND}};
141 struct tcsd_op tcsd_op_quote = {"quote", {TCSD_OP_QUOTE}};
142 struct tcsd_op tcsd_op_readpubek = {"readpubek", {TCSD_OP_READPUBEK}};
143 struct tcsd_op tcsd_op_selftest = {"selftest", {TCSD_OP_SELFTEST}};
144 
145 struct tcsd_op *tcsd_ops[] = {
146 	&tcsd_op_seal,
147 	&tcsd_op_unseal,
148 	&tcsd_op_registerkey,
149 	&tcsd_op_unregisterkey,
150 	&tcsd_op_getregisteredkeybypublicinfo,
151 	&tcsd_op_getpubkey,
152 	&tcsd_op_loadkey,
153 	&tcsd_op_createkey,
154 	&tcsd_op_sign,
155 	&tcsd_op_random,
156 	&tcsd_op_getcapability,
157 	&tcsd_op_unbind,
158 	&tcsd_op_quote,
159 	&tcsd_op_readpubek,
160 	&tcsd_op_selftest,
161 	NULL
162 };
163 
164 #endif
165