static TSS_RESULT tpmCreateEk(TSS_HTPM a_hTpm, TSS_HKEY a_hKey, TSS_VALIDATION * a_pValData) { TSS_RESULT result = Tspi_TPM_CreateEndorsementKey(a_hTpm, a_hKey, a_pValData); tspiResult("Tspi_TPM_CreateEndorsementKey", result); return result; }
static int createek(TSS_HCONTEXT hContext, TSS_HTPM hTPM) { TSS_RESULT ret; TSS_HOBJECT hKeyEK; TSS_VALIDATION ValidationData; TPM_NONCE nonce; TPM_DIGEST digest; /* Create the empty key struct for EK */ ret = Tspi_Context_CreateObject(hContext, TSS_OBJECT_TYPE_RSAKEY, (TSS_KEY_NO_AUTHORIZATION | TSS_KEY_NON_VOLATILE | TSS_KEY_NOT_MIGRATABLE | TSS_KEY_TYPE_STORAGE | TSS_KEY_SIZE_2048 | TSS_KEY_NOT_CERTIFIED_MIGRATABLE | TSS_KEY_STRUCT_KEY12 | TSS_KEY_EMPTY_KEY), &hKeyEK); if (ret) { print_error(ret, gettext("Create endorsement key object")); return (ERR_FAIL); } ValidationData.ulExternalDataLength = sizeof (nonce); ValidationData.rgbExternalData = (BYTE *) &nonce; ret = get_random(sizeof (nonce), (BYTE *) &nonce); if (ret) return (ERR_FAIL); ValidationData.ulValidationDataLength = sizeof (digest); ValidationData.rgbValidationData = (BYTE *) &digest; ret = Tspi_TPM_CreateEndorsementKey(hTPM, hKeyEK, &ValidationData); if (ret) { print_error(ret, gettext("Create endorsement key")); return (ERR_FAIL); } return (0); }