【问题标题】:Does this TPM emulator follow TPM spec for extending PCR register?这个 TPM 仿真器是否遵循 TPM 规范来扩展 PCR 寄存器?
【发布时间】:2009-11-10 11:43:17
【问题描述】:

以下代码来自 Mario Strasser 的 TPM 模拟器。规范说,

PCR := SHA1(PCR || data) 

读取“将 PCR 的旧值与数据连接,对连接的字符串进行哈希处理并将哈希存储在 PCR 中”。不是PCR := PCR BITWISE-OR SHA1(data) 也不是PCR := SHA1(PCR BITWISE-OR data)

TPM_RESULT TPM_Extend(TPM_PCRINDEX pcrNum, TPM_DIGEST *inDigest, 
                      TPM_PCRVALUE *outDigest)
{
  tpm_sha1_ctx_t ctx;

  info("TPM_Extend()");
  if (pcrNum >= TPM_NUM_PCR) return TPM_BADINDEX;
  if (!(PCR_ATTRIB[pcrNum].pcrExtendLocal & (1 << LOCALITY))) return TPM_BAD_LOCALITY;
  /* compute new PCR value as SHA-1(old PCR value || inDigest) */
  tpm_sha1_init(&ctx);
  tpm_sha1_update(&ctx, PCR_VALUE[pcrNum].digest, sizeof(PCR_VALUE[pcrNum].digest));
  tpm_sha1_update(&ctx, inDigest->digest, sizeof(inDigest->digest));
  tpm_sha1_final(&ctx, PCR_VALUE[pcrNum].digest);  
  /* set output digest */
  if (tpmData.permanent.flags.disable) {
    memset(outDigest->digest, 0, sizeof(*outDigest->digest));
  } else {
    memcpy(outDigest, &PCR_VALUE[pcrNum], sizeof(TPM_PCRVALUE));
  }
  return TPM_SUCCESS;
}

【问题讨论】:

    标签: c sha tpm


    【解决方案1】:

    AFAIK,是的。在Perform OR on two hash outputs of sha1sum中查看我的评论

    【讨论】:

    猜你喜欢
    • 2013-10-11
    • 2022-08-17
    • 2017-04-23
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多