命令计划
命令计划
可以随时将命令提交到来自多个上下文的 TBS。 但是,物理 TPM 一次只能处理一个命令,某些命令可以长时间运行。 当多个命令挂起时,TBS 决定要发送到 TPM 的命令。 提交命令后,每个命令都具有与之关联的优先级。 TBS 使用这些优先级来确定每当 TPM 可用时要提交的挂起命令。 优先级的四个级别较低、正常、高和系统。 应用程序应使用低优先级、正常优先级或高优先级。 尽管高优先级命令通常在低优先级命令之前执行,但 TBS 命令计划程序有一个老化的策略,最终会为长时间被阻止的命令提供非常高的优先级。
上下文管理
当向 TBS 管理的资源提交TPM_SaveContext或 TPM2 ContextSave 命令时,TBS 会在物理资源上执行相应的命令,如果资源在 TPM 中实际存在,则向调用方返回结果。 如果 TPM 中不存在资源,则TPM_SaveContext或TPM2_ContextSave命令的预处理会导致重新加载资源,此时上下文将保存并返回到调用方。 如果保存的资源的类型在保存后通常从 TPM 自动刷新,则 TBS 会在此命令完成后使虚拟资源失效。 将TPM_LoadContext或TPM2_ContextLoad命令提交到 TBS 时,TBS 会立即执行该命令。 如果命令成功完成,则 TBS 将资源句柄虚拟化,并将生成的 TPM 字节流传递给调用方。 将TPM_FlushSpecific或TPM2_FlushContext命令与 TBS 管理的资源虚拟句柄一起提交时,TBS 会执行TPM_FlushSpecific或TPM2_FlushContext命令,以从 TPM 中逐出资源(如果其实际存在)。 在这种情况下,TBS 会使虚拟资源失效,并将刷新命令的结果返回到调用方。 如果资源在 TPM 中不存在,则 TPM_FlushSpecific 或 TPM2_FlushContext 命令的预处理将加载与虚拟句柄对应的资源,但在实际处理命令时会刷新该资源。 TBS 不支持TPM_KeyControlOwner位或TPM_LoadContext操作的 keepHandle 功能,因此在保存上下文之前,它不会为资源提供相同的句柄。
其他命令
本文档中未提及的命令通过根据需要将虚拟密钥句柄替换为物理密钥句柄, () 并将它们提交到 TPM 来处理。 执行相应的操作后完成此操作,以确保在 TPM 上实际存在正在使用的资源。 不会执行其他特殊处理。 TBS 不会尝试通过修改从 TPM 传回的数据作为TPM_GetCapabilities或TPM2_GetCapability查询的一部分来提高虚拟化的保真度。 TBS 还支持 TCG 物理状态命令。 TBS 充当物理状态命令的直通;TBS 本身不会执行任何特殊处理。
清理
上下文退出时,将清理与其关联的所有物理和虚拟资源,使其不再使用系统资源。