SignTool.sh 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #!/bin/sh
  2. # Copyright Statement:
  3. #
  4. # This software/firmware and related documentation ("MediaTek Software") are
  5. # protected under relevant copyright laws. The information contained herein
  6. # is confidential and proprietary to MediaTek Inc. and/or its licensors.
  7. # Without the prior written permission of MediaTek inc. and/or its licensors,
  8. # any reproduction, modification, use or disclosure of MediaTek Software,
  9. # and information contained herein, in whole or in part, shall be strictly prohibited.
  10. #
  11. # MediaTek Inc. (C) 2010. All rights reserved.
  12. #
  13. # BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  14. # THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  15. # RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
  16. # AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  17. # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  18. # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  19. # NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  20. # SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  21. # SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
  22. # THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
  23. # THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
  24. # CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
  25. # SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  26. # STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
  27. # CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  28. # AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  29. # OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
  30. # MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  31. #
  32. # The following software/firmware and/or related documentation ("MediaTek Software")
  33. # have been modified by MediaTek Inc. All revisions are subject to any receiver's
  34. # applicable license agreements with MediaTek Inc.
  35. ##############################################################
  36. # Program:
  37. # SIGN TOOL
  38. #
  39. CUR_DIR=`pwd`
  40. if [ "$3" = "" ]; then
  41. echo "Usage: Sign Image .."
  42. echo " ./SignTool.sh [KEY] [CONFIG] [INPUT_IMAGE] [OUTPUT_IMAGE]"
  43. echo ""
  44. echo "Example:"
  45. echo " ./SignTool.sh IMG_KEY.ini IMG_CFG.ini u-boot.bin signed-u-boot.bin"
  46. echo ""
  47. exit 1;
  48. fi
  49. ##############################################################
  50. # Setup tool and nand page size
  51. SignToolDir=${0%/*}
  52. SignTool=${SignToolDir}/SignTool
  53. Simg2imgTool=${SignToolDir}/simg2img
  54. Yaffs2Covert=${SignToolDir}/yimg2img
  55. if [ "$5" = "2K" ] ; then
  56. NAND_PAGE_SIZE=2048
  57. elif [ "$5" = "4K" ] ; then
  58. NAND_PAGE_SIZE=4096
  59. elif [ "$5" = "1K" ] ; then
  60. NAND_PAGE_SIZE=1024
  61. else
  62. echo "[SignTool] NAND page size $5 not supported, set to default 2048!!"
  63. NAND_PAGE_SIZE=2048
  64. fi
  65. ##############################################################
  66. # Check if it is a sparse image or yaffs2 image
  67. Sparse_Str=`hexdump -n 4 $3 | head -n 1 | awk '{print $2,$3}'`
  68. Yaffs_Str=`hexdump $3 | head -n 1 | awk '{print $2,$3,$4,$5,$6,$7,$8,$9}'`
  69. if [ "$Sparse_Str" = "ff3a ed26" ] ; then
  70. echo "${Simg2imgTool} $3 $3.UN_SPARSE_TEMP_IMG"
  71. ${Simg2imgTool} $3 "$3.UN_SPARSE_TEMP_IMG"
  72. echo "${SignTool} $1 $2 $3.UN_SPARSE_TEMP_IMG $3.SIGNATURE $3.HEADER"
  73. ${SignTool} $1 $2 "$3.UN_SPARSE_TEMP_IMG" "$3.SIGNATURE" "$3.HEADER"
  74. if [ $? -eq 0 ] ; then
  75. echo "SIGN PASS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Sparse S1 IMG)"
  76. cp -f "$3.HEADER" "$3.EXT_HDR_SPARSE"
  77. cat "$3.SIGNATURE" >> "$3.EXT_HDR_SPARSE"
  78. else
  79. echo "SIGN FAIL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Sparse S1 IMG)"
  80. exit 1;
  81. fi
  82. rm -f "$3.SIGNATURE"
  83. rm -f "$3.HEADER"
  84. echo "${SignTool} $1 $2 $3 $3.SIGNATURE $3.HEADER $3.EXT_HDR_SPARSE"
  85. ${SignTool} $1 $2 $3 "$3.SIGNATURE" "$3.HEADER" "$3.EXT_HDR_SPARSE"
  86. if [ $? -eq 0 ] ; then
  87. echo "SIGN PASS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Sparse S2 IMG)"
  88. cp -f "$3.HEADER" $4
  89. cat $3 >> $4
  90. cat "$3.SIGNATURE" >> $4
  91. rm -f "$3.SIGNATURE"
  92. rm -f "$3.HEADER"
  93. else
  94. echo "SIGN FAIL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Sparse S2 IMG)"
  95. exit 1;
  96. fi
  97. rm -rf "$3.UN_SPARSE_TEMP_IMG"
  98. rm -rf "$3.EXT_HDR_SPARSE"
  99. elif [ "$Yaffs_Str" = "0003 0000 0001 0000 ffff 0000 0000 0000" ] ; then
  100. echo "${Yaffs2Covert} -c $NAND_PAGE_SIZE $3 $3.UN_YAFFS_TEMP_IMG"
  101. ${Yaffs2Covert} -c $NAND_PAGE_SIZE $3 "$3.UN_YAFFS_TEMP_IMG"
  102. echo "${SignTool} $1 $2 $3.UN_YAFFS_TEMP_IMG $3.SIGNATURE $3.HEADER"
  103. ${SignTool} $1 $2 "$3.UN_YAFFS_TEMP_IMG" "$3.SIGNATURE" "$3.HEADER"
  104. if [ $? -eq 0 ] ; then
  105. echo "SIGN PASS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Yaffs S1 IMG)"
  106. cp -f "$3.HEADER" "$3.EXT_HDR_SPARSE"
  107. cat "$3.SIGNATURE" >> "$3.EXT_HDR_SPARSE"
  108. else
  109. echo "SIGN FAIL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Yaffs S1 IMG)"
  110. exit 1;
  111. fi
  112. rm -f "$3.SIGNATURE"
  113. rm -f "$3.HEADER"
  114. echo "${SignTool} $1 $2 $3 $3.SIGNATURE $3.HEADER $3.EXT_HDR_SPARSE"
  115. ${SignTool} $1 $2 $3 "$3.SIGNATURE" "$3.HEADER" "$3.EXT_HDR_SPARSE"
  116. if [ $? -eq 0 ] ; then
  117. echo "SIGN PASS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Yaffs S2 IMG)"
  118. cp -f "$3.HEADER" $4
  119. cat $3 >> $4
  120. cat "$3.SIGNATURE" >> $4
  121. rm -f "$3.SIGNATURE"
  122. rm -f "$3.HEADER"
  123. else
  124. echo "SIGN FAIL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Yaffs S2 IMG)"
  125. exit 1;
  126. fi
  127. rm -rf "$3.UN_YAFFS_TEMP_IMG"
  128. rm -rf "$3.EXT_HDR_SPARSE"
  129. else
  130. echo "${SignTool} $1 $2 $3 $3.SIGNATURE $3.HEADER"
  131. ${SignTool} $1 $2 $3 "$3.SIGNATURE" "$3.HEADER"
  132. if [ $? -eq 0 ] ; then
  133. echo "SIGN PASS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Normal IMG)"
  134. #cp -f "$3.HEADER" $3.sig
  135. #cat "$3.SIGNATURE" >> $3.sig
  136. cp -f "$3.HEADER" $4
  137. cat $3 >> $4
  138. cat "$3.SIGNATURE" >> $4
  139. else
  140. echo "SIGN FAIL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(Normal IMG)"
  141. exit 1;
  142. fi
  143. rm -f "$3.SIGNATURE"
  144. rm -f "$3.HEADER"
  145. fi