def get_pcr_values()

in cvm-attestation/tpm_wrapper.py [0:0]


  def get_pcr_values(self, pcr_list):
    tpm = Tpm()
    tpm.connect()
    
    self.log.info('Reading PCR Values from the TPM...')

    pcr_select = self.get_pcr_select(pcr_list)
    pcr_values = []
    pcr_values_count = 0
    maskSum = 1
    while maskSum != 0:
      ret = tpm.PCR_Read(pcr_select)
      pcrVals = ret.pcrValues
      pcrSel = ret.pcrSelectionOut

      if pcrVals and pcrSel:
        index = 0
        for value in pcrVals:
          pcr = PcrValue(pcr_values_count, value.buffer)
          pcr_values.insert(pcr_values_count, pcr)
          index = index + 1
          pcr_values_count = pcr_values_count + 1

        pcr_values_count = pcr_values_count + 3
        self.log.info(pcr_select[0].pcrSelect)
        maskSum = 0
        i = 0
        while i < len(pcrSel[0].pcrSelect):
          pcr_select[0].pcrSelect[i] &= (~pcrSel[0].pcrSelect[i])
          maskSum = maskSum + pcr_select[0].pcrSelect[i]
          i = i + 1

    self.log.info('Done reading PCR values')
    tpm.close()

    return pcr_values