abrmd_policyauthorize.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # SPDX-License-Identifier: BSD-3-Clause
  2. source helpers.sh
  3. pcr_ids=0
  4. alg_pcr_policy=sha256
  5. file_pcr_value=pcr.bin
  6. file_policy=policy.data
  7. file_authorized_policy_1=auth_policy_1.data
  8. file_authorized_policy_2=auth_policy_2.data
  9. file_session_file=session.dat
  10. file_private_key=private.pem
  11. file_public_key=public.pem
  12. file_verifying_key_public=verifying_key_public
  13. file_verifying_key_name=verifying_key_name
  14. file_verifying_key_ctx=verifying_key_ctx
  15. file_policyref=policyref
  16. cleanup() {
  17. rm -f $file_pcr_value $file_policy $file_session_file $file_private_key \
  18. $file_public_key $file_verifying_key_public $file_verifying_key_name \
  19. $file_verifying_key_ctx $file_policyref $file_authorized_policy_1 \
  20. $file_authorized_policy_2
  21. tpm2 flushcontext $file_session_file 2>/dev/null || true
  22. if [ "${1}" != "no-shutdown" ]; then
  23. shut_down
  24. fi
  25. }
  26. trap cleanup EXIT
  27. start_up
  28. cleanup "no-shutdown"
  29. generate_policy_authorize () {
  30. tpm2 startauthsession -Q -S $file_session_file
  31. tpm2 policyauthorize -Q -S $file_session_file -L $3 -i $1 -q $2 -n $4
  32. tpm2 flushcontext $file_session_file
  33. rm $file_session_file
  34. }
  35. openssl genrsa -out $file_private_key 2048 2>/dev/null
  36. openssl rsa -in $file_private_key -out $file_public_key -pubout 2>/dev/null
  37. tpm2 loadexternal -G rsa -C n -u $file_public_key -c $file_verifying_key_ctx \
  38. -n $file_verifying_key_name
  39. dd if=/dev/urandom of=$file_policyref bs=1 count=32 2>/dev/null
  40. tpm2 pcrread -Q -o $file_pcr_value ${alg_pcr_policy}:${pcr_ids}
  41. tpm2 startauthsession -Q -S $file_session_file
  42. tpm2 policypcr -Q -S $file_session_file -l ${alg_pcr_policy}:${pcr_ids} \
  43. -f $file_pcr_value -L $file_policy
  44. tpm2 flushcontext $file_session_file
  45. rm $file_session_file
  46. generate_policy_authorize $file_policy $file_policyref \
  47. $file_authorized_policy_1 $file_verifying_key_name
  48. tpm2 pcrextend \
  49. 0:sha256=e7011b851ee967e2d24e035ae41b0ada2decb182e4f7ad8411f2bf564c56fd6f
  50. tpm2 pcrread -Q -o $file_pcr_value ${alg_pcr_policy}:${pcr_ids}
  51. tpm2 startauthsession -Q -S $file_session_file
  52. tpm2 policypcr -Q -S $file_session_file -l ${alg_pcr_policy}:${pcr_ids} \
  53. -f $file_pcr_value -L $file_policy
  54. tpm2 flushcontext $file_session_file
  55. rm $file_session_file
  56. generate_policy_authorize $file_policy $file_policyref \
  57. $file_authorized_policy_2 $file_verifying_key_name
  58. diff $file_authorized_policy_1 $file_authorized_policy_2
  59. exit 0