abrmd_policycommandcode.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # SPDX-License-Identifier: BSD-3-Clause
  2. source helpers.sh
  3. file_primary_key_ctx=prim.ctx
  4. file_input_data=secret.data
  5. file_policy=policy.data
  6. file_unseal_key_pub=sealkey.pub
  7. file_unseal_key_priv=sealkey.priv
  8. file_unseal_key_ctx=sealkey.ctx
  9. file_unseal_key_name=sealkey.name
  10. file_output_data=unsealed.data
  11. file_session_data=session.dat
  12. secret=12345678
  13. cleanup() {
  14. rm -f $file_primary_key_ctx $file_input_data $file_policy \
  15. $file_unseal_key_pub $file_unseal_key_priv $file_unseal_key_ctx \
  16. $file_unseal_key_name $file_output_data $file_session_data
  17. if [ "${1}" != "no-shutdown" ]; then
  18. shut_down
  19. fi
  20. }
  21. trap cleanup EXIT
  22. start_up
  23. cleanup "no-shutdown"
  24. echo $secret > $file_input_data
  25. tpm2 clear
  26. tpm2 createprimary -Q -C o -c $file_primary_key_ctx
  27. tpm2 startauthsession -S $file_session_data
  28. tpm2 policycommandcode -S $file_session_data -L $file_policy TPM2_CC_Unseal
  29. tpm2 flushcontext $file_session_data
  30. rm $file_session_data
  31. echo "tpm2 create -C $file_primary_key_ctx -u $file_unseal_key_pub \
  32. -r $file_unseal_key_priv -L $file_policy -i- <<< $secret"
  33. tpm2 create -C $file_primary_key_ctx -u $file_unseal_key_pub \
  34. -r $file_unseal_key_priv -L $file_policy -i- <<< $secret
  35. tpm2 load -C $file_primary_key_ctx -u $file_unseal_key_pub \
  36. -r $file_unseal_key_priv -n $file_unseal_key_name -c $file_unseal_key_ctx
  37. # Ensure unsealing passes with proper policy
  38. tpm2 startauthsession --policy-session -S $file_session_data
  39. tpm2 policycommandcode -S $file_session_data -L $file_policy TPM2_CC_Unseal
  40. tpm2 unseal -p session:$file_session_data -c sealkey.ctx > $file_output_data
  41. tpm2 flushcontext $file_session_data
  42. rm $file_session_data
  43. cmp -s $file_output_data $file_input_data
  44. # Test that other operations fail
  45. if tpm2 encryptdecrypt -o $file_output_data -c $file_unseal_key_ctx \
  46. $file_input_data; then
  47. echo "tpm2 policycommandcode: Should have failed!"
  48. exit 1
  49. else
  50. true
  51. fi
  52. exit 0