xf.li | aa4d92f | 2023-09-13 00:18:58 -0700 | [diff] [blame] | 1 | @echo off
|
| 2 |
|
| 3 | if "%~1" equ "" (
|
| 4 | echo "Usage: %0 private_key work_dir [device]"
|
| 5 | exit /b -1
|
| 6 | )
|
| 7 |
|
| 8 | if "%~2" equ "" (
|
| 9 | echo "Usage: %0 private_key work_dir [device]"
|
| 10 | exit /b -1
|
| 11 | )
|
| 12 |
|
| 13 | set PRIVATE_KEY=%1
|
| 14 | set WORK_DIR=%2
|
| 15 |
|
| 16 | set DEVICE=%3
|
| 17 | set HASH_STR="sha256"
|
| 18 |
|
| 19 | echo Private Key: %PRIVATE_KEY%
|
| 20 | echo Work Dir: %WORK_DIR%
|
| 21 | if exist %WORK_DIR%\ap_cpucap.bin (
|
| 22 | move %WORK_DIR%\ap_cpucap.bin %WORK_DIR%\inter_ap_cpucap.bin
|
| 23 | )
|
| 24 | :: vehicle device zloader.bin structure
|
| 25 | :: ---------------------------------------------------------------
|
| 26 | :: | 8 KB | 24 KB | 8KB |
|
| 27 | :: ---------------------------------------------------------------
|
| 28 | :: | bootrom1.bin | bootrom2.bin | zloader3.bin |
|
| 29 | :: ---------------------------------------------------------------
|
| 30 | for %%a in (%WORK_DIR%\zloader.bin) do set size=%%~za
|
| 31 | echo %WORK_DIR%\zloader.bin %size% Bytes
|
| 32 | if "%DEVICE%" equ "v3t" (
|
| 33 | set HASH_STR="md5"
|
| 34 | if %size% gtr 32768 (
|
| 35 | fileread "%WORK_DIR%\zloader.bin" 0 8192 "%WORK_DIR%\bootrom1.bin" || EXIT /B 1
|
| 36 | fileread "%WORK_DIR%\zloader.bin" 8192 24576 "%WORK_DIR%\bootrom2.bin" || EXIT /B 1
|
| 37 | fileread "%WORK_DIR%\zloader.bin" 32768 0 "%WORK_DIR%\zloader3.bin" || EXIT /B 1
|
| 38 | SignImage -z -i "%WORK_DIR%\bootrom1.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 39 | SignImage -z -i "%WORK_DIR%\bootrom2.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 40 | SignImage -z -i "%WORK_DIR%\zloader3.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 41 | copy /b "%WORK_DIR%\bootrom1.bin"+"%WORK_DIR%\bootrom2.bin"+"%WORK_DIR%\zloader3.bin" "%WORK_DIR%\zloader.bin" || EXIT /B 1
|
| 42 | del /f /q "%WORK_DIR%\bootrom1.bin" "%WORK_DIR%\bootrom2.bin" "%WORK_DIR%\zloader3.bin"
|
| 43 | ) else (
|
| 44 | SignImage -z -i "%WORK_DIR%\zloader.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 45 | )
|
xf.li | 1222083 | 2023-10-18 19:46:34 -0700 | [diff] [blame] | 46 | SignImage -z -i "%WORK_DIR%\tloader.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
xf.li | aa4d92f | 2023-09-13 00:18:58 -0700 | [diff] [blame] | 47 | )
|
| 48 | echo "HASH_STR:" %HASH_STR%
|
| 49 | SignImage -r -i "%WORK_DIR%\uboot.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 50 |
|
| 51 | :: ap_rootfs.img ap_cpuap.bin
|
| 52 | :: ---------------------------------------------------------------------------------------------------------------
|
| 53 | :: | 640 Bytes | 640 Bytes | 64 Bytes | 64 Bytes |
|
| 54 | :: ---------------------------------------------------------------------------------------------------------------
|
| 55 | :: | ap_cpuap.bin signdata | ap_rootfs.img signdata | ap_rootfs.img mkimage header | ap_cpuap.bin mkimage header |
|
| 56 | :: ---------------------------------------------------------------------------------------------------------------
|
| 57 | fileread "%WORK_DIR%\ap_cpuap.bin" 1280 64 "%WORK_DIR%\rootfs_mkimage_header.img" || EXIT /B 1
|
| 58 | copy /b "%WORK_DIR%\rootfs_mkimage_header.img"+"%WORK_DIR%\ap_rootfs.img" "%WORK_DIR%\ap_rootfs.u" || EXIT /B 1
|
| 59 | SignImage -i "%WORK_DIR%\ap_rootfs.u" -o "%WORK_DIR%\ap_rootfs.signed" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 60 | fileread "%WORK_DIR%\ap_rootfs.signed" 0 704 "%WORK_DIR%\ap_rootfs.sign" || EXIT /B 1
|
| 61 | filewrite "%WORK_DIR%\ap_cpuap.bin" 640 "%WORK_DIR%\ap_rootfs.sign" "%WORK_DIR%\ap_cpuap.bin" || EXIT /B 1
|
| 62 | SignImage -r -i "%WORK_DIR%\ap_cpuap.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 63 |
|
| 64 | SignImage -r -i "%WORK_DIR%\evb_cpurpm.img" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 65 | SignImage -r -i "%WORK_DIR%\evb_cpuphy.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 66 | SignImage -r -i "%WORK_DIR%\inter_ap_cpucap.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 67 |
|
| 68 | if exist "%WORK_DIR%\ap_caprootfs.img.dm" (
|
| 69 | echo "ap_caprootfs.img resign start"
|
| 70 | if exist "%WORK_DIR%\verity" rmdir /s /q "%WORK_DIR%\verity"
|
| 71 | mkdir "%WORK_DIR%\verity"
|
| 72 | zxic_parse_squashfs_verity "%WORK_DIR%\ap_caprootfs.img.dm" "%WORK_DIR%\verity\sign" "%WORK_DIR%\verity\raw_table" "%WORK_DIR%\verity\hash_tree_offset" || EXIT /B 1
|
| 73 | SignImage -d -i "%WORK_DIR%\verity\raw_table" -o "%WORK_DIR%\verity\raw_table.signed" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 74 | fileseek "%WORK_DIR%\ap_caprootfs.img" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset"
|
| 75 | if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
xf.li | ce87319 | 2023-11-08 17:10:35 -0800 | [diff] [blame] | 76 | filewrite "%WORK_DIR%\ap_caprootfs.img" "%WORK_DIR%\verity\sign_offset" %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\ap_caprootfs.img" || EXIT /B 1
|
xf.li | aa4d92f | 2023-09-13 00:18:58 -0700 | [diff] [blame] | 77 | del /f /q "%WORK_DIR%\verity\sign_offset"
|
| 78 |
|
| 79 | ::fix ap_caprootfs.img.dm
|
| 80 | fileseek "%WORK_DIR%\ap_caprootfs.img.dm" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset2"
|
| 81 | if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
xf.li | ce87319 | 2023-11-08 17:10:35 -0800 | [diff] [blame] | 82 | filewrite "%WORK_DIR%\ap_caprootfs.img.dm" "%WORK_DIR%\verity\sign_offset2" %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\ap_caprootfs.img.dm" || EXIT /B 1
|
xf.li | aa4d92f | 2023-09-13 00:18:58 -0700 | [diff] [blame] | 83 | del /f /q "%WORK_DIR%\verity\sign_offset2"
|
| 84 | echo "ap_caprootfs.img resign success"
|
| 85 | )
|
| 86 |
|
| 87 | if exist "%WORK_DIR%\cap_oem.img.dm" (
|
| 88 | echo "cap_oem.img resign start"
|
| 89 | if exist "%WORK_DIR%\verity" rmdir /s /q "%WORK_DIR%\verity"
|
| 90 | mkdir "%WORK_DIR%\verity"
|
| 91 | zxic_parse_squashfs_verity "%WORK_DIR%\cap_oem.img.dm" "%WORK_DIR%\verity\sign" "%WORK_DIR%\verity\raw_table" "%WORK_DIR%\verity\hash_tree_offset" || EXIT /B 1
|
| 92 | SignImage -d -i "%WORK_DIR%\verity\raw_table" -o "%WORK_DIR%\verity\raw_table.signed" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
|
| 93 | fileseek "%WORK_DIR%\cap_oem.img" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset3"
|
| 94 | if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
xf.li | ce87319 | 2023-11-08 17:10:35 -0800 | [diff] [blame] | 95 | filewrite "%WORK_DIR%\cap_oem.img" "%WORK_DIR%\verity\sign_offset3" %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\cap_oem.img" || EXIT /B 1
|
xf.li | aa4d92f | 2023-09-13 00:18:58 -0700 | [diff] [blame] | 96 | del /f /q "%WORK_DIR%\verity\sign_offset3"
|
| 97 |
|
| 98 | ::fix cap_oem.img.dm
|
| 99 | fileseek "%WORK_DIR%\cap_oem.img.dm" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset4"
|
| 100 | if %ERRORLEVEL% NEQ 0 EXIT /B 1
|
xf.li | ce87319 | 2023-11-08 17:10:35 -0800 | [diff] [blame] | 101 | filewrite "%WORK_DIR%\cap_oem.img.dm" "%WORK_DIR%\verity\sign_offset4" %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\cap_oem.img.dm" || EXIT /B 1
|
xf.li | aa4d92f | 2023-09-13 00:18:58 -0700 | [diff] [blame] | 102 | del /f /q "%WORK_DIR%\verity\sign_offset4"
|
| 103 | echo "cap_oem.img resign success"
|
| 104 | )
|
| 105 |
|
| 106 | move %WORK_DIR%\inter_ap_cpucap.bin %WORK_DIR%\ap_cpucap.bin
|
| 107 |
|
| 108 | del /f /q "%WORK_DIR%\ap_rootfs.u"
|
| 109 | del /f /q "%WORK_DIR%\ap_rootfs.sign"
|
| 110 | del /f /q "%WORK_DIR%\rootfs_mkimage_header.img"
|
| 111 | del /f /q "%WORK_DIR%\ap_rootfs.signed"
|
xf.li | 9d1a0e1 | 2023-09-20 01:43:20 -0700 | [diff] [blame] | 112 | del /f /q "%WORK_DIR%\ap_imagefs.img"
|
xf.li | aa4d92f | 2023-09-13 00:18:58 -0700 | [diff] [blame] | 113 | rmdir /s /q "%WORK_DIR%\verity"
|