blob: dd0bf2647a4694e8a82a2114a0cf553037f8c094 [file] [log] [blame]
xf.liaa4d92f2023-09-13 00:18:58 -07001@echo off
2
3if "%~1" equ "" (
4 echo "Usage: %0 private_key work_dir [device]"
5 exit /b -1
6)
7
8if "%~2" equ "" (
9 echo "Usage: %0 private_key work_dir [device]"
10 exit /b -1
11)
12
13set PRIVATE_KEY=%1
14set WORK_DIR=%2
15
16set DEVICE=%3
17set HASH_STR="sha256"
18
19echo Private Key: %PRIVATE_KEY%
20echo Work Dir: %WORK_DIR%
21if 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:: ---------------------------------------------------------------
30for %%a in (%WORK_DIR%\zloader.bin) do set size=%%~za
31echo %WORK_DIR%\zloader.bin %size% Bytes
32if "%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.li12220832023-10-18 19:46:34 -070046 SignImage -z -i "%WORK_DIR%\tloader.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
xf.liaa4d92f2023-09-13 00:18:58 -070047)
48echo "HASH_STR:" %HASH_STR%
49SignImage -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:: ---------------------------------------------------------------------------------------------------------------
57fileread "%WORK_DIR%\ap_cpuap.bin" 1280 64 "%WORK_DIR%\rootfs_mkimage_header.img" || EXIT /B 1
58copy /b "%WORK_DIR%\rootfs_mkimage_header.img"+"%WORK_DIR%\ap_rootfs.img" "%WORK_DIR%\ap_rootfs.u" || EXIT /B 1
59SignImage -i "%WORK_DIR%\ap_rootfs.u" -o "%WORK_DIR%\ap_rootfs.signed" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
60fileread "%WORK_DIR%\ap_rootfs.signed" 0 704 "%WORK_DIR%\ap_rootfs.sign" || EXIT /B 1
61filewrite "%WORK_DIR%\ap_cpuap.bin" 640 "%WORK_DIR%\ap_rootfs.sign" "%WORK_DIR%\ap_cpuap.bin" || EXIT /B 1
62SignImage -r -i "%WORK_DIR%\ap_cpuap.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
63
64SignImage -r -i "%WORK_DIR%\evb_cpurpm.img" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
65SignImage -r -i "%WORK_DIR%\evb_cpuphy.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
66SignImage -r -i "%WORK_DIR%\inter_ap_cpucap.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
67
68if 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.lice873192023-11-08 17:10:35 -080076 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.liaa4d92f2023-09-13 00:18:58 -070077 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.lice873192023-11-08 17:10:35 -080082 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.liaa4d92f2023-09-13 00:18:58 -070083 del /f /q "%WORK_DIR%\verity\sign_offset2"
84 echo "ap_caprootfs.img resign success"
85)
86
87if 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.lice873192023-11-08 17:10:35 -080095 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.liaa4d92f2023-09-13 00:18:58 -070096 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.lice873192023-11-08 17:10:35 -0800101 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.liaa4d92f2023-09-13 00:18:58 -0700102 del /f /q "%WORK_DIR%\verity\sign_offset4"
103 echo "cap_oem.img resign success"
104)
105
106move %WORK_DIR%\inter_ap_cpucap.bin %WORK_DIR%\ap_cpucap.bin
107
108del /f /q "%WORK_DIR%\ap_rootfs.u"
109del /f /q "%WORK_DIR%\ap_rootfs.sign"
110del /f /q "%WORK_DIR%\rootfs_mkimage_header.img"
111del /f /q "%WORK_DIR%\ap_rootfs.signed"
xf.li9d1a0e12023-09-20 01:43:20 -0700112del /f /q "%WORK_DIR%\ap_imagefs.img"
xf.liaa4d92f2023-09-13 00:18:58 -0700113rmdir /s /q "%WORK_DIR%\verity"