summaryrefslogtreecommitdiff
path: root/src/include/tcsd_ops.h
blob: 82df48443f7de00a9b29567fb313106152de67ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164

/*
 * Licensed Materials - Property of IBM
 *
 * trousers - An open source TCG Software Stack
 *
 * (C) Copyright International Business Machines Corp. 2005, 2007
 *
 */


#ifndef _TCSD_COMMANDS_H_
#define _TCSD_COMMANDS_H_

#include "tcsd_wrap.h"

#define OPENCONTEXT			TCSD_ORD_OPENCONTEXT
#define CLOSECONTEXT			TCSD_ORD_CLOSECONTEXT
#define FREEMEMORY			TCSD_ORD_FREEMEMORY
#define TCSGETCAPABILITY		TCSD_ORD_TCSGETCAPABILITY
#define REGISTERKEY			TCSD_ORD_REGISTERKEY
#define UNREGISTERKEY			TCSD_ORD_UNREGISTERKEY
#define GETREGISTEREDKEYBLOB		TCSD_ORD_GETREGISTEREDKEYBLOB
#define GETREGISTEREDKEYBYPUBLICINFO	TCSD_ORD_GETREGISTEREDKEYBYPUBLICINFO
#define GETPUBKEY			TCSD_ORD_GETPUBKEY
#define LOADKEYBYBLOB			TCSD_ORD_LOADKEYBYBLOB
#define LOADKEYBYUUID			TCSD_ORD_LOADKEYBYUUID
#define CREATEWRAPKEY			TCSD_ORD_CREATEWRAPKEY
#define GETPCREVENTLOG			TCSD_ORD_GETPCREVENTLOG
#define OIAP				TCSD_ORD_OIAP
#define OSAP				TCSD_ORD_OSAP
#define TERMINATEHANDLE			TCSD_ORD_TERMINATEHANDLE
#define PCRREAD				TCSD_ORD_PCRREAD
#define PCRRESET			TCSD_ORD_PCRRESET
#define QUOTE				TCSD_ORD_QUOTE
#define SEAL				TCSD_ORD_SEAL
#define UNSEAL				TCSD_ORD_UNSEAL
#define UNBIND				TCSD_ORD_UNBIND
#define CERTIFYKEY			TCSD_ORD_CERTIFYKEY
#define SIGN				TCSD_ORD_SIGN
#define GETRANDOM			TCSD_ORD_GETRANDOM
#define STIRRANDOM			TCSD_ORD_STIRRANDOM
#define GETCAPABILITY			TCSD_ORD_GETCAPABILITY
#define READPUBEK			TCSD_ORD_READPUBEK
#define SELFTESTFULL			TCSD_ORD_SELFTESTFULL
#define CERTIFYSELFTEST			TCSD_ORD_CERTIFYSELFTEST
#define CONTINUESELFTEST		TCSD_ORD_CONTINUESELFTEST
#define GETTESTRESULT			TCSD_ORD_GETTESTRESULT
/* below this line are ordinals that probably shouldn't be allowed for non-localhosts */
#if 0
#define OWNERREADPUBEK			TCSD_ORD_OWNERREADPUBEK
#define GETPCREVENT			TCSD_ORD_GETPCREVENT
#define GETPCREVENTBYPCR		TCSD_ORD_GETPCREVENTBYPCR
#define GETCAPABILITYSIGNED		TCSD_ORD_GETCAPABILITYSIGNED
#define ENUMREGISTEREDKEYS		TCSD_ORD_ENUMREGISTEREDKEYS
#define ENUMREGISTEREDKEYS2		TCSD_ORD_ENUMREGISTEREDKEYS2
#define GETREGISTEREDKEY		TCSD_ORD_GETREGISTEREDKEY
#define EXTEND				TCSD_ORD_EXTEND
#define LOGPCREVENT			TCSD_ORD_LOGPCREVENT
#define EVICTKEY			TCSD_ORD_EVICTKEY
#define DISABLEPUBEKREAD		TCSD_ORD_DISABLEPUBEKREAD
#define SETOWNERINSTALL			TCSD_ORD_SETOWNERINSTALL
#define MAKEIDENTITY			TCSD_ORD_MAKEIDENTITY
#define MAKEIDENTITY2			TCSD_ORD_MAKEIDENTITY2
#define TAKEOWNERSHIP			TCSD_ORD_TAKEOWNERSHIP
#define CREATEENDORSEMENTKEYPAIR	TCSD_ORD_CREATEENDORSEMENTKEYPAIR
#define GETCAPABILITYOWNER		TCSD_ORD_GETCAPABILITYOWNER
#define ACTIVATETPMIDENTITY		TCSD_ORD_ACTIVATETPMIDENTITY
#define AUTHORIZEMIGRATIONKEY		TCSD_ORD_AUTHORIZEMIGRATIONKEY
#define CHANGEAUTH			TCSD_ORD_CHANGEAUTH
#define CHANGEAUTHOWNER			TCSD_ORD_CHANGEAUTHOWNER
#define CHANGEAUTHASYMSTART		TCSD_ORD_CHANGEAUTHASYMSTART
#define CHANGEAUTHASYMFINISH		TCSD_ORD_CHANGEAUTHASYMFINISH
#define DIRREAD				TCSD_ORD_DIRREAD
#define DIRWRITEAUTH			TCSD_ORD_DIRWRITEAUTH
#define CREATEMIGRATIONBLOB		TCSD_ORD_CREATEMIGRATIONBLOB
#define CONVERTMIGRATIONBLOB		TCSD_ORD_CONVERTMIGRATIONBLOB
#define OWNERSETDISABLE			TCSD_ORD_OWNERSETDISABLE
#define OWNERCLEAR			TCSD_ORD_OWNERCLEAR
#define DISABLEOWNERCLEAR		TCSD_ORD_DISABLEOWNERCLEAR
#define FORCECLEAR			TCSD_ORD_FORCECLEAR
#define DISABLEFORCECLEAR		TCSD_ORD_DISABLEFORCECLEAR
#define PHYSICALDISABLE			TCSD_ORD_PHYSICALDISABLE
#define PHYSICALENABLE			TCSD_ORD_PHYSICALENABLE
#define PHYSICALSETDEACTIVATED		TCSD_ORD_PHYSICALSETDEACTIVATED
#define SETTEMPDEACTIVATED		TCSD_ORD_SETTEMPDEACTIVATED
#define PHYSICALPRESENCE		TCSD_ORD_PHYSICALPRESENCE
#define FIELDUPGRADE			TCSD_ORD_FIELDUPGRADE
#define SETRIDIRECTION			TCSD_ORD_SETRIDIRECTION
#define CREATEMAINTENANCEARCHIVE	TCSD_ORD_CREATEMAINTENANCEARCHIVE
#define LOADMAINTENANCEARCHIVE		TCSD_ORD_LOADMAINTENANCEARCHIVE
#define KILLMAINTENANCEFEATURE		TCSD_ORD_KILLMAINTENANCEFEATURE
#define LOADMANUFECTURERMAINTENANCEPUB	TCSD_ORD_LOADMANUFECTURERMAINTENANCEPUB
#define READMANUFECTURERMAINTENANCEPUB	TCSD_ORD_READMANUFECTURERMAINTENANCEPUB
#define SETTEMPDEACTIVATED2		TCSD_ORD_SETTEMPDEACTIVATED2
#endif

