Я использую брюки для взаимодействия с TPM в проекте. У меня возникла проблема с хранением SRK (корневого ключа хранилища).
Насколько я понимаю, пара ключей SRK создается во время владения TPM и хранится внутри TPM. Но похоже, что какая-то его часть хранится в системном постоянном хранилище (определяется конфигурацией system_ps_file). И в случае удаления системного постоянного хранилища невозможно больше загрузить SRK.
Код для создания SRK
TSS_FLAG srk_flags = TSS_KEY_TSP_SRK|TSS_KEY_AUTHORIZATION;
int result = Tspi_Context_CreateObject(hContext, TSS_OBJECT_TYPE_RSAKEY, srk_flags, srk_handle);
Код для загрузки SRK
TSS_UUID srk_uuid = TSS_UUID_SRK;
int result = Tspi_Context_LoadKeyByUUID(hContext, TSS_PS_TYPE_SYSTEM, srk_uuid, srk_handle);
Приведенный выше код работает правильно до тех пор, пока не появится системный файл данных постоянного хранилища. Но как только он удален, я получаю:
ERROR: Tspi Context LoadKeyByUUID (SRK ) failed rc =0 x2020
Есть ли способ восстановить удаленный файл хранилища? или чтобы не использовать его для SRK?