Object Creation

介绍

        

TPM2_Create()、TPM2_CreatePrimary() 和 TPM2_CreateLoaded() 用于创建属于 TPM 存储层次结构的对象(密钥和数据)。 TPM2_CreatePrimary() 用于创建从主种子派生的主对象。 TPM2_Create() 用于创建使用来自 TPM RNG 的值生成的普通对象。 TPM2_CreateLoaded() 可用于创建主要或普通对象。

   注意: TPM2_CreateLoaded() 也可用于派生对象。

特别是,在创建密钥时:
• TPM2_CreatePrimary() – 创建并加载主要对象以供立即使用并提供creationData。
• TPM2_Create() – 创建普通对象供以后使用(通过TPM2_Load())。 TPM2_Create() 返回包含普通对象敏感区域的 BLOB 并提供 creationData。
• TPM2_CreateLoaded()——根据父对象的类型,生成并加载一个Primary Object,一个Ordinary Object; 或派生对象。

需要使用 Parent 的授权才能生成子对象。 需要使用主要种子的授权才能创建主要对象。
这些命令创建的所有对象在大多数方面都是相似的。 对于 TPM2_Create() 和 TPM2_CreatePrimary(),创建对象所需的参数对于这两个命令是相同的。 他们是:

• 公共区域模板,
• 敏感值,
• 可选的用户提供的身份数据,以及
• 可选的创建PCR 选择。

对于 TPM2_CreateLoaded(),唯一的参数是公共区域模板和敏感值。

注: 用户数据和 PCR 参数不用于 TPM2_CreateLoaded(),因为它不返回用于创建认证的 creationData。 对于需要创建证明的对象,可以使用 TPM2_Create() 或 TPM2_CreatePrimary() 函数。

可以使用 TPM2_Create() 创建的任何类型的对象都可以使用 TPM2_CreatePrimary() 或 TPM2_CreateLoaded() 创建

TPM2_CreateLoaded() 可用于创建非对称密钥,但不能用于派生某些类型的非对称密钥。 此限制是因为某些非对称密钥类型(如 RSA)的算法存在差异。

从种子创建的对象的敏感区域不会离开 TPM,除非在保存的上下文中或通过复制。 如果主对象未在上下文中保存(并且不持久),则需要在下一个 TPM2_Startup() 之后重新创建。 即使上下文已保存,如果主对象未在 TPM 中持久化 (TPM2_EvictControl()),则需要在每次 TPM 重置后重新创建它。

参考文档<<TCG_TPM2_r1p59_Part1_Architecture_pub.pdf>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值