From: Kent Y. <shp...@gm...> - 2013-01-15 20:49:35
|
Hi, On Wed, Jan 9, 2013 at 3:02 AM, guohang.bao <guo...@da...> wrote: > CODE HERE: > int main(int argc, char *argv) { > TSS_RESULT result; > TSS_HTPM hTPM; > TSS_HCONTEXT hContext; > TSS_HPOLICY hownerpolicy, hSRKPolicy, hNVPolicy; > TSS_HKEY hSRK, hstoragekey; > TSS_UUID SRK_UUID = TSS_UUID_SRK; > TSS_HNVSTORE hNVStore; > TSS_FLAG initFlags = TSS_KEY_TYPE_STORAGE | TSS_KEY_SIZE_2048 | > TSS_KEY_NO_AUTHORIZATION; //密钥标记 > > int keyBlobLen, pubKeySize = 284; > BYTE* pubKey, keyBlob; > > result = Tspi_Context_Create(&hContext); > if (result != TSS_SUCCESS) { > printf("Context_Create ERROR:%s(%04x)\n", get_error(result), > result); > } > result = Tspi_Context_Connect(hContext, NULL); > if (result != TSS_SUCCESS) { > printf("Context_Connect ERROR:%s(%04x)\n", get_error(result), > result); > } > // > // > // result = Tspi_Context_GetTpmObject(hContext, &hTPM); > // if (result != TSS_SUCCESS) { > // printf("Tspi_Context_GetTpmObject ERROR:%s(%04x)\n", > get_error(result), result); > // } > // result = Tspi_GetPolicyObject(hTPM, TSS_POLICY_USAGE, > &hownerpolicy); > // if (result != TSS_SUCCESS) { > // printf("Tspi_GetPolicyObject ERROR:%s(%04x)\n", > get_error(result), result); > // } > //// result = Tspi_Policy_SetSecret(hownerpolicy, > TSS_SECRET_MODE_PLAIN, 20, (BYTE*) "00000000000000000000"); > // result = Tspi_Policy_SetSecret(hownerpolicy, TSS_SECRET_MODE_NONE, > 0, NULL); > // if (result != TSS_SUCCESS) { > // printf("Tspi_Policy_SetSecret ERROR:%s(%04x)\n", > get_error(result), result); > // } > > result = Tspi_Context_LoadKeyByUUID(hContext, TSS_PS_TYPE_SYSTEM, > SRK_UUID, &hSRK); > if (result != TSS_SUCCESS) { > printf("Tspi_Context_LoadKeyByUUID ERROR:%s(%04x)\n", > get_error(result), result); > } > > result = Tspi_GetPolicyObject(hSRK, TSS_POLICY_USAGE, &hSRKPolicy); > // if (result != TSS_SUCCESS) { > // printf("Tspi_GetPolicyObject ERROR:%s(%04x)\n", > get_error(result), result); > // } > // > // result = Tspi_Policy_SetSecret(hSRKPolicy, TSS_SECRET_MODE_NONE, > 0, NULL); > result = Tspi_Policy_SetSecret(hSRKPolicy, TSS_SECRET_MODE_PLAIN, 5, > (BYTE*) "admin"); > // result = Tspi_Policy_SetSecret(hSRKPolicy, TSS_SECRET_MODE_POPUP, > 0, NULL); > if (result != TSS_SUCCESS) { > printf("Tspi_Policy_SetSecret ERROR:%s(%04x)\n", > get_error(result), result); > } > > result = Tspi_Context_CreateObject(hContext, TSS_OBJECT_TYPE_RSAKEY, > initFlags, &hstoragekey); > > result = Tspi_SetAttribUint32(hstoragekey, TSS_TSPATTRIB_KEY_INFO, > TSS_TSPATTRIB_KEYINFO_ENCSCHEME, TSS_ES_RSAESOAEP_SHA1_MGF1); > > result = Tspi_Key_CreateKey(hstoragekey, hSRK, 0); > > result = Tspi_Key_LoadKey(hstoragekey, hSRK); > > result = Tspi_Key_GetPubKey(hstoragekey, &pubKeySize, &pubKey); > // > result = Tspi_GetAttribData(hstoragekey, TSS_TSPATTRIB_KEY_BLOB, > TSS_TSPATTRIB_KEYBLOB_BLOB, (UINT32 *) & keyBlobLen, > (BYTE **) & keyBlob); > result = Tspi_Context_CreateObject(hContext, TSS_OBJECT_TYPE_NV, 0, > &hNVStore); > > result = Tspi_SetAttribUint32(hNVStore, TSS_TSPATTRIB_NV_INDEX, 0, > 0x00011680); Your NV index looks suspect here. If you check the spec, you'll notice that this index is reserved for GPIO pins. See the TPM main spec, part 2 structures, section 19.1.2. Kent > /* Set the permission for the index. */ > result = Tspi_SetAttribUint32(hNVStore, > TSS_TSPATTRIB_NV_PERMISSIONS, 0, 0x2000); > > /* Set the data size to be defined. */ > result = Tspi_SetAttribUint32(hNVStore, TSS_TSPATTRIB_NV_DATASIZE, > 0, 559); > /*Define NV space*/ > result = Tspi_NV_DefineSpace(hNVStore, 0, 0); > > // result = > Tspi_NV_WriteValue(hNVStore, /*offset*/0, /*datalength*/559, &keyBlob); > printf("%s\n", get_error(result)); > Tspi_Context_Close(hContext); > return 0; > } > > > > ------------------------------------------------------------------------------ > Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery > and much more. Keep your Java skills current with LearnJavaNow - > 200+ hours of step-by-step video tutorials by Java experts. > SALE $49.99 this month only -- learn more at: > http://p.sf.net/sfu/learnmore_122612 > _______________________________________________ > TrouSerS-users mailing list > Tro...@li... > https://lists.sourceforge.net/lists/listinfo/trousers-users |