#!/bin/sh # bashsupport disable=BP5007 # SPDX-Version: 3.0 # SPDX-CreationInfo: 2025-10-28; WEIDNER, Marc S.; # SPDX-ExternalRef: GIT https://git.coresecret.dev/msw/CISS.debian.live.builder.git # SPDX-FileContributor: WEIDNER, Marc S.; Centurion Intelligence Consulting Agency # SPDX-FileCopyrightText: 2024-2025; WEIDNER, Marc S.; # SPDX-FileType: SOURCE # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-LicenseComment: This file is part of the CISS.debian.installer.secure framework. # SPDX-PackageName: CISS.debian.live.builder # SPDX-Security-Contact: security@coresecret.eu ### Modified Version of the original file: ### https://salsa.debian.org/live-team/live-boot 'components/0030-verify-checksums' ### In case of successful verification of one of the offered checksums, proceed with booting, else panic. ####################################### # Modified checksum-verification script for continuing the boot process. # Globals: # LIVE_BOOT_CMDLINE # LIVE_VERIFY_CHECKSUMS # LIVE_VERIFY_CHECKSUMS_DIGESTS # _CHECKSUM # _CHECKSUMS # _DIGEST # _MOUNTPOINT # _PARAMETER # _RETURN # _TTY # Arguments: # 1: ${_PARAMETER} # Returns: # 0 : Successful Verification ####################################### Verify_checksums() { for _PARAMETER in ${LIVE_BOOT_CMDLINE}; do case "${_PARAMETER}" in live-boot.verify-checksums=* | verify-checksums=*) LIVE_VERIFY_CHECKSUMS="true" LIVE_VERIFY_CHECKSUMS_DIGESTS="${_PARAMETER#*verify-checksums=}" ;; live-boot.verify-checksums | verify-checksums) LIVE_VERIFY_CHECKSUMS="true" ;; esac done case "${LIVE_VERIFY_CHECKSUMS}" in true) : ;; *) return 0 ;; esac _MOUNTPOINT="${1}" LIVE_VERIFY_CHECKSUMS_DIGESTS="${LIVE_VERIFY_CHECKSUMS_DIGESTS:-sha512 sha384 sha256}" _TTY="/dev/tty8" log_begin_msg "Verifying checksums" printf "\n" # shellcheck disable=SC2164 cd "${_MOUNTPOINT}" # shellcheck disable=SC2001 for _DIGEST in $(echo "${LIVE_VERIFY_CHECKSUMS_DIGESTS}" | sed -e 's|,| |g'); do # shellcheck disable=SC2060 _CHECKSUMS="$(echo "${_DIGEST}" | tr [a-z] [A-Z])SUMS ${_DIGEST}sum.txt" for _CHECKSUM in ${_CHECKSUMS}; do # shellcheck disable=SC2292 if [ -e "${_CHECKSUM}" ]; then #echo "Found ${_CHECKSUM}..." > "${_TTY}" printf "Found %s...\n" "${_CHECKSUM}" if [ -e "/bin/${_DIGEST}sum" ]; then #echo "Checking ${_CHECKSUM}..." > "${_TTY}" printf "Checking %s...\n" "${_CHECKSUM}" # Verify checksums # shellcheck disable=SC2312 grep -v '^#' "${_CHECKSUM}" | /bin/"${_DIGEST}"sum -c > "${_TTY}" _RETURN="${?}" # Stop after the first verification # break 2 else #echo "Not found /bin/${_DIGEST}sum..." > "${_TTY}" printf "Not found /bin/%ssum....\n" "${_DIGEST}" fi fi done done log_end_msg case "${_RETURN}" in 0) log_success_msg "Verification of checksums successful; continuing booting in 8 seconds." sleep 8 return 0 ;; *) panic "Verification failed, $(basename "${_TTY}") for more information." ;; esac } # vim: number et ts=2 sw=2 sts=2 ai tw=128 ft=sh