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