我正在使用 Trousers 与项目的 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 ?