fapi-nv-write-authorize_ecc.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. set -e
  2. source helpers.sh
  3. start_up
  4. CRYPTO_PROFILE="ECC"
  5. setup_fapi $CRYPTO_PROFILE
  6. function cleanup {
  7. tss2 delete --path=/
  8. shut_down
  9. }
  10. trap cleanup EXIT
  11. POLICY_SIGN_KEY_PATH="HS/SRK/policySignKey"
  12. SIGN_KEY_PATH="HS/SRK/signKey"
  13. NV_PATH="/nv/Owner/myNV"
  14. PCR_POLICY_JSON=$TEMP_DIR/pol_pcr16_0.json
  15. POLICY_PCR=policy/pcr-policy
  16. AUTHORIZE_NV_POLICY_JSON=$TEMP_DIR/pol_authorize_nv.json
  17. AUTHORIZE_NV_POLICY=policy/authorize-nv-policy
  18. SIGNATURE_FILE=$TEMP_DIR/signature.file
  19. PUBLIC_KEY_FILE=$TEMP_DIR/public_key.file
  20. DIGEST_FILE=$TEMP_DIR/digest.file
  21. echo -n 01234567890123456789 > $DIGEST_FILE
  22. tss2 provision
  23. tss2 createnv --path=$NV_PATH --type="noDa" --size=34 --authValue=""
  24. tss2 import --path=$AUTHORIZE_NV_POLICY --importData=$AUTHORIZE_NV_POLICY_JSON
  25. tss2 import --path=$POLICY_PCR --importData=$PCR_POLICY_JSON
  26. expect <<EOF
  27. # Try if command is supported
  28. spawn tss2 writeauthorizenv --nvPath=$NV_PATH --policyPath=$POLICY_PCR
  29. set ret [wait]
  30. if {[lindex \$ret 2] || [lindex \$ret 3] != 0} {
  31. send_user "Command has failed. If using a physical TPM, see log since it is
  32. probably not supported by TPM. Skipping test\n"
  33. exit 77
  34. }
  35. EOF
  36. tss2 createkey --path=$POLICY_SIGN_KEY_PATH --type="noDa, sign" --authValue=""
  37. tss2 createkey --path=$SIGN_KEY_PATH --type="noDa, sign" \
  38. --policyPath=$AUTHORIZE_NV_POLICY --authValue=""
  39. if [ "$CRYPTO_PROFILE" = "RSA" ]; then
  40. tss2 sign --keyPath=$SIGN_KEY_PATH --padding="RSA_PSS" --digest=$DIGEST_FILE \
  41. --signature=$SIGNATURE_FILE --publicKey=$PUBLIC_KEY_FILE
  42. else
  43. tss2 sign --keyPath=$SIGN_KEY_PATH --digest=$DIGEST_FILE \
  44. --signature=$SIGNATURE_FILE --publicKey=$PUBLIC_KEY_FILE
  45. fi
  46. expect <<EOF
  47. # Try with missing nvPath
  48. spawn tss2 writeauthorizenv --policyPath=$POLICY_PCR
  49. set ret [wait]
  50. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  51. send_user "Command has not failed as expected\n"
  52. exit 1
  53. }
  54. EOF
  55. expect <<EOF
  56. # Try with missing policyPath
  57. spawn tss2 writeauthorizenv --nvPath=$NV_PATH
  58. set ret [wait]
  59. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  60. send_user "Command has not failed as expected\n"
  61. exit 1
  62. }
  63. EOF
  64. expect <<EOF
  65. # Try to fail command
  66. spawn tss2 writeauthorizenv --nvPath=/abc/def --policyPath=$POLICY_PCR
  67. set ret [wait]
  68. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  69. send_user "Command has not failed as expected\n"
  70. exit 1
  71. }
  72. EOF
  73. exit 0