thor: fix invalid larger device descriptor than requested
[profile/mobile/platform/kernel/u-boot-tm1.git] / tools / mkimage_signed.sh
1 #!/bin/bash
2
3 # U-BOOT binary signature tool
4 #
5 # Copyright (C) 2014 Samsung Electronics
6 # Przemyslaw Marczak <p.marczak@samsung.com>
7
8
9 # Sign header:
10 #{
11 # uint32_t magic;       /* image magic number */
12 # uint32_t size;        /* image data size */
13 # uint32_t valid;       /* valid flag */
14 # char date[12];        /* image creation timestamp - YYMMDDHH */
15 # char version[24];     /* image version */
16 # char bd_name[16];     /* target board name */
17 # char reserved[448];   /* reserved */
18 #}
19
20 INPUT_ARGS=2
21 INPUT_BIN=${1}
22 CONFIG=${2}
23
24 OUTPUT_BIN="u-boot-mmc.bin"
25 OUTPUT_SIZE=$((1024*1024))
26
27 SIGN_HDR_SIZE=512
28 INPUT_SIZE_LIMIT=$((${OUTPUT_SIZE} - ${SIGN_HDR_SIZE}))
29
30 # Check arguments count
31 if [ $# != $INPUT_ARGS ]; then
32         echo Bad arguments number!
33         echo "Usage:"
34         echo "./mksigimage.sh input.bin config"
35         echo "e.g.:"
36         echo "./mksigimage.sh u-boot-multi.bin tizen_config"
37         exit
38 fi
39
40 echo "#####################################"
41 echo "Running script: $0"
42 echo "Config: $CONFIG"
43 echo "Input binary: $INPUT_BIN"
44
45 # Check if given binary exists
46 if [ -s $INPUT_BIN ]; then
47         # Check given binary size
48         INPUT_SIZE=`du -b $INPUT_BIN | awk '{print $1}'`
49
50         if [ ${INPUT_SIZE} -gt ${INPUT_SIZE_LIMIT} ]; then
51                 echo "Input binary size exceeds size limit!"
52                 echo "Max input size: ${INPUT_SIZE_LIMIT}"
53                 exit
54         else
55                 echo "Input bytes: $INPUT_SIZE (Max size: ${INPUT_SIZE_LIMIT} B)"
56         fi
57 else
58         echo "File: $INPUT_BIN not exists!"
59         exit
60 fi
61
62 echo -n "BoOt" > sig-magic
63 echo -n `date +%Y%m%d%H` > sig-date
64 echo -n "none" > sig-product
65
66 if [ $CONFIG == "tizen_tm1" ]; then
67         echo -n "tizen_tm1" > sig-board
68 else
69         echo -n "none" > sig-board
70 fi
71
72 cat sig-magic /dev/zero | head -c 12 > sig-tmp
73 cat sig-tmp sig-date /dev/zero | head -c 24 > sig-tmp2
74 cat sig-tmp2 sig-product /dev/zero | head -c 48 > sig-tmp
75 cat sig-tmp sig-board /dev/zero | head -c 512 > sig-hdr
76 cat $INPUT_BIN /dev/zero | head -c 1048064 > u-boot-pad.bin
77 cat u-boot-pad.bin sig-hdr > $OUTPUT_BIN
78
79 echo 
80 echo "Header info:"
81 echo "HDR length:   $SIGN_HDR_SIZE Bytes"
82 echo "SIG magic:   \"`cat sig-magic`\""
83 echo "SIG size:     0"
84 echo "SIG valid:    0"
85 echo "SIG date:    \"`cat sig-date`\" (YYMMDDHH)"
86 echo "SIG version: \"none\""
87 echo "SIG board:   \"`cat sig-board`\""
88
89 rm -f sig-* u-boot-pad.bin
90
91 echo 
92 echo "Output signed binary: ${OUTPUT_BIN}"
93 echo "#####################################"
94