scripts/image_signing: Move `extract_firmware_bundle` to common.sh

This commit moves `extract_firmware_bundle` into common.sh as this
function is useful for other scripts as well. This commit also updates
this function to use the `--unpack` option as `--sb_extract` is now
deprecated.

BRANCH=none
BUG=b:202397678
TEST=Verified that scripts continue to work as expected

Signed-off-by: Robert Zieba <robertzieba@google.com>
Change-Id: Ib5596968f31a4b3b21fb81877d84b28660824818
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3665477
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/image_signing/common.sh b/scripts/image_signing/common.sh
index efa00a2..85475d8 100644
--- a/scripts/image_signing/common.sh
+++ b/scripts/image_signing/common.sh
@@ -136,5 +136,24 @@
   sudo setfattr -n security.selinux -v "u:object_r:cros_conf_file:s0" "$1"
 }
 
+# Extracts a firmware updater bundle (for firmware image binaries) file
+# (generated by src/platform/firmware/pack_firmware.sh).
+# Args: INPUT_FILE OUTPUT_DIR
+extract_firmware_bundle() {
+  local input="$(readlink -f "$1")"
+  local output_dir="$2"
+  if [[ ! -s "${input}" ]]; then
+    return 1
+  elif grep -q '^##CUTHERE##' "${input}"; then
+    # Bundle supports self-extraction.
+    "${input}" --unpack "${output_dir}" ||
+      die "Extracting firmware autoupdate (--unpack) failed."
+  else
+    # Legacy bundle - try uudecode.
+    uudecode -o - "${input}" | tar -C "${output_dir}" -zxf - 2>/dev/null ||
+      die "Extracting firmware autoupdate failed."
+  fi
+}
+
 # This will override the trap set in common_minmal.sh
 trap "cleanup" INT TERM EXIT
diff --git a/scripts/image_signing/sign_official_build.sh b/scripts/image_signing/sign_official_build.sh
index e9c219e..d1c95c9 100755
--- a/scripts/image_signing/sign_official_build.sh
+++ b/scripts/image_signing/sign_official_build.sh
@@ -330,25 +330,6 @@
   disable_rw_mount "${rootfs}"
 }
 
-# Extracts a firmware updater bundle (for firmware image binaries) file
-# (generated by src/platform/firmware/pack_firmware.sh).
-# Args: INPUT_FILE OUTPUT_DIR
-extract_firmware_bundle() {
-  local input="$(readlink -f "$1")"
-  local output_dir="$2"
-  if [ ! -s "${input}" ]; then
-    return 1
-  elif grep -q '^##CUTHERE##' "${input}"; then
-    # Bundle supports self-extraction.
-    "$input" --sb_extract "${output_dir}" ||
-      die "Extracting firmware autoupdate (--sb_extract) failed."
-  else
-    # Legacy bundle - try uudecode.
-    uudecode -o - ${input} | tar -C ${output_dir} -zxf - 2>/dev/null ||
-      die "Extracting firmware autoupdate failed."
-  fi
-}
-
 # Repacks firmware updater bundle content from given folder.
 # Args: INPUT_DIR TARGET_SCRIPT
 repack_firmware_bundle() {