TPM 程序设计基础 2-2 :tpm_func.c 以及 spnam_check.c 分析
前言
前文 TPM 程序设计基础 2-1 :具体函数调用步骤及解析示例 简述了如何通过《TSS V1.2》文档来实现 C 语言 TPM 编程。
本文就包含了课设中所有调用 TPM 接口的 tpm_func.c 以及验证账户权限 spnam_check.c ,简述相应的函数的功能。
参考程序
- 在码云链接下的
src/
目录中:TPM-PCR-Management 。
tpm_func 代码结构
tpm_func.h
复制#ifndef TPM_FUNC_H
#define TPM_FUNC_H
void tpm_func_start();
void tpm_func_close();
int tpm_func_pcr_read_write_file();
int tpm_func_pcr_extra(UINT32 uint32_pcr_index, char *pcr_extra_string);
void tpm_func_pcr_reset();
#endif
tpm_func.c
复制#include .....
#include "tpm_func.h"
#define Debug(message, tResult) printf("%s : %s\n", message, (char *)Trspi_Error_String(tpm_handle.result))
/**
* 结构体
* 声明所有要用的 TPM 相关参数
*/
struct TPM_HANDLE {
......
}tpm_handle;
/**
* 获取 TPM、上下文对象、PCR合成对象 句柄
* 参数:无
*/
void tpm_func_start()
{
......
}
/**
* 释放 上下文对象 内存
* 参数:无
*/
void tpm_func_close()
{
......
}
/**
* 读取 TPM PCR 的值,每个 PCR 值为一行写入 ./logs/pcr_read.txt 文件
* 参数:无
* 返回值:-1,文件指针打开失败;0,成功。
*/
int tpm_func_pcr_read_write_file()
{
......
}
/**
* 扩展指定的 PCR,再调用 tpm_func_pcr_read_write_file() 函数读取PCR、写入文件
* 参数:
* UINT32 uint32_pcr_index : 指定 PCR
* char *pcr_extra_string : 扩展依据的内容
*/
int tpm_func_pcr_extra(UINT32 uint32_pcr_index, char *pcr_extra_string)
{
......
}
spnam_check 代码结构
spnam_check.h
复制#ifndef SPNAM_CHECK_H
#define SPNAM_CHECK_H
int spnam_check();
#endif
spnam_check.c
复制#define _XOPEN_SOURCE
#include ......
#include "spnam_check.h"
/**
* 验证账户权限函数
* 参数:char *name, char *passwd
*/
int spnam_check(char *name, char *passwd)
{
......
}
作者:Yogile
出处:https://www.cnblogs.com/Yogile/p/12808883.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
《可信计算基础》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构