command-codes

Hierarchy Commands
 

TPM2_CreatePrimary

此命令用于在主种子之一下创建主对象或在 TPM_RH_NULL 下创建临时对象。 该命令使用 TPM2B_PUBLIC 作为要创建的对象的模板。 不应检查唯一字段的大小是否与其他对象参数一致。 该命令将创建并加载一个主对象。 不返回敏感区域。

注 1 由于未返回敏感数据,因此无法重新加载密钥。 它既可以持久化,也可以重新创建。
注 2 为了互操作性,唯一字段不应设置为大于对象参数所允许的值,以便解组不会失败。
注 3 空缓冲区是合法的唯一字段值。

示例 1 对象参数中 keyBits 为 2048 的 TPM_ALG_RSA 对象应具有不大于 256 字节的唯一字段。
示例 2 TPM_ALG_KEYEDHASH 或 TPM_ALG_SYMCIPHER 对象应具有唯一字段,该字段不大于对象的 nameAlg 生成的摘要

TPM2_Create() 允许的任何类型的对象和属性组合都可以通过此命令创建。 模板和参数的约束与 TPM2_Create() 相同,除了主存储密钥和临时存储密钥不受限于使用其父代的算法。 对于已创建对象的属性设置,fixedParent、fixedTPM、decrypt 和 restricted 隐含在父对象(永久句柄)中设置。 其余属性隐含为 CLEAR。
TPM 将使用批准的 KDF 从 primaryHandle 中指示的主要种子派生对象。 模板的所有位都用于创建主密钥。 从主种子创建主对象的方法在 TPM 2.0 第 1 部分中描述并在 TPM 2.0 第 4 部分中实现。如果使用相同的 inPublic 参数、inSensitive.data 和主种子多次调用此命令,则 TPM 应生成 相同的主要对象。

此命令需要授权。 附加到平台主要种子 (PPS) 的主要对象的授权应由 platformAuth 或 platformPolicy 提供。 主要对象授权附加到存储主种子(SPS)的应由 ownerAuth 或 ownerPolicy 提供。 附加到背书主种子 (EPS) 的主密钥的授权应由 endorsementAuth 或 endorsementPolicy 提供

10.2 source

10.2.6 CryptUtil.c
 

10.2.6.6 Algorithm-Independent Functions

10.2.6.6.8 CryptCreateObject()
 

这个函数创建一个对象。 对于非对称密钥,它将创建一个密钥对,对于父密钥,它将创建一个用于子保护的种子值。 对于对称对象(TPM_ALG_SYMCIPHER 或 TPM_ALG_KEYEDHASH),如果调用者未提供密钥,它将创建一个密钥。 它将创建一个随机的秘密种子值,该种子值与秘密值一起散列以创建公共唯一值。 publicArea、sensitive 和 sensitiveCreate 是唯一必需的参数,也是 TPM2_Create() 使用的唯一参数。 其他参数是可选的,当生成的对象需要确定性时使用。 主对象和派生对象都是这种情况。 当提供种子值时,将填充 RAND_STATE 并将其用于对象生成中需要随机数的所有操作。 在最简单的情况下,TPM2_CreatePrimary() 将使用种子、标签和上下文,其中上下文是模板的哈希值。 如果主对象在背书层次结构中,它也将使用 ehProof 填充证明。 对于派生密钥,种子将是来自父项的秘密值,标签和上下文将根据 TPM2_CreateLoaded() 的参数进行设置,并且将设置 hashAlg,这会导致 RAND_STATE 成为 KDF 生成器。

ibmtpm 1682版本中的实现:

 

 

 

引用<<TCG_TPM2_r1p59_Part3_Commands_code_pub.pdf>>

引用<<TCG_TPM2_r1p59_Part4_SuppRoutines_code_pub.pdf>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值