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