1*3301aa1aSJoseph Chen#!/bin/bash 2*3301aa1aSJoseph Chen# 3*3301aa1aSJoseph Chen# Copyright (c) 2020 Fuzhou Rockchip Electronics Co., Ltd 4*3301aa1aSJoseph Chen# SPDX-License-Identifier: GPL-2.0 5*3301aa1aSJoseph Chen# 6*3301aa1aSJoseph Chenset -e 7*3301aa1aSJoseph Chen 8*3301aa1aSJoseph ChenFIT_IMG=$1 9*3301aa1aSJoseph ChenFIT_SIG=$2 10*3301aa1aSJoseph Chen 11*3301aa1aSJoseph Chenif [ $# -ne 2 ]; then 12*3301aa1aSJoseph Chen echo "Usage: $0 [signed fit image] [new signature]" 13*3301aa1aSJoseph Chen exit 14*3301aa1aSJoseph Chenelif [ ! -f $FIT_IMG ]; then 15*3301aa1aSJoseph Chen echo "ERROR: No $FIT_IMG" 16*3301aa1aSJoseph Chen exit 17*3301aa1aSJoseph Chenelif [ ! -f $FIT_SIG ]; then 18*3301aa1aSJoseph Chen echo "ERROR: No $FIT_SIG" 19*3301aa1aSJoseph Chen exit 20*3301aa1aSJoseph Chenfi 21*3301aa1aSJoseph Chen 22*3301aa1aSJoseph ChenSIG_SZ=`ls -l ${FIT_SIG} | awk '{ print $5 }'` 23*3301aa1aSJoseph ChenLEN=`./tools/fit_info -f $FIT_IMG -n /configurations/conf@1/signature@1 -p value | sed -n "/LEN:/p" | awk '{ print $2 }'` 24*3301aa1aSJoseph ChenOFF=`./tools/fit_info -f $FIT_IMG -n /configurations/conf@1/signature@1 -p value | sed -n "/OFF:/p" | awk '{ print $2 }'` 25*3301aa1aSJoseph ChenEND=`./tools/fit_info -f $FIT_IMG -n /configurations/conf@1/signature@1 -p value | sed -n "/END:/p" | awk '{ print $2 }'` 26*3301aa1aSJoseph Chen 27*3301aa1aSJoseph Chenif [ -z $LEN ]; then 28*3301aa1aSJoseph Chen echo "ERROR: No valid signature in $FIT_IMG" 29*3301aa1aSJoseph Chen exit 30*3301aa1aSJoseph Chenelif [ "$SIG_SZ" -ne "$LEN" ]; then 31*3301aa1aSJoseph Chen echo "ERROR: $FIT_SIG size $SIG_SZ != $FIT_IMG Signature size $LEN" 32*3301aa1aSJoseph Chen exit 33*3301aa1aSJoseph Chenfi 34*3301aa1aSJoseph Chen 35*3301aa1aSJoseph Chendd if=$FIT_IMG of=$FIT_IMG.part1 count=1 bs=$OFF 36*3301aa1aSJoseph Chendd if=$FIT_IMG of=$FIT_IMG.part2 skip=1 ibs=$END 37*3301aa1aSJoseph Chen 38*3301aa1aSJoseph Chencat $FIT_IMG.part1 > $FIT_IMG.resig 39*3301aa1aSJoseph Chencat $FIT_SIG >> $FIT_IMG.resig 40*3301aa1aSJoseph Chencat $FIT_IMG.part2 >> $FIT_IMG.resig 41*3301aa1aSJoseph Chen 42*3301aa1aSJoseph Chenrm $FIT_IMG.part1 && $FIT_IMG.part2 43*3301aa1aSJoseph Chen 44*3301aa1aSJoseph Chenecho 45*3301aa1aSJoseph Chenecho "Re-signed fit image is OK: $FIT_IMG.resig" 46*3301aa1aSJoseph Chenecho 47*3301aa1aSJoseph Chen 48