blob: b4f5555beefa3ca3617c6a1edce064a07dfab56c [file] [log] [blame]
#!/bin/sh
#
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -e
TPM_FIRMWARE_UPDATE_LOCATION="/run/tpm_firmware_update_location"
TPM_FIRMWARE_UPDATE_SRK_VULNERABLE_ROCA="/run/tpm_firmware_update_srk_vulnerable_roca"
main() {
# Record whether the SRK is vulnerable to ROCA.
if tpm-manager get_srk_status | grep -q '^srk_vulnerable_roca 1$'; then
touch "${TPM_FIRMWARE_UPDATE_SRK_VULNERABLE_ROCA}"
fi
# Write to temp file and move so the correct state appears atomically.
local tpm_version_info="$(tpm-manager get_version_info)"
local ifx_upgrade_info="$(tpm-manager get_ifx_field_upgrade_info)"
if tpm-firmware-locate-update "${tpm_version_info}" "${ifx_upgrade_info}" \
> "${TPM_FIRMWARE_UPDATE_LOCATION}.tmp"; then
mv "${TPM_FIRMWARE_UPDATE_LOCATION}.tmp" "${TPM_FIRMWARE_UPDATE_LOCATION}"
else
# If there's no update or an error, create an empty file to signal to
# consumers that the check has completed without finding an update.
touch "${TPM_FIRMWARE_UPDATE_LOCATION}"
fi
}
main "$@"