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. 2007
      8  *
      9  */
     10 
     11 #ifndef _OBJ_MIGDATA_H_
     12 #define _OBJ_MIGDATA_H_
     13 
     14 #ifdef TSS_BUILD_CMK
     15 
     16 /* structures */
     17 struct tr_migdata_obj {
     18 	/* TSS_MIGATTRIB_MIGRATIONTICKET (from AuthorizeMigrationTicket)	*/
     19 	UINT32 migTicketSize;
     20 	BYTE *migTicket;
     21 
     22 	/* TSS_MIGATTRIB_AUTHORITY_DATA/TSS_MIGATTRIB_AUTHORITY_MSALIST
     23 		- Recalculate the msaDigest
     24 	   or
     25 	   TSS_MIGATTRIB_MIGRATIONBLOB/TSS_MIGATTRIB_MIG_MSALIST_PUBKEY_BLOB
     26 		- Create a digest from the pubkey blob and append to the list
     27 		- Recalculate the msaDigest					*/
     28 	TPM_MSA_COMPOSITE msaList;
     29 	/* TSS_MIGATTRIB_AUTHORITY_DATA/TSS_MIGATTRIB_AUTHORITY_DIGEST		*/
     30 	TPM_DIGEST msaDigest;
     31 	/* TSS_MIGATTRIB_AUTHORITY_DATA/TSS_MIGATTRIB_AUTHORITY_APPROVAL_HMAC	*/
     32 	TPM_HMAC msaHmac;
     33 
     34 	/* TSS_MIGATTRIB_MIG_AUTH_DATA/TSS_MIGATTRIB_MIG_AUTH_AUTHORITY_DIGEST
     35 	   or
     36 	   TSS_MIGATTRIB_MIGRATIONBLOB/TSS_MIGATTRIB_MIG_AUTHORITY_PUBKEY_BLOB
     37 		- Create a digest from the pubkey blob				*/
     38 	TPM_DIGEST maDigest;
     39 	/* TSS_MIGATTRIB_MIG_AUTH_DATA/TSS_MIGATTRIB_MIG_AUTH_DESTINATION_DIGEST
     40 	   or
     41 	   TSS_MIGATTRIB_MIGRATIONBLOB/TSS_MIGATTRIB_MIG_DESTINATION_PUBKEY_BLOB
     42 		- Create a digest from the pubkey blob				*/
     43 	TPM_DIGEST destDigest;
     44 	/* TSS_MIGATTRIB_MIG_AUTH_DATA/TSS_MIGATTRIB_MIG_AUTH_SOURCE_DIGEST
     45 	   or
     46 	   TSS_MIGATTRIB_MIGRATIONBLOB/TSS_MIGATTRIB_MIG_SOURCE_PUBKEY_BLOB
     47 		- Create a digest from the pubkey blob				*/
     48 	TPM_DIGEST srcDigest;
     49 
     50 	/* TSS_MIGATTRIB_TICKET_DATA/TSS_MIGATTRIB_TICKET_SIG_DIGEST		*/
     51 	TPM_DIGEST sigData;
     52 	/* TSS_MIGATTRIB_TICKET_DATA/TSS_MIGATTRIB_TICKET_SIG_VALUE		*/
     53 	UINT32 sigValueSize;
     54 	BYTE *sigValue;
     55 	/* TSS_MIGATTRIB_TICKET_DATA/TSS_MIGATTRIB_TICKET_SIG_TICKET		*/
     56 	TPM_HMAC sigTicket;
     57 
     58 	/* TSS_MIGATTRIB_MIGRATIONBLOB/TSS_MIGATTRIB_MIGRATION_XOR_BLOB		*/
     59 	UINT32 blobSize;
     60 	BYTE *blob;
     61 };
     62 
     63 /* obj_migdata.c */
     64 void       migdata_free(void *data);
     65 TSS_BOOL   obj_is_migdata(TSS_HOBJECT);
     66 TSS_RESULT obj_migdata_add(TSS_HCONTEXT, TSS_HOBJECT *);
     67 TSS_RESULT obj_migdata_remove(TSS_HMIGDATA, TSS_HOBJECT);
     68 TSS_RESULT obj_migdata_get_tsp_context(TSS_HMIGDATA, TSS_HCONTEXT *);
     69 
     70 TSS_RESULT obj_migdata_set_migrationblob(TSS_HMIGDATA, UINT32, UINT32, BYTE *);
     71 TSS_RESULT obj_migdata_get_migrationblob(TSS_HMIGDATA, UINT32, UINT32 *, BYTE **);
     72 TSS_RESULT obj_migdata_set_authoritydata(TSS_HMIGDATA, UINT32, UINT32, BYTE *);
     73 TSS_RESULT obj_migdata_get_authoritydata(TSS_HMIGDATA, UINT32, UINT32 *, BYTE **);
     74 TSS_RESULT obj_migdata_set_migauthdata(TSS_HMIGDATA, UINT32, UINT32, BYTE *);
     75 TSS_RESULT obj_migdata_get_migauthdata(TSS_HMIGDATA, UINT32, UINT32 *, BYTE **);
     76 TSS_RESULT obj_migdata_set_ticketdata(TSS_HMIGDATA, UINT32, UINT32, BYTE *);
     77 TSS_RESULT obj_migdata_get_ticketdata(TSS_HMIGDATA, UINT32, UINT32 *, BYTE **);
     78 
     79 TSS_RESULT obj_migdata_set_ticket_blob(TSS_HMIGDATA, UINT32, BYTE *);
     80 TSS_RESULT obj_migdata_get_ticket_blob(TSS_HMIGDATA, UINT32 *, BYTE **);
     81 
     82 TSS_RESULT obj_migdata_set_msa_list(TSS_HMIGDATA, UINT32, BYTE *);
     83 TSS_RESULT obj_migdata_get_msa_list(TSS_HMIGDATA, UINT32 *, BYTE **);
     84 TSS_RESULT obj_migdata_set_msa_pubkey(TSS_HMIGDATA, UINT32, BYTE *);
     85 TSS_RESULT obj_migdata_set_msa_digest(TSS_HMIGDATA, UINT32, BYTE *);
     86 TSS_RESULT obj_migdata_get_msa_digest(TSS_HMIGDATA, UINT32 *, BYTE **);
     87 TSS_RESULT obj_migdata_get_msa_list_blob(TSS_HMIGDATA, UINT32 *, BYTE **);
     88 
     89 TSS_RESULT obj_migdata_set_msa_hmac(TSS_HMIGDATA, UINT32, BYTE *);
     90 TSS_RESULT obj_migdata_get_msa_hmac(TSS_HMIGDATA, UINT32 *, BYTE **);
     91 
     92 TSS_RESULT obj_migdata_set_ma_pubkey(TSS_HMIGDATA, UINT32, BYTE *);
     93 TSS_RESULT obj_migdata_set_ma_digest(TSS_HMIGDATA, UINT32, BYTE *);
     94 TSS_RESULT obj_migdata_get_ma_digest(TSS_HMIGDATA, UINT32 *, BYTE **);
     95 TSS_RESULT obj_migdata_set_dest_pubkey(TSS_HMIGDATA, UINT32, BYTE *);
     96 TSS_RESULT obj_migdata_set_dest_digest(TSS_HMIGDATA, UINT32, BYTE *);
     97 TSS_RESULT obj_migdata_get_dest_digest(TSS_HMIGDATA, UINT32 *, BYTE **);
     98 TSS_RESULT obj_migdata_set_src_pubkey(TSS_HMIGDATA, UINT32, BYTE *);
     99 TSS_RESULT obj_migdata_set_src_digest(TSS_HMIGDATA, UINT32, BYTE *);
    100 TSS_RESULT obj_migdata_get_src_digest(TSS_HMIGDATA, UINT32 *, BYTE **);
    101 TSS_RESULT obj_migdata_set_cmk_auth(TSS_HMIGDATA, UINT32, BYTE *);
    102 TSS_RESULT obj_migdata_get_cmk_auth(TSS_HMIGDATA, TPM_CMK_AUTH *);
    103 TSS_RESULT obj_migdata_get_cmk_auth_blob(TSS_HMIGDATA, UINT32 *, BYTE **);
    104 
    105 TSS_RESULT obj_migdata_set_sig_data(TSS_HMIGDATA, UINT32, BYTE *);
    106 TSS_RESULT obj_migdata_get_sig_data(TSS_HMIGDATA, UINT32 *, BYTE **);
    107 TSS_RESULT obj_migdata_set_sig_value(TSS_HMIGDATA, UINT32, BYTE *);
    108 TSS_RESULT obj_migdata_get_sig_value(TSS_HMIGDATA, UINT32 *, BYTE **);
    109 TSS_RESULT obj_migdata_set_sig_ticket(TSS_HMIGDATA, UINT32, BYTE *);
    110 TSS_RESULT obj_migdata_get_sig_ticket(TSS_HMIGDATA, UINT32 *, BYTE **);
    111 
    112 TSS_RESULT obj_migdata_set_blob(TSS_HMIGDATA, UINT32, BYTE *);
    113 TSS_RESULT obj_migdata_get_blob(TSS_HMIGDATA, UINT32 *, BYTE **);
    114 
    115 TSS_RESULT obj_migdata_calc_pubkey_digest(UINT32, BYTE *, TPM_DIGEST *);
    116 TSS_RESULT obj_migdata_calc_msa_digest(struct tr_migdata_obj *);
    117 TSS_RESULT obj_migdata_calc_sig_data_digest(struct tr_migdata_obj *);
    118 
    119 #define MIGDATA_LIST_DECLARE		struct obj_list migdata_list
    120 #define MIGDATA_LIST_DECLARE_EXTERN	extern struct obj_list migdata_list
    121 #define MIGDATA_LIST_INIT()		tspi_list_init(&migdata_list)
    122 #define MIGDATA_LIST_CONNECT(a,b)	obj_connectContext_list(&migdata_list, a, b)
    123 #define MIGDATA_LIST_CLOSE(a)		obj_list_close(&migdata_list, &migdata_free, a)
    124 
    125 #else
    126 
    127 #define obj_is_migdata(a)		FALSE
    128 
    129 #define MIGDATA_LIST_DECLARE
    130 #define MIGDATA_LIST_DECLARE_EXTERN
    131 #define MIGDATA_LIST_INIT()
    132 #define MIGDATA_LIST_CONNECT(a,b)
    133 #define MIGDATA_LIST_CLOSE(a)
    134 
    135 #endif
    136 
    137 #endif
    138