GnuTLS (tpmtools) api 用于在 TPM 中签署数据

GnuTLS (tpmtools) api for signing data in a TPM

最近我开始使用 TPM(1.2 版),在检查了官方 GnuTLS API 之后,我想知道哪些 API 函数是执行所有加密内容的正确函数芯片(签名证书获得 pk+ 密钥等...)。

目前我能够在 TPM 之外获取此数据,因此我可以在我的 C 代码中签名或获取私钥,但这不是我想要的。

谢谢大家!

事件的顺序是这样的:

  1. 调用 gnutls_tpm_key_list_get_url 获取 TPM 密钥列表。
  2. 从列表中选择您要用于签名的密钥并使用 gnutls_privkey_import_tpm_url 导入它。
  3. 现在您有了 gnutls_privkey_t 对象,您可以像使用任何其他键一样将其与 abstract API 一起使用。在您的情况下,您可能想使用 gnutls_privkey_sign_data 或类似的签名功能之一。

请记住,使用这种方法会限制您使用 TPM 1.2。来自 GnuTLS docs:

Note that we recommend against using TPM with this API because it is restricted to TPM 1.2. We recommend instead to use PKCS#11 wrappers for TPM such as CHAPS14 or opencryptoki15. These will allow using the standard smart card and HSM functionality (see Smart cards and HSMs) for TPM keys.