nvcertify.sh 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # SPDX-License-Identifier: BSD-3-Clause
  2. source helpers.sh
  3. cleanup() {
  4. rm -f primary.ctx signing_key.pub signing_key.priv signature.bin attestation.bin \
  5. sslpub.pem signing_key.ctx qual.dat
  6. if [ "$1" != "no-shut-down" ]; then
  7. shut_down
  8. fi
  9. }
  10. trap cleanup EXIT
  11. start_up
  12. cleanup "no-shut-down"
  13. tpm2 clear -Q
  14. tpm2 createprimary -C o -c primary.ctx -Q
  15. tpm2 create -G rsa -u signing_key.pub -r signing_key.priv -C primary.ctx \
  16. -c signing_key.ctx -Q
  17. tpm2 readpublic -c signing_key.ctx -f pem -o sslpub.pem -Q
  18. tpm2 nvdefine -s 32 -a "authread|authwrite" 1
  19. dd if=/dev/urandom bs=1 count=32 status=none| tpm2 nvwrite 1 -i-
  20. tpm2 nvcertify -C signing_key.ctx -g sha256 -f plain -s rsassa \
  21. -o signature.bin --attestation attestation.bin --size 32 1
  22. openssl dgst -verify sslpub.pem -keyform pem -sha256 -signature signature.bin \
  23. attestation.bin
  24. #
  25. # Test with qualifier data
  26. #
  27. dd if=/dev/urandom of=qual.dat bs=1 count=32
  28. tpm2 nvcertify -C signing_key.ctx -g sha256 -f plain -s rsassa \
  29. -o signature.bin --attestation attestation.bin --size 32 -q qual.dat 1
  30. openssl dgst -verify sslpub.pem -keyform pem -sha256 -signature signature.bin \
  31. attestation.bin
  32. #
  33. # Test if qualifier data was present in the attestation
  34. #
  35. xxd -p attestation.bin | tr -d '\n' | grep `xxd -p qual.dat | tr -d '\n'`
  36. exit 0