#!/bin/bash # U-BOOT binary signature tool # # Copyright (C) 2014 Samsung Electronics # Przemyslaw Marczak # Sign header: #{ # uint32_t magic; /* image magic number */ # uint32_t size; /* image data size */ # uint32_t valid; /* valid flag */ # char date[12]; /* image creation timestamp - YYMMDDHH */ # char version[24]; /* image version */ # char bd_name[16]; /* target board name */ # char reserved[448]; /* reserved */ #} INPUT_ARGS=2 INPUT_BIN=${1} CONFIG=${2} OUTPUT_BIN="u-boot-mmc.bin" OUTPUT_SIZE=$((1024*1024)) SIGN_HDR_SIZE=512 INPUT_SIZE_LIMIT=$((${OUTPUT_SIZE} - ${SIGN_HDR_SIZE})) # Check arguments count if [ $# != $INPUT_ARGS ]; then echo Bad arguments number! echo "Usage:" echo "./mksigimage.sh input.bin config" echo "e.g.:" echo "./mksigimage.sh u-boot-multi.bin tizen_config" exit fi echo "#####################################" echo "Running script: $0" echo "Config: $CONFIG" echo "Input binary: $INPUT_BIN" # Check if given binary exists if [ -s $INPUT_BIN ]; then # Check given binary size INPUT_SIZE=`du -b $INPUT_BIN | awk '{print $1}'` if [ ${INPUT_SIZE} -gt ${INPUT_SIZE_LIMIT} ]; then echo "Input binary size exceeds size limit!" echo "Max input size: ${INPUT_SIZE_LIMIT}" exit else echo "Input bytes: $INPUT_SIZE (Max size: ${INPUT_SIZE_LIMIT} B)" fi else echo "File: $INPUT_BIN not exists!" exit fi echo -n "BoOt" > sig-magic echo -n `date +%Y%m%d%H` > sig-date echo -n "none" > sig-product if [ $CONFIG == "tizen_defconfig" ]; then echo -n "slp_midasq" > sig-board elif [ $CONFIG == "odroid-xu3_defconfig" ]; then echo -n "odroid_xu3" > sig-board else echo -n "slp_u1" > sig-board fi cat sig-magic /dev/zero | head -c 12 > sig-tmp cat sig-tmp sig-date /dev/zero | head -c 24 > sig-tmp2 cat sig-tmp2 sig-product /dev/zero | head -c 48 > sig-tmp cat sig-tmp sig-board /dev/zero | head -c 512 > sig-hdr cat $INPUT_BIN /dev/zero | head -c 1048064 > u-boot-pad.bin cat u-boot-pad.bin sig-hdr > $OUTPUT_BIN echo echo "Header info:" echo "HDR length: $SIGN_HDR_SIZE Bytes" echo "SIG magic: \"`cat sig-magic`\"" echo "SIG size: 0" echo "SIG valid: 0" echo "SIG date: \"`cat sig-date`\" (YYMMDDHH)" echo "SIG version: \"none\"" echo "SIG board: \"`cat sig-board`\"" rm -f sig-* u-boot-pad.bin echo echo "Output signed binary: ${OUTPUT_BIN}" echo "#####################################"