fapi-nv-extend.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. set -e
  2. source helpers.sh
  3. start_up
  4. CRYPTO_PROFILE="RSA"
  5. setup_fapi $CRYPTO_PROFILE
  6. function cleanup {
  7. tss2 delete --path=/
  8. shut_down
  9. }
  10. trap cleanup EXIT
  11. NV_PATH=/nv/Owner/NvExtend
  12. DATA_EXTEND_FILE=$TEMP_DIR/nv_extend.data
  13. DATA_READ_FILE=$TEMP_DIR/nv_read.data
  14. LOG_DATA=$TEMP_DIR/log.data
  15. READ_LOG_DATA=$TEMP_DIR/read_log.data
  16. EMPTY_FILE=$TEMP_DIR/empty.file
  17. BIG_FILE=$TEMP_DIR/big_file.file
  18. LOG_FILE=$TEMP_DIR/log.file
  19. touch $LOG_FILE
  20. echo -n 01234567890123456789 > $DATA_EXTEND_FILE
  21. echo -n 01234567890123456789 > $LOG_DATA
  22. tss2 provision
  23. tss2 createnv --path=$NV_PATH --type="noDa, pcr" --size=0 --authValue=""
  24. tss2 nvextend --nvPath=$NV_PATH --data=$DATA_EXTEND_FILE --logData=$LOG_DATA
  25. echo "tss2 nvextend with EMPTY_FILE data" # Expected to succeed
  26. tss2 nvextend --nvPath=$NV_PATH --data=$EMPTY_FILE --logData=$LOG_DATA
  27. echo "tss2 nvextend with BIG_FILE data" # Expected to fail
  28. expect <<EOF
  29. spawn sh -c "tss2 nvextend --nvPath=$NV_PATH --data=$BIG_FILE \
  30. --logData=$LOG_DATA 2> $LOG_FILE"
  31. set ret [wait]
  32. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  33. set file [open $LOG_FILE r]
  34. set log [read \$file]
  35. close $file
  36. send_user "[lindex \$log]\n"
  37. exit 1
  38. }
  39. EOF
  40. if [[ "`cat $LOG_FILE`" == $SANITIZER_FILTER ]]; then
  41. echo "Error: AddressSanitizer triggered."
  42. cat $LOG_FILE
  43. exit 1
  44. fi
  45. echo "tss2 nvextend with EMPTY_FILE logData" # Expected to fail
  46. expect <<EOF
  47. spawn sh -c "tss2 nvextend --nvPath=$NV_PATH --data=$DATA_EXTEND_FILE \
  48. --logData=$EMPTY_FILE 2> $LOG_FILE"
  49. set ret [wait]
  50. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  51. set file [open $LOG_FILE r]
  52. set log [read \$file]
  53. close $file
  54. send_user "[lindex \$log]\n"
  55. exit 1
  56. }
  57. EOF
  58. if [[ "`cat $LOG_FILE`" == $SANITIZER_FILTER ]]; then
  59. echo "Error: AddressSanitizer triggered."
  60. cat $LOG_FILE
  61. exit 1
  62. fi
  63. echo "tss2 nvextend with BIG_FILE logData" # Expected to fail
  64. expect <<EOF
  65. spawn sh -c "tss2 nvextend --nvPath=$NV_PATH --data=$DATA_EXTEND_FILE0 \
  66. --logData=$BIG_FILE 2> $LOG_FILE"
  67. set ret [wait]
  68. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  69. set file [open $LOG_FILE r]
  70. set log [read \$file]
  71. close $file
  72. send_user "[lindex \$log]\n"
  73. exit 1
  74. }
  75. EOF
  76. if [[ "`cat $LOG_FILE`" == $SANITIZER_FILTER ]]; then
  77. echo "Error: AddressSanitizer triggered."
  78. cat $LOG_FILE
  79. exit 1
  80. fi
  81. tss2 nvread --nvPath=$NV_PATH --data=$DATA_READ_FILE --logData=$READ_LOG_DATA
  82. if [ ! -f $READ_LOG_DATA ]; then
  83. echo "No log data returned"
  84. exit 1
  85. fi
  86. expect <<EOF
  87. # Try with missing nvPath
  88. spawn tss2 nvextend --data=$DATA_EXTEND_FILE --logData=$LOG_DATA
  89. set ret [wait]
  90. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  91. Command has not failed as expected\n"
  92. exit 1
  93. }
  94. EOF
  95. expect <<EOF
  96. # Try with missing data
  97. spawn tss2 nvextend --nvPath=$NV_PATH --logData=$LOG_DATA
  98. set ret [wait]
  99. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  100. Command has not failed as expected\n"
  101. exit 1
  102. }
  103. EOF
  104. expect <<EOF
  105. # Try with multiple stdin
  106. spawn tss2 nvextend --nvPath=$NV_PATH --data=- --logData=-
  107. set ret [wait]
  108. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  109. Command has not failed as expected\n"
  110. exit 1
  111. }
  112. EOF
  113. expect <<EOF
  114. # Try with multiple stdin
  115. spawn tss2 nvextend --nvPath $NV_PATH --data - --logData -
  116. set ret [wait]
  117. if {[lindex \$ret 2] || [lindex \$ret 3] != 1} {
  118. Command has not failed as expected\n"
  119. exit 1
  120. }
  121. EOF
  122. exit 0