/* TCSD ordinal sub-command sets */
#define SUBOP_CONTEXT			OPENCONTEXT, CLOSECONTEXT
#define SUBOP_RANDOM			STIRRANDOM, GETRANDOM
#define SUBOP_AUTHSESS			OIAP, OSAP, TERMINATEHANDLE
#define SUBOP_LOADKEYBYUUID		LOADKEYBYUUID, GETREGISTEREDKEYBLOB, FREEMEMORY
#define SUBOP_SELFTEST			SELFTESTFULL, CERTIFYSELFTEST, CONTINUESELFTEST, GETTESTRESULT 

/* Top level TCSD operations which can be enabled to be used by remote hosts. Each of these
 * should have a corresponding on/off switch in the tcsd.conf file
 */
#define TCSD_OP_SEAL				SEAL, SUBOP_LOADKEYBYUUID, SUBOP_RANDOM, SUBOP_AUTHSESS, SUBOP_CONTEXT, 0
#define TCSD_OP_UNSEAL				UNSEAL, SUBOP_LOADKEYBYUUID, SUBOP_RANDOM, SUBOP_AUTHSESS, SUBOP_CONTEXT, 0
#define TCSD_OP_GETREGISTEREDKEYBYPUBLICINFO	GETREGISTEREDKEYBYPUBLICINFO, SUBOP_CONTEXT, 0
#define TCSD_OP_GETPUBKEY			GETPUBKEY, SUBOP_RANDOM, SUBOP_AUTHSESS, SUBOP_CONTEXT, 0
#define TCSD_OP_LOADKEY				LOADKEYBYBLOB, SUBOP_LOADKEYBYUUID, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
#define TCSD_OP_REGISTERKEY			REGISTERKEY, SUBOP_CONTEXT, SUBOP_LOADKEYBYUUID, LOADKEYBYBLOB, 0
#define TCSD_OP_UNREGISTERKEY			UNREGISTERKEY, SUBOP_CONTEXT, 0
#define TCSD_OP_CREATEKEY			CREATEWRAPKEY, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_LOADKEYBYUUID, SUBOP_RANDOM, 0
#define TCSD_OP_SIGN				SIGN, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, FREEMEMORY, 0
#define TCSD_OP_RANDOM				SUBOP_RANDOM, SUBOP_CONTEXT, FREEMEMORY, 0
#define TCSD_OP_GETCAPABILITY			GETCAPABILITY, TCSGETCAPABILITY, SUBOP_CONTEXT, FREEMEMORY, 0
#define TCSD_OP_UNBIND				UNBIND, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
#define TCSD_OP_QUOTE				QUOTE, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
#define TCSD_OP_READPUBEK			READPUBEK, SUBOP_CONTEXT, SUBOP_AUTHSESS, SUBOP_RANDOM, 0
#define TCSD_OP_SELFTEST			SUBOP_SELFTEST, SUBOP_CONTEXT, FREEMEMORY, 0

