blob: ed00f9ecf89fb8a23687bfbeba7742b847d05bd3 [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 )
46)
47echo "HASH_STR:" %HASH_STR%
48SignImage -r -i "%WORK_DIR%\uboot.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
49
50:: ap_rootfs.img ap_cpuap.bin
51:: ---------------------------------------------------------------------------------------------------------------
52:: | 640 Bytes | 640 Bytes | 64 Bytes | 64 Bytes |
53:: ---------------------------------------------------------------------------------------------------------------
54:: | ap_cpuap.bin signdata | ap_rootfs.img signdata | ap_rootfs.img mkimage header | ap_cpuap.bin mkimage header |
55:: ---------------------------------------------------------------------------------------------------------------
56fileread "%WORK_DIR%\ap_cpuap.bin" 1280 64 "%WORK_DIR%\rootfs_mkimage_header.img" || EXIT /B 1
57copy /b "%WORK_DIR%\rootfs_mkimage_header.img"+"%WORK_DIR%\ap_rootfs.img" "%WORK_DIR%\ap_rootfs.u" || EXIT /B 1
58SignImage -i "%WORK_DIR%\ap_rootfs.u" -o "%WORK_DIR%\ap_rootfs.signed" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
59fileread "%WORK_DIR%\ap_rootfs.signed" 0 704 "%WORK_DIR%\ap_rootfs.sign" || EXIT /B 1
60filewrite "%WORK_DIR%\ap_cpuap.bin" 640 "%WORK_DIR%\ap_rootfs.sign" "%WORK_DIR%\ap_cpuap.bin" || EXIT /B 1
61SignImage -r -i "%WORK_DIR%\ap_cpuap.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
62
63SignImage -r -i "%WORK_DIR%\evb_cpurpm.img" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
64SignImage -r -i "%WORK_DIR%\evb_cpuphy.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
65SignImage -r -i "%WORK_DIR%\inter_ap_cpucap.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
66
67if exist "%WORK_DIR%\ap_caprootfs.img.dm" (
68 echo "ap_caprootfs.img resign start"
69 if exist "%WORK_DIR%\verity" rmdir /s /q "%WORK_DIR%\verity"
70 mkdir "%WORK_DIR%\verity"
71 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
72 SignImage -d -i "%WORK_DIR%\verity\raw_table" -o "%WORK_DIR%\verity\raw_table.signed" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
73 fileseek "%WORK_DIR%\ap_caprootfs.img" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset"
74 if %ERRORLEVEL% NEQ 0 EXIT /B 1
75 set /p sign_offset=<"%WORK_DIR%\verity\sign_offset"
76 echo caprootfs sign_offset %sign_offset%
77 filewrite "%WORK_DIR%\ap_caprootfs.img" %sign_offset% %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\ap_caprootfs.img" || EXIT /B 1
78 del /f /q "%WORK_DIR%\verity\sign_offset"
79
80 ::fix ap_caprootfs.img.dm
81 fileseek "%WORK_DIR%\ap_caprootfs.img.dm" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset2"
82 if %ERRORLEVEL% NEQ 0 EXIT /B 1
83 set /p sign_offset2=<"%WORK_DIR%\verity\sign_offset2"
84 echo caprootfs dm sign_offset %sign_offset2%
85 filewrite "%WORK_DIR%\ap_caprootfs.img.dm" %sign_offset2% %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\ap_caprootfs.img.dm" || EXIT /B 1
86 del /f /q "%WORK_DIR%\verity\sign_offset2"
87 echo "ap_caprootfs.img resign success"
88)
89
90if exist "%WORK_DIR%\cap_oem.img.dm" (
91 echo "cap_oem.img resign start"
92 if exist "%WORK_DIR%\verity" rmdir /s /q "%WORK_DIR%\verity"
93 mkdir "%WORK_DIR%\verity"
94 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
95 SignImage -d -i "%WORK_DIR%\verity\raw_table" -o "%WORK_DIR%\verity\raw_table.signed" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1
96 fileseek "%WORK_DIR%\cap_oem.img" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset3"
97 if %ERRORLEVEL% NEQ 0 EXIT /B 1
98 set /p sign_offset3=<"%WORK_DIR%\verity\sign_offset3"
99 echo oem sign_offset %sign_offset3%
100 filewrite "%WORK_DIR%\cap_oem.img" %sign_offset3% %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\cap_oem.img" || EXIT /B 1
101 del /f /q "%WORK_DIR%\verity\sign_offset3"
102
103 ::fix cap_oem.img.dm
104 fileseek "%WORK_DIR%\cap_oem.img.dm" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset4"
105 if %ERRORLEVEL% NEQ 0 EXIT /B 1
106 set /p sign_offset4=<"%WORK_DIR%\verity\sign_offset4"
107 echo oem dm sign_offset %sign_offset4%
108 filewrite "%WORK_DIR%\cap_oem.img.dm" %sign_offset4% %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\cap_oem.img.dm" || EXIT /B 1
109 del /f /q "%WORK_DIR%\verity\sign_offset4"
110 echo "cap_oem.img resign success"
111)
112
113move %WORK_DIR%\inter_ap_cpucap.bin %WORK_DIR%\ap_cpucap.bin
114
115del /f /q "%WORK_DIR%\ap_rootfs.u"
116del /f /q "%WORK_DIR%\ap_rootfs.sign"
117del /f /q "%WORK_DIR%\rootfs_mkimage_header.img"
118del /f /q "%WORK_DIR%\ap_rootfs.signed"
xf.li9d1a0e12023-09-20 01:43:20 -0700119del /f /q "%WORK_DIR%\ap_imagefs.img"
xf.liaa4d92f2023-09-13 00:18:58 -0700120rmdir /s /q "%WORK_DIR%\verity"