int vtpm_memdb_init() // get the tpm information and init the vtpm database { int retval; int ret; char * record_package; TSS_HKEY hSignKey; TSS_RESULT result; BYTE digest[DIGEST_SIZE]; struct vTPM_info *local_tpm; struct vTPM_wrappedkey *local_signkey; struct vTPM_publickey *local_signpubkey; char * keypass="******"; local_tpm=malloc(sizeof(struct vTPM_info)); if(local_tpm==NULL) return -ENOMEM; local_signkey=malloc(sizeof(struct vTPM_wrappedkey)); if(local_signkey==NULL) return -ENOMEM; local_signpubkey=malloc(sizeof(struct vTPM_publickey)); if(local_signpubkey==NULL) return -ENOMEM; // if it is the first time to exec it, we should create a sign key for controller. result=TESI_Local_Reload(); if ( result != TSS_SUCCESS ) { printf("TESI_Local_Load Err!\n"); return result; } // create this vtpm's info struct char local_uuid[DIGEST_SIZE*2+1]; ret=proc_share_data_getvalue("uuid",local_uuid); ret=create_physical_tpm_struct(local_tpm,local_uuid,"vtpm_manager","ooo","sss",NULL,NULL); AddPolicy(local_tpm,"VM_T"); ExportPolicyToFile("lib/VM_T.lib","VM_T"); printf("create local tpm info success!\n"); TESI_Local_Fin(); return 0; }
int main( int argc, char ** argv ) { int ret; char *function = "Tspi_TESI_Init"; TSS_RESULT result = 0; TSS_HKEY hCAKey; TSS_HKEY hSignKey; TSS_HKEY hReloadKey; TSS_HKEY hReloadPubKey; X509_REQ * cert_req; X509 * cert; char uuid[DIGEST_SIZE*2]; char buf[4096]; RSA * rsa; RSA * rsa1; RSA * rsa2; if(argc!=3) { printf("Error Usage: Should be %s [CA_name] [Key_passwd])",argv[0]); return -EINVAL; } OpenSSL_add_all_algorithms(); ERR_load_crypto_strings(); result=TESI_Local_Reload(); if ( result != TSS_SUCCESS ) { printf("TESI_Local_Load Err!\n"); return result; } int num=1024; result=TESI_Local_GetRandom(buf,num); if(result == TSS_SUCCESS) printf("Get %d Random num SUCCEED!\n",num); else return -EINVAL; RAND_seed(buf,num); rsa=Generate_RSA_Key(); if(rsa==NULL) { printf("Generate RSA Key Failed!\n"); return -EINVAL; } printf("Generate RSA Key Succeed!\n",num); WritePrivKey(rsa,argv[1],argv[2]); WritePubKey(rsa,argv[1]); result=ReadPubKey(&rsa1,argv[1]); if(result != TSS_SUCCESS) return -EINVAL; result=ReadPrivKey(&rsa2,argv[1],argv[2]); if(result != TSS_SUCCESS) return -EINVAL; result=Create_X509_RSA_Cert(argv[1],6,entries,rsa1,rsa2); return result; }