C# 和 TPM 函数

问题描述

我一直在互联网上无休止地搜索这个问题的答案,但不幸的是似乎在任何地方都找不到。

我正在尝试在 C# 中运行与此 PowerShell 命令等效的命令,但不必将 PowerShell 库导入到我的代码中:

Get-TpmEndorsementKeyInfo -hashalgorithm sha256

基本上,我想要得到的只是我的 TPM EK 的 SHA256 表示。如果可能,我还想检索相同的指纹,就像 PowerShell 命令在运行时给出的那样。

我曾尝试使用 Limpet (https://github.com/ms-iot/security/tree/master/Limpet/Limpet.NET) 但无济于事。

我为什么需要这个?我正在尝试使用 TPM 作为一种机制来证明 PC 是独一无二的,然后我可以使用该计算机的 TPM 设备独有的哈希来执行其他功能包括可能的许可。无论哪种方式,我都试图在 C# 中做到这一点。

理想情况下,我还找到了一种使用 C# 和 TPM 对消息进行签名的方法,但我会继续寻找。

有什么线索吗?

解决方法

我知道该类是在 Azure SDK 中的程序集中定义的,但您可以查看 Microsoft.Azure.Devices.Provisioning.Security.Tpm 包中定义的 SecurityProviderTpmHsm 类.