이 TPM 에뮬레이터는 PCR 레지스터를 확장하기 위해 TPM 사양을 따릅니까?

StackOverflow https://stackoverflow.com/questions/1707369

  •  19-09-2019
  •  | 
  •  

문제

다음 코드는 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;
}
도움이 되었습니까?

해결책

Afaik, 그렇습니다. 내 의견을보십시오 SHA1SUM의 두 해시 출력을 수행하거나 수행하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top