abrmd_policypcr.sh 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # SPDX-License-Identifier: BSD-3-Clause
  2. source helpers.sh
  3. cleanup() {
  4. rm -f pcr.bin pcr.policy1 pcr.policy2 pcr.policy3
  5. tpm2 flushcontext session.ctx 2>/dev/null || true
  6. if [ "${1}" != "no-shutdown" ]; then
  7. shut_down
  8. fi
  9. }
  10. trap cleanup EXIT
  11. start_up
  12. cleanup "no-shutdown"
  13. tpm2 clear
  14. tpm2 pcrread sha1:0,1,2+sha256:0,1,2 -o pcr.bin
  15. # Policy PCR values calculated by specifying the expected pcr data in a file
  16. tpm2 startauthsession -S session.ctx
  17. tpm2 policypcr -Q -l sha1:0,1,2+sha256:0,1,2 -S session.ctx \
  18. -L pcr.policy1 -f pcr.bin
  19. tpm2 flushcontext session.ctx
  20. # Policy PCR values calculated by reading pcr data from the TPM
  21. tpm2 startauthsession -S session.ctx
  22. tpm2 policypcr -Q -l sha1:0,1,2+sha256:0,1,2 -S session.ctx \
  23. -L pcr.policy2
  24. tpm2 flushcontext session.ctx
  25. # Policy PCR values calculated by specifying digest of all PCRs directly
  26. tpm2 startauthsession -S session.ctx
  27. PCRDIGEST=`openssl dgst -sha256 -binary pcr.bin | xxd -p -c 32`
  28. tpm2 policypcr -Q -l sha1:0,1,2+sha256:0,1,2 -S session.ctx \
  29. -L pcr.policy3 $PCRDIGEST
  30. tpm2 flushcontext session.ctx
  31. # Check if policy pcr values match for all possible methods to specify PCR
  32. diff pcr.policy1 pcr.policy2
  33. diff pcr.policy2 pcr.policy3
  34. exit 0