abrmd_policyor.sh 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # SPDX-License-Identifier: BSD-3-Clause
  2. source helpers.sh
  3. policy_1=policy.1
  4. policy_2=policy.2
  5. policy_init=policy.init
  6. test_vector=test.vector
  7. policyor_cc=policyor.cc
  8. session_ctx=session.ctx
  9. o_policy_digest=policy.digest
  10. concatenated=con.cat
  11. cleanup() {
  12. rm -f $policy_1 $policy_2 $policy_init $test_vector $policyor_cc \
  13. $session_ctx $policy_digest $concatenated \
  14. set1.pcr0.policy set2.pcr0.policy prim.ctx sealkey.priv sealkey.pub \
  15. sealkey.ctx policyOR
  16. tpm2 flushcontext $session_ctx 2>/dev/null || true
  17. if [ "${1}" != "no-shutdown" ]; then
  18. shut_down
  19. fi
  20. }
  21. trap cleanup EXIT
  22. start_up
  23. cleanup "no-shutdown"
  24. dd if=/dev/urandom of=$policy_1 bs=1 count=32
  25. dd if=/dev/urandom of=$policy_2 bs=1 count=32
  26. dd if=/dev/zero of=$policy_init bs=1 count=32
  27. echo "00000171" | xxd -r -p > $policyor_cc
  28. cat $policy_init $policyor_cc $policy_1 $policy_2 > $concatenated
  29. openssl dgst -binary -sha256 $concatenated > $test_vector
  30. tpm2 startauthsession -S $session_ctx
  31. tpm2 policyor -L $o_policy_digest -S $session_ctx sha256:$policy_1,$policy_2
  32. tpm2 flushcontext $session_ctx
  33. diff $test_vector $o_policy_digest
  34. # Test case to compound two PCR policies
  35. tpm2 pcrreset 23
  36. tpm2 startauthsession -S session.ctx
  37. tpm2 policypcr -S session.ctx -l sha1:23 -L set1.pcr0.policy
  38. tpm2 flushcontext session.ctx
  39. rm session.ctx
  40. tpm2 pcrextend 23:sha1=f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
  41. tpm2 startauthsession -S session.ctx
  42. tpm2 policypcr -S session.ctx -l sha1:23 -L set2.pcr0.policy
  43. tpm2 flushcontext session.ctx
  44. rm session.ctx
  45. tpm2 startauthsession -S session.ctx
  46. tpm2 policyor -S session.ctx -L policyOR \
  47. sha256:set1.pcr0.policy,set2.pcr0.policy
  48. tpm2 flushcontext session.ctx
  49. rm session.ctx
  50. tpm2 createprimary -C o -c prim.ctx
  51. tpm2 create -g sha256 -u sealkey.pub -r sealkey.priv -L policyOR -C prim.ctx \
  52. -i- <<< "secretpass"
  53. tpm2 load -C prim.ctx -c sealkey.ctx -u sealkey.pub -r sealkey.priv
  54. tpm2 startauthsession -S session.ctx --policy-session
  55. tpm2 policypcr -S session.ctx -l sha1:23
  56. tpm2 policyor -S session.ctx -L policyOR \
  57. sha256:set1.pcr0.policy,set2.pcr0.policy
  58. unsealed=`tpm2 unseal -p session:session.ctx -c sealkey.ctx`
  59. echo $unsealed
  60. tpm2 flushcontext session.ctx
  61. rm session.ctx
  62. tpm2 pcrextend 23:sha1=f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
  63. tpm2 startauthsession -S session.ctx --policy-session
  64. tpm2 policypcr -S session.ctx -l sha1:23
  65. tpm2 pcrreset 23
  66. tpm2 startauthsession -S session.ctx --policy-session
  67. tpm2 policypcr -S session.ctx -l sha1:23
  68. tpm2 policyor -S session.ctx -L policyOR \
  69. sha256:set1.pcr0.policy,set2.pcr0.policy
  70. unsealed=`tpm2 unseal -p session:session.ctx -c sealkey.ctx`
  71. echo $unsealed
  72. tpm2 flushcontext session.ctx
  73. rm session.ctx
  74. exit 0