TPM 2.0中的tpm2_create命令对应的源文件就是tpm2_create.c,该文件位于tpm2-tools/tools/下,一共有671行(版本5.5)。
tpm2_create的功能是创建一个密钥。命令描述为:创建一个子对象。该对象可以是钥匙或密封对象。密封对象允许将用户数据密封到TPM,最大大小为128字节。另外,如果指定了-c,它将加载创建的对象。
下边用几篇文章的篇幅对tpm2_create.c文件结合tpm2_create命令进行深入的、完全的解析。
先来看第一段代码:
// Register this tool with tpm2_tool.c
TPM2_TOOL_REGISTER("create", tpm2_tool_onstart, tpm2_tool_onrun,
tpm2_tool_onstop, NULL)
TPM2_TOOL_REGISTER是一个宏定义,在tpm2-tools/tools/tpm2_tool.h中,代码如下:
#define TPM2_TOOL_REGISTER(tool_name,tool_onstart,tool_onrun,tool_onstop,tool_onexit) \
static const tpm2_tool tool = { \
.name = tool_na