xref: /aosp_15_r20/external/vboot_reference/tests/futility/test_sign_fw_main.sh (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
1#!/bin/bash -eux
2# Copyright 2014 The ChromiumOS Authors
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6me=${0##*/}
7TMP="$me.tmp"
8
9# Work in scratch directory
10cd "$OUTDIR"
11
12KEYDIR="${SRCDIR}/tests/devkeys"
13
14# create a firmware blob
15dd bs=1024 count=16 if=/dev/urandom of="${TMP}.fw_main"
16
17# try the old way
18"${FUTILITY}" vbutil_firmware --vblock "${TMP}.vblock.old" \
19  --keyblock "${KEYDIR}/firmware.keyblock" \
20  --signprivate "${KEYDIR}/firmware_data_key.vbprivk" \
21  --version 12 \
22  --fv "${TMP}.fw_main" \
23  --kernelkey "${KEYDIR}/kernel_subkey.vbpubk" \
24  --flags 42
25
26# verify
27"${FUTILITY}" verify --type fw_pre \
28  --publickey "${KEYDIR}/root_key.vbpubk" \
29  --fv "${TMP}.fw_main" \
30  "${TMP}.vblock.old"
31
32# and the new way
33"${FUTILITY}" --debug sign \
34  --keyset "${KEYDIR}" \
35  --version 12 \
36  --fv "${TMP}.fw_main" \
37  --flags 42 \
38  "${TMP}.vblock.new"
39
40# They should match
41cmp "${TMP}.vblock.old" "${TMP}.vblock.new"
42
43# cleanup
44rm -rf "${TMP}"*
45exit 0
46