struct tcsd_op {
	char *name;
	int op[];
};

struct tcsd_op tcsd_op_seal = {"seal", {TCSD_OP_SEAL}};
struct tcsd_op tcsd_op_unseal = {"unseal", {TCSD_OP_UNSEAL}};
struct tcsd_op tcsd_op_registerkey = {"registerkey", {TCSD_OP_REGISTERKEY}};
struct tcsd_op tcsd_op_unregisterkey = {"unregisterkey", {TCSD_OP_UNREGISTERKEY}};
struct tcsd_op tcsd_op_getregisteredkeybypublicinfo = {"getregisteredkeybypublicinfo", {TCSD_OP_GETREGISTEREDKEYBYPUBLICINFO}};
struct tcsd_op tcsd_op_getpubkey = {"getpubkey", {TCSD_OP_GETPUBKEY}};
struct tcsd_op tcsd_op_loadkey = {"loadkey", {TCSD_OP_LOADKEY}};
struct tcsd_op tcsd_op_createkey = {"createkey", {TCSD_OP_CREATEKEY}};
struct tcsd_op tcsd_op_sign = {"sign", {TCSD_OP_SIGN}};
struct tcsd_op tcsd_op_random = {"random", {TCSD_OP_RANDOM}};
struct tcsd_op tcsd_op_getcapability = {"getcapability", {TCSD_OP_GETCAPABILITY}};
struct tcsd_op tcsd_op_unbind = {"unbind", {TCSD_OP_UNBIND}};
struct tcsd_op tcsd_op_quote = {"quote", {TCSD_OP_QUOTE}};
struct tcsd_op tcsd_op_readpubek = {"readpubek", {TCSD_OP_READPUBEK}};
struct tcsd_op tcsd_op_selftest = {"selftest", {TCSD_OP_SELFTEST}};

struct tcsd_op *tcsd_ops[] = {
	&tcsd_op_seal,
	&tcsd_op_unseal,
	&tcsd_op_registerkey,
	&tcsd_op_unregisterkey,
	&tcsd_op_getregisteredkeybypublicinfo,
	&tcsd_op_getpubkey,
	&tcsd_op_loadkey,
	&tcsd_op_createkey,
	&tcsd_op_sign,
	&tcsd_op_random,
	&tcsd_op_getcapability,
	&tcsd_op_unbind,
	&tcsd_op_quote,
	&tcsd_op_readpubek,
	&tcsd_op_selftest,
	NULL
};

#endif