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