xref: /rk3399_rockchip-uboot/scripts/fit-resign.sh (revision 3301aa1a14d90d7ce0b25aeac8abc03fb0311a1d)
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