Files
2026-08-24 10:03:24 +08:00

128 lines
4.2 KiB
Bash
Executable File

#!/bin/bash
#
# Copyright (C) 2025 Amlogic, Inc. All rights reserved.
#
set -e
# set -x
#
# Variables
#
EXEC_BASEDIR=$(dirname $(readlink -f $0))
ACPU_IMAGETOOL=${EXEC_BASEDIR}/../../binary-tool/acpu-imagetool
SIGNPIPE_TOOL=${EXEC_BASEDIR}/../../binary-tool/demo-sign.py
BASEDIR_TOP=$(readlink -f ${EXEC_BASEDIR}/..)
declare -a BLX_BIN_SIZE=("262144" "524288")
declare BL33_BIN_SIZE="1572864"
#
# Settings
#
#BASEDIR_DEVICE_TEMPLATE="${BASEDIR_ROOTRSA_X}/data/template/device"
BASEDIR_CHIPSET_TEMPLATE=$1
BASEDIR_ROOT=${BASEDIR_ROOT:-$BASEDIR_TEMPLATE}
#BASEDIR_AESKEY_PROT="${BASEDIR_ROOTRSA_X}/data/key/aesroot"
#BASEDIR_RSAKEY_LVLX="${BASEDIR_ROOTRSA_X}/data/key/lvlxrsa"
BASEDIR_PAYLOAD=$2
#BASEDIR_EPK="${BASEDIR_ROOTRSA_X}/data/epk"
BASEDIR_OUTPUT=$3
input_postfix=.signed
output_postfix=.device.signed
echo "============ ROOTRSA_INDEX ${DEVICE_ROOTRSA_INDEX}"
echo "============ KEY_DIR ${BASEDIR_ROOT}"
echo "============ PROJECT ${PROJECT}"
if [ -z "$PROJECT" ]; then
BASEDIR_AESKEY_ROOT="${BASEDIR_ROOT}/root/aes/rootkey"
BASEDIR_RSAKEY_ROOT="${BASEDIR_ROOT}/root/rsa"
BASEDIR_BOOTBLOBS_RSAKEY_ROOT="${BASEDIR_ROOT}/boot-blobs/rsa/rootrsa-${DEVICE_ROOTRSA_INDEX}"
BASEDIR_BOOTBLOBS_TEMPLATE_ROOT="${BASEDIR_ROOT}/boot-blobs/template/rootrsa-${DEVICE_ROOTRSA_INDEX}"
BASEDIR_FIP_RSAKEY_ROOT="${BASEDIR_ROOT}/fip/rsa/rootrsa-${DEVICE_ROOTRSA_INDEX}"
BASEDIR_FIP_AESKEY_ROOT="${BASEDIR_ROOT}/fip/aes/protkey"
BASEDIR_FIP_TEMPLATE_ROOT="${BASEDIR_ROOT}/fip/template/rootrsa-${DEVICE_ROOTRSA_INDEX}"
else
BASEDIR_AESKEY_ROOT="${BASEDIR_ROOT}/root/aes/${PROJECT}/rootkey"
BASEDIR_RSAKEY_ROOT="${BASEDIR_ROOT}/root/rsa/${PROJECT}"
BASEDIR_BOOTBLOBS_RSAKEY_ROOT="${BASEDIR_ROOT}/boot-blobs/rsa/${PROJECT}/rootrsa-${DEVICE_ROOTRSA_INDEX}"
BASEDIR_BOOTBLOBS_TEMPLATE_ROOT="${BASEDIR_ROOT}/boot-blobs/template/${PROJECT}/rootrsa-${DEVICE_ROOTRSA_INDEX}"
BASEDIR_FIP_RSAKEY_ROOT="${BASEDIR_ROOT}/fip/rsa/${PROJECT}/rootrsa-${DEVICE_ROOTRSA_INDEX}"
BASEDIR_FIP_AESKEY_ROOT="${BASEDIR_ROOT}/fip/aes/${PROJECT}/protkey"
BASEDIR_FIP_TEMPLATE_ROOT="${BASEDIR_ROOT}/fip/template/${PROJECT}/rootrsa-${DEVICE_ROOTRSA_INDEX}"
fi
BASEDIR_DEVICE_TEMPLATE="${BASEDIR_FIP_TEMPLATE_ROOT}"
#
# Arguments
#
BLOB_NAME=$1
bl30_size=`stat -c %s ${BASEDIR_PAYLOAD}/bl30-payload.bin`
bl33_size=`stat -c %s ${BASEDIR_PAYLOAD}/bl33-payload.bin`
EXEC_ARGS="${EXEC_ARGS}"
### Input: ###
EXEC_ARGS="${EXEC_ARGS} --infile-blob-bl3-tee=${BASEDIR_PAYLOAD}/blob-bl3-tee.bin.signed"
EXEC_ARGS="${EXEC_ARGS} --infile-bl30-payload=${BASEDIR_PAYLOAD}/bl30-payload.bin"
EXEC_ARGS="${EXEC_ARGS} --infile-bl33-payload=${BASEDIR_PAYLOAD}/bl33-payload.bin"
EXEC_ARGS="${EXEC_ARGS} --size-payload-bl30=$bl30_size"
EXEC_ARGS="${EXEC_ARGS} --size-payload-bl33=$bl33_size"
### Input: Device Level-3 private RSA keys and EPKs ###
# Device Vendor binaries
if [ "x" == "x${CONFIG_SIGNPIPE}" ]; then
EXEC_ARGS="${EXEC_ARGS} --infile-signkey-device-lvl2=${BASEDIR_BOOTBLOBS_RSAKEY_ROOT}/key/level-2-rsa-priv.pem"
fi
if [ "y" != "${DEVICE_NO_CRYPTO_AES}" ]; then
EXEC_ARGS="${EXEC_ARGS} --infile-aes256-bl30-payload=${BASEDIR_FIP_AESKEY_ROOT}/genkey-prot-bl30.bin"
EXEC_ARGS="${EXEC_ARGS} --infile-aes256-bl33-payload=${BASEDIR_FIP_AESKEY_ROOT}/genkey-prot-bl33.bin"
fi
### Features, flags and switches ###
EXEC_ARGS="${EXEC_ARGS} --scs-family=${SOC_FAMILY}"
# arb info
EXEC_ARGS="${EXEC_ARGS} --val-device-vendor-segid=${DEVICE_VENDOR_SEGID}"
EXEC_ARGS="${EXEC_ARGS} --val-device-tee-vers=${DEVICE_TEE_VERS}"
EXEC_ARGS="${EXEC_ARGS} --val-device-ree-vers=${DEVICE_REE_VERS}"
### Output: Device FIP ###
EXEC_ARGS="${EXEC_ARGS} --outfile-blob-bl3-ree=${BASEDIR_OUTPUT}/blob-bl3-ree.bin${output_postfix}"
EXEC_ARGS="${EXEC_ARGS} --outfile-blob-bl3-tee=${BASEDIR_OUTPUT}/blob-bl3-tee.bin${output_postfix}"
#EXEC_ARGS="${EXEC_ARGS} --header-layout=compact"
#echo ${EXEC_ARGS}
#
# Main
#
set -x
if [ "x" == "x${CONFIG_SIGNPIPE}" ]; then
${ACPU_IMAGETOOL} \
create-boot-blobs \
${EXEC_ARGS}
else
${ACPU_IMAGETOOL} \
create-boot-blobs \
--cmd-signpipe-device-lvl2="${SIGNPIPE_TOOL} ${EXEC_BASEDIR}/../../../../dv_scs_keys/boot-blobs/rsa/${PROJECT}/rootrsa-${DEVICE_ROOTRSA_INDEX}/key/level-2-rsa-priv.pem" \
${EXEC_ARGS}
fi
# vim: set tabstop=2 expandtab shiftwidth=2: