[Feature][ZXW-130]merge P50U02 version

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: I4f29ec5bb7c59385f23738d2b7ca84e67c100f69
diff --git a/allbins/tools/mtd-utils/ubinize-static.sh b/allbins/tools/mtd-utils/ubinize-static.sh
new file mode 100755
index 0000000..84f6aaf
--- /dev/null
+++ b/allbins/tools/mtd-utils/ubinize-static.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+if [ $# -ne 4 ]; then
+    echo "$0 error"
+    echo "Usage:"
+    echo "        $0 mtd_name outfile image_file ubinize_para"
+    exit  -1
+fi
+
+mtdname=$1
+outfile=$2
+imgfile=$3
+ubinize_para=$4
+
+filesize="$(stat -c%s $imgfile)"
+
+cfg_file_name=$mtdname.cfg
+
+echo "[$mtdname]"                     > $cfg_file_name
+echo "mode=ubi"                      >> $cfg_file_name
+echo "image=$imgfile"                >> $cfg_file_name
+echo "vol_id=0"                      >> $cfg_file_name
+echo "vol_size=${filesize}"          >> $cfg_file_name
+echo "vol_type=dynamic"               >> $cfg_file_name
+echo "vol_name=$mtdname"             >> $cfg_file_name
+
+cat $cfg_file_name
+
+ubinize  -o $outfile $ubinize_para $cfg_file_name
+if [ $? -ne 0 ]; then
+    echo "ubinize error"
+    exit -2
+else
+    echo "ubinize ok"
+fi
+
+rm -v $cfg_file_name
diff --git a/allbins/tools/resign_tool/fileread b/allbins/tools/resign_tool/fileread
new file mode 100755
index 0000000..cfcc472
--- /dev/null
+++ b/allbins/tools/resign_tool/fileread
Binary files differ
diff --git a/allbins/tools/resign_tool/fileread.exe b/allbins/tools/resign_tool/fileread.exe
new file mode 100755
index 0000000..97740d6
--- /dev/null
+++ b/allbins/tools/resign_tool/fileread.exe
Binary files differ
diff --git a/allbins/tools/resign_tool/fileseek b/allbins/tools/resign_tool/fileseek
new file mode 100755
index 0000000..c63a901
--- /dev/null
+++ b/allbins/tools/resign_tool/fileseek
Binary files differ
diff --git a/allbins/tools/resign_tool/fileseek.exe b/allbins/tools/resign_tool/fileseek.exe
new file mode 100755
index 0000000..bb1590b
--- /dev/null
+++ b/allbins/tools/resign_tool/fileseek.exe
Binary files differ
diff --git a/allbins/tools/resign_tool/filewrite b/allbins/tools/resign_tool/filewrite
new file mode 100755
index 0000000..0edcc84
--- /dev/null
+++ b/allbins/tools/resign_tool/filewrite
Binary files differ
diff --git a/allbins/tools/resign_tool/filewrite.exe b/allbins/tools/resign_tool/filewrite.exe
new file mode 100755
index 0000000..ffd4129
--- /dev/null
+++ b/allbins/tools/resign_tool/filewrite.exe
Binary files differ
diff --git a/allbins/tools/resign_tool/resign.bat b/allbins/tools/resign_tool/resign.bat
new file mode 100755
index 0000000..fd4d94f
--- /dev/null
+++ b/allbins/tools/resign_tool/resign.bat
@@ -0,0 +1,119 @@
+@echo off

+

+if "%~1" equ "" (

+    echo "Usage: %0 private_key work_dir [device]"

+    exit /b -1

+)

+

+if "%~2" equ "" (

+    echo "Usage: %0 private_key work_dir [device]"

+    exit /b -1

+)

+

+set PRIVATE_KEY=%1

+set WORK_DIR=%2

+

+set DEVICE=%3

+set HASH_STR="sha256"

+

+echo Private Key: %PRIVATE_KEY%

+echo Work Dir: %WORK_DIR%

+if exist %WORK_DIR%\ap_cpucap.bin (

+    move %WORK_DIR%\ap_cpucap.bin %WORK_DIR%\inter_ap_cpucap.bin

+)

+:: vehicle device zloader.bin structure

+:: ---------------------------------------------------------------

+:: |      8 KB         |        24 KB       |         8KB        |

+:: ---------------------------------------------------------------

+:: |   bootrom1.bin    |   bootrom2.bin     |   zloader3.bin     | 

+:: ---------------------------------------------------------------

+for %%a in (%WORK_DIR%\zloader.bin) do set size=%%~za

+echo %WORK_DIR%\zloader.bin %size% Bytes

+if "%DEVICE%" equ "v3t" (

+    set HASH_STR="md5"

+    if %size%  gtr  32768 (

+        fileread  "%WORK_DIR%\zloader.bin"      0     8192  "%WORK_DIR%\bootrom1.bin" || EXIT /B 1

+        fileread  "%WORK_DIR%\zloader.bin"   8192    24576  "%WORK_DIR%\bootrom2.bin" || EXIT /B 1

+        fileread  "%WORK_DIR%\zloader.bin"  32768        0  "%WORK_DIR%\zloader3.bin" || EXIT /B 1

+        SignImage -z -i "%WORK_DIR%\bootrom1.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+        SignImage -z -i "%WORK_DIR%\bootrom2.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+        SignImage -z -i "%WORK_DIR%\zloader3.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+        copy /b "%WORK_DIR%\bootrom1.bin"+"%WORK_DIR%\bootrom2.bin"+"%WORK_DIR%\zloader3.bin" "%WORK_DIR%\zloader.bin" || EXIT /B 1

+        del /f /q "%WORK_DIR%\bootrom1.bin" "%WORK_DIR%\bootrom2.bin" "%WORK_DIR%\zloader3.bin"

+    ) else (

+       SignImage -z -i "%WORK_DIR%\zloader.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+    )

+)

+echo "HASH_STR:" %HASH_STR%

+SignImage -r -i "%WORK_DIR%\uboot.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+

+:: ap_rootfs.img ap_cpuap.bin

+:: ---------------------------------------------------------------------------------------------------------------

+:: |     640 Bytes         |        640 Bytes       |      64 Bytes                |    64 Bytes                 |

+:: ---------------------------------------------------------------------------------------------------------------

+:: | ap_cpuap.bin signdata | ap_rootfs.img signdata | ap_rootfs.img mkimage header | ap_cpuap.bin mkimage header |

+:: ---------------------------------------------------------------------------------------------------------------

+fileread  "%WORK_DIR%\ap_cpuap.bin"  1280 64 "%WORK_DIR%\rootfs_mkimage_header.img" || EXIT /B 1

+copy /b "%WORK_DIR%\rootfs_mkimage_header.img"+"%WORK_DIR%\ap_rootfs.img" "%WORK_DIR%\ap_rootfs.u" || EXIT /B 1

+SignImage -i "%WORK_DIR%\ap_rootfs.u"  -o "%WORK_DIR%\ap_rootfs.signed"  -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+fileread  "%WORK_DIR%\ap_rootfs.signed" 0 704 "%WORK_DIR%\ap_rootfs.sign" || EXIT /B 1

+filewrite "%WORK_DIR%\ap_cpuap.bin" 640 "%WORK_DIR%\ap_rootfs.sign"  "%WORK_DIR%\ap_cpuap.bin" || EXIT /B 1

+SignImage -r -i  "%WORK_DIR%\ap_cpuap.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+

+SignImage -r -i "%WORK_DIR%\evb_cpurpm.img" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+SignImage -r -i "%WORK_DIR%\evb_cpuphy.bin" -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+SignImage -r -i "%WORK_DIR%\inter_ap_cpucap.bin"  -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+

+if exist "%WORK_DIR%\ap_caprootfs.img.dm" (

+    echo "ap_caprootfs.img resign start"

+    if exist "%WORK_DIR%\verity"  rmdir /s /q "%WORK_DIR%\verity"

+    mkdir "%WORK_DIR%\verity"

+    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

+    SignImage -d -i  "%WORK_DIR%\verity\raw_table" -o "%WORK_DIR%\verity\raw_table.signed"  -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+    fileseek "%WORK_DIR%\ap_caprootfs.img" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset"

+    if %ERRORLEVEL% NEQ 0  EXIT /B 1

+    set /p sign_offset=<"%WORK_DIR%\verity\sign_offset"

+    echo caprootfs sign_offset %sign_offset%

+    filewrite "%WORK_DIR%\ap_caprootfs.img" %sign_offset% %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\ap_caprootfs.img" || EXIT /B 1

+    del /f /q "%WORK_DIR%\verity\sign_offset"

+

+    ::fix ap_caprootfs.img.dm

+    fileseek "%WORK_DIR%\ap_caprootfs.img.dm" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset2"

+    if %ERRORLEVEL% NEQ 0  EXIT /B 1

+    set /p sign_offset2=<"%WORK_DIR%\verity\sign_offset2"

+    echo caprootfs dm sign_offset %sign_offset2%

+    filewrite "%WORK_DIR%\ap_caprootfs.img.dm" %sign_offset2%  %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\ap_caprootfs.img.dm" || EXIT /B 1

+    del /f /q "%WORK_DIR%\verity\sign_offset2"

+    echo "ap_caprootfs.img resign success"

+)

+

+if exist "%WORK_DIR%\cap_oem.img.dm" (

+    echo "cap_oem.img resign start"

+    if exist "%WORK_DIR%\verity" rmdir /s /q "%WORK_DIR%\verity"

+    mkdir "%WORK_DIR%\verity"

+    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

+    SignImage -d -i  "%WORK_DIR%\verity\raw_table" -o "%WORK_DIR%\verity\raw_table.signed"  -k %PRIVATE_KEY% -t %HASH_STR% || EXIT /B 1

+    fileseek "%WORK_DIR%\cap_oem.img" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset3"

+    if %ERRORLEVEL% NEQ 0  EXIT /B 1

+    set /p sign_offset3=<"%WORK_DIR%\verity\sign_offset3"

+    echo oem sign_offset %sign_offset3%

+    filewrite "%WORK_DIR%\cap_oem.img" %sign_offset3%  %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\cap_oem.img" || EXIT /B 1

+    del /f /q "%WORK_DIR%\verity\sign_offset3"

+

+    ::fix cap_oem.img.dm

+    fileseek "%WORK_DIR%\cap_oem.img.dm" "%WORK_DIR%\verity\sign" > "%WORK_DIR%\verity\sign_offset4"

+    if %ERRORLEVEL% NEQ 0  EXIT /B 1

+    set /p sign_offset4=<"%WORK_DIR%\verity\sign_offset4"

+    echo oem dm sign_offset %sign_offset4%

+    filewrite "%WORK_DIR%\cap_oem.img.dm" %sign_offset4% %WORK_DIR%\verity\raw_table.signed "%WORK_DIR%\cap_oem.img.dm" || EXIT /B 1

+    del /f /q "%WORK_DIR%\verity\sign_offset4"

+    echo "cap_oem.img resign success"

+)

+

+move %WORK_DIR%\inter_ap_cpucap.bin %WORK_DIR%\ap_cpucap.bin

+

+del /f /q "%WORK_DIR%\ap_rootfs.u"

+del /f /q "%WORK_DIR%\ap_rootfs.sign"

+del /f /q "%WORK_DIR%\rootfs_mkimage_header.img"

+del /f /q "%WORK_DIR%\ap_rootfs.signed"

+rmdir /s /q "%WORK_DIR%\verity"

diff --git a/allbins/tools/resign_tool/resign.sh b/allbins/tools/resign_tool/resign.sh
new file mode 100755
index 0000000..8c64e9a
--- /dev/null
+++ b/allbins/tools/resign_tool/resign.sh
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+set -e
+
+if [ $# -lt 2 ]; then
+    echo "$0 private_key work_dir"
+    exit -1
+fi
+
+PRIVATE_KEY=$1
+WORK_DIR=$2
+#v3t for old device, sha256 is not supported, only md5
+DEVICE=$3
+HASH_STR="sha256"
+
+echo "PRIVATE_KEY:" $PRIVATE_KEY
+echo "WORK_DIR:" $WORK_DIR
+
+#ap_cpucap name changed for checking errors
+if [ -f $WORK_DIR/ap_cpucap.bin ]; then
+    mv $WORK_DIR/ap_cpucap.bin $WORK_DIR/inter_ap_cpucap.bin
+fi
+# vehicle device zloader.bin structure
+# ---------------------------------------------------------------
+# |      8 KB         |        24 KB       |       8KB          |
+# ---------------------------------------------------------------
+# |   bootrom1.bin    |   bootrom2.bin     |   zloader3.bin     | 
+# ---------------------------------------------------------------
+if [ x"$DEVICE" = x"v3t" ]; then
+    HASH_STR="md5"
+    if [ `ls -s $WORK_DIR/zloader.bin | awk '{print $1}'` -gt 32 ]; then
+        #old v3t device for vehicle
+        fileread  $WORK_DIR/zloader.bin     0  8192  $WORK_DIR/bootrom1.bin
+        fileread  $WORK_DIR/zloader.bin  8192 24576  $WORK_DIR/bootrom2.bin
+        fileread  $WORK_DIR/zloader.bin 32768     0  $WORK_DIR/zloader3.bin
+        SignImage -z -i $WORK_DIR/bootrom1.bin -k $PRIVATE_KEY -t $HASH_STR
+        SignImage -z -i $WORK_DIR/bootrom2.bin -k $PRIVATE_KEY -t $HASH_STR
+        SignImage -z -i $WORK_DIR/zloader3.bin -k $PRIVATE_KEY -t $HASH_STR
+        cat $WORK_DIR/bootrom1.bin $WORK_DIR/bootrom2.bin $WORK_DIR/zloader3.bin > $WORK_DIR/zloader.bin
+        rm -v $WORK_DIR/bootrom1.bin $WORK_DIR/bootrom2.bin $WORK_DIR/zloader3.bin
+    else
+        #old v3t device for mdl/mifi etc.
+        SignImage -z -i $WORK_DIR/zloader.bin -k $PRIVATE_KEY -t $HASH_STR
+    fi
+fi
+echo "HASH_STR:" $HASH_STR
+SignImage -r -i $WORK_DIR/uboot.bin -k $PRIVATE_KEY -t $HASH_STR
+
+# ap_rootfs.img ap_cpuap.bin
+# ---------------------------------------------------------------------------------------------------------------
+# |     640 Bytes         |        640 Bytes       |      64 Bytes                |    64 Bytes                 |
+# ---------------------------------------------------------------------------------------------------------------
+# | ap_cpuap.bin signdata | ap_rootfs.img signdata | ap_rootfs.img mkimage header | ap_cpuap.bin mkimage header |
+# ---------------------------------------------------------------------------------------------------------------
+#mkimage -A arm -O linux -C none  -T filesystem -a 0 -e 0 -n 'rootfs' -d $WORK_DIR/ap_rootfs.img $WORK_DIR/ap_rootfs_u.img
+fileread $WORK_DIR/ap_cpuap.bin  1280 64 $WORK_DIR/rootfs_mkimage_header.img
+cat $WORK_DIR/rootfs_mkimage_header.img $WORK_DIR/ap_rootfs.img > $WORK_DIR/ap_rootfs.u
+SignImage -i $WORK_DIR/ap_rootfs.u  -o $WORK_DIR/ap_rootfs.signed  -k $PRIVATE_KEY -t $HASH_STR
+fileread $WORK_DIR/ap_rootfs.signed 0 704 $WORK_DIR/ap_rootfs.sign
+filewrite $WORK_DIR/ap_cpuap.bin 640 $WORK_DIR/ap_rootfs.sign $WORK_DIR/ap_cpuap.bin
+SignImage -r -i  $WORK_DIR/ap_cpuap.bin -k $PRIVATE_KEY -t $HASH_STR
+
+SignImage -r -i $WORK_DIR/evb_cpurpm.img -k $PRIVATE_KEY -t $HASH_STR
+SignImage -r -i $WORK_DIR/evb_cpuphy.bin -k $PRIVATE_KEY -t $HASH_STR
+SignImage -r -i $WORK_DIR/inter_ap_cpucap.bin  -k $PRIVATE_KEY -t $HASH_STR
+
+if [ -f $WORK_DIR/ap_caprootfs.img.dm ]; then
+    echo "ap_caprootfs.img resign start"
+    rm -rf $WORK_DIR/verity && mkdir -p $WORK_DIR/verity
+    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
+    SignImage -d -i  $WORK_DIR/verity/raw_table -o $WORK_DIR/verity/raw_table.signed  -k $PRIVATE_KEY -t $HASH_STR
+    fileseek $WORK_DIR/ap_caprootfs.img $WORK_DIR/verity/sign > $WORK_DIR/verity/sign_offset
+    sign_offset=` sed -n '/found/p' $WORK_DIR/verity/sign_offset | awk '{print $2}' `
+    echo caprootfs sign_offset $sign_offset
+    filewrite  $WORK_DIR/ap_caprootfs.img $sign_offset  $WORK_DIR/verity/raw_table.signed $WORK_DIR/ap_caprootfs.img
+
+    #fix ap_caprootfs.img.dm
+    fileseek $WORK_DIR/ap_caprootfs.img.dm $WORK_DIR/verity/sign > $WORK_DIR/verity/sign_offset
+    sign_offset=` sed -n '/found/p' $WORK_DIR/verity/sign_offset | awk '{print $2}' `
+    echo caprootfs dm sign_offset $sign_offset
+    filewrite  $WORK_DIR/ap_caprootfs.img.dm $sign_offset  $WORK_DIR/verity/raw_table.signed $WORK_DIR/ap_caprootfs.img.dm
+
+    echo "ap_caprootfs.img resign success"
+fi
+if [ -f $WORK_DIR/cap_oem.img.dm ]; then
+    echo "cap_oem.img resign start"
+    rm -rf $WORK_DIR/verity && mkdir -p $WORK_DIR/verity
+    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
+    SignImage -d -i  $WORK_DIR/verity/raw_table -o $WORK_DIR/verity/raw_table.signed  -k $PRIVATE_KEY -t $HASH_STR
+    fileseek $WORK_DIR/cap_oem.img $WORK_DIR/verity/sign > $WORK_DIR/verity/sign_offset
+    sign_offset=` sed -n '/found/p' $WORK_DIR/verity/sign_offset | awk '{print $2}' `
+    echo oem sign_offset $sign_offset
+    filewrite  $WORK_DIR/cap_oem.img $sign_offset  $WORK_DIR/verity/raw_table.signed $WORK_DIR/cap_oem.img
+
+    #fix cap_oem.img.dm
+    fileseek $WORK_DIR/cap_oem.img.dm $WORK_DIR/verity/sign > $WORK_DIR/verity/sign_offset
+    sign_offset=` sed -n '/found/p' $WORK_DIR/verity/sign_offset | awk '{print $2}' `
+    echo oem dm sign_offset $sign_offset
+    filewrite  $WORK_DIR/cap_oem.img.dm $sign_offset  $WORK_DIR/verity/raw_table.signed $WORK_DIR/cap_oem.img.dm
+    echo "cap_oem.img resign success"
+fi
+
+mv $WORK_DIR/inter_ap_cpucap.bin $WORK_DIR/ap_cpucap.bin
+
+rm -fv $WORK_DIR/ap_rootfs.u
+rm -fv $WORK_DIR/ap_rootfs.sign
+rm -fv $WORK_DIR/rootfs_mkimage_header.img
+rm -fv $WORK_DIR/ap_rootfs.signed
+rm -fr $WORK_DIR/verity
diff --git a/allbins/tools/squashfskit/squashfs_dm-verity.sh b/allbins/tools/squashfskit/squashfs_dm-verity.sh
new file mode 100755
index 0000000..86a898d
--- /dev/null
+++ b/allbins/tools/squashfskit/squashfs_dm-verity.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+IN_FILE=$1
+WORK_DIR=$2
+OUT_FILE=$3
+PRIV_KEY=$4
+SignImage=$5
+
+VERITY_DIR=$WORK_DIR/verity
+
+rm -rf $VERITY_DIR  $OUT_FILE  $OUT_FILE.pad
+mkdir -p  $VERITY_DIR
+
+# 1.pad
+let size="$(stat -c%s $IN_FILE)" pad="128*1024" offset="0"  pad="(pad - ((size + offset) % pad)) % pad"  newsize='size + pad'
+echo $size $newsize
+dd  if=$IN_FILE   of=$OUT_FILE  bs=$newsize count=1  conv=sync
+cp -v $OUT_FILE   $OUT_FILE.pad
+
+# 2. gen raw_table and hash_tree
+veritysetup format $OUT_FILE $VERITY_DIR/hash_tree > $VERITY_DIR/raw_table
+if [ $? -ne 0 ]; then
+	echo "generate squashfs dm-verity veritysetup format error!"
+	exit 1
+fi
+
+# 3. gen signature of raw_table
+#openssl dgst -sha256 -binary -sign $PRIV_KEY $VERITY_DIR/raw_table > $VERITY_DIR/sign
+$SignImage -i  $VERITY_DIR/raw_table -o $VERITY_DIR/raw_table.signed  -k $PRIV_KEY
+if [ $? -ne 0 ]; then
+	echo "generate squashfs dm-verity sign error!"
+	exit 1
+fi
+dd if=$VERITY_DIR/raw_table.signed  of=$VERITY_DIR/sign bs=640 count=1 status=none
+
+# 4. padding sign, raw_table and hash_tree to input file
+zxic_generate_squashfs_verity $OUT_FILE $VERITY_DIR/sign $VERITY_DIR/raw_table $VERITY_DIR/hash_tree
+if [ $? -ne 0 ]; then
+	echo "generate squashfs dm-verity error!"
+	exit 1
+fi
diff --git a/allbins/tools/squashfskit/zxic_generate_squashfs_verity b/allbins/tools/squashfskit/zxic_generate_squashfs_verity
new file mode 100755
index 0000000..8d2fbf7
--- /dev/null
+++ b/allbins/tools/squashfskit/zxic_generate_squashfs_verity
Binary files differ
diff --git a/allbins/tools/squashfskit/zxic_parse_squashfs_verity b/allbins/tools/squashfskit/zxic_parse_squashfs_verity
new file mode 100755
index 0000000..10fd2b2
--- /dev/null
+++ b/allbins/tools/squashfskit/zxic_parse_squashfs_verity
Binary files differ
diff --git a/allbins/tools/squashfskit/zxic_parse_squashfs_verity.exe b/allbins/tools/squashfskit/zxic_parse_squashfs_verity.exe
new file mode 100755
index 0000000..3f2b456
--- /dev/null
+++ b/allbins/tools/squashfskit/zxic_parse_squashfs_verity.exe
Binary files differ