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