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
124struct tcsd_op {
125	char *name;
126	int op[];
127};
128
129struct tcsd_op tcsd_op_seal = {"seal", {TCSD_OP_SEAL}};
130struct tcsd_op tcsd_op_unseal = {"unseal", {TCSD_OP_UNSEAL}};
131struct tcsd_op tcsd_op_registerkey = {"registerkey", {TCSD_OP_REGISTERKEY}};
132struct tcsd_op tcsd_op_unregisterkey = {"unregisterkey", {TCSD_OP_UNREGISTERKEY}};
133struct tcsd_op tcsd_op_getregisteredkeybypublicinfo = {"getregisteredkeybypublicinfo", {TCSD_OP_GETREGISTEREDKEYBYPUBLICINFO}};
134struct tcsd_op tcsd_op_getpubkey = {"getpubkey", {TCSD_OP_GETPUBKEY}};
135struct tcsd_op tcsd_op_loadkey = {"loadkey", {TCSD_OP_LOADKEY}};
136struct tcsd_op tcsd_op_createkey = {"createkey", {TCSD_OP_CREATEKEY}};
137struct tcsd_op tcsd_op_sign = {"sign", {TCSD_OP_SIGN}};
138struct tcsd_op tcsd_op_random = {"random", {TCSD_OP_RANDOM}};
139struct tcsd_op tcsd_op_getcapability = {"getcapability", {TCSD_OP_GETCAPABILITY}};
140struct tcsd_op tcsd_op_unbind = {"unbind", {TCSD_OP_UNBIND}};
141struct tcsd_op tcsd_op_quote = {"quote", {TCSD_OP_QUOTE}};
142struct tcsd_op tcsd_op_readpubek = {"readpubek", {TCSD_OP_READPUBEK}};
143struct tcsd_op tcsd_op_selftest = {"selftest", {TCSD_OP_SELFTEST}};
144
145struct 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