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);
/* 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-users