38 lines
729 B
Bash
Executable File
38 lines
729 B
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Read a password previously stored with tpm-nv-store-password.sh from a
|
|
# TPM 2.0 NV index.
|
|
# Requires: tpm2-tools, access to /dev/tpmrm0 (tss group or root).
|
|
|
|
set -euo pipefail
|
|
|
|
HANDLE="0x1500016"
|
|
|
|
usage() {
|
|
cat <<-EOF
|
|
Usage: $(basename "$0") [-H handle]
|
|
|
|
-H handle NV index the password was stored at (default: ${HANDLE})
|
|
EOF
|
|
}
|
|
|
|
while getopts "H:h" opt; do
|
|
case "$opt" in
|
|
H) HANDLE="$OPTARG" ;;
|
|
h) usage; exit 0 ;;
|
|
*) usage; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
command -v tpm2_nvread >/dev/null || {
|
|
echo "tpm2-tools is required (apt install tpm2-tools)" >&2
|
|
exit 1
|
|
}
|
|
|
|
if ! tpm2_nvreadpublic | grep -q "^${HANDLE}:"; then
|
|
echo "No NV index found at ${HANDLE}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
tpm2_nvread -C o "$HANDLE"
|