增加所有文件
This commit is contained in:
154
tools/sdtools/sign_tool/sign_helper.sh
Normal file
154
tools/sdtools/sign_tool/sign_helper.sh
Normal file
@@ -0,0 +1,154 @@
|
||||
#!/bin/bash
|
||||
|
||||
function get_image_max_size()
|
||||
{
|
||||
BPT_FILE=$1
|
||||
PARTITION_NAME=$2
|
||||
TYPE=$3
|
||||
MAX_SIZE=0
|
||||
|
||||
if [[ $# != 3 ]];then
|
||||
echo "get_image_max_size error param:$#" > /dev/stderr
|
||||
return -1
|
||||
fi
|
||||
|
||||
IMAGE_SIZE=`bpttool query_partition --input ${BPT_FILE} --label ${PARTITION_NAME} --type size`
|
||||
IMAGE_SIZE=`avbtool add_hash_footer --calc_max_image_size --partition_size ${IMAGE_SIZE}`
|
||||
MAX_SIZE=${IMAGE_SIZE}
|
||||
echo ${MAX_SIZE}
|
||||
}
|
||||
|
||||
function get_partition_size()
|
||||
{
|
||||
PARTITION_NAME=$1
|
||||
BPT_FILE=$2
|
||||
if [ $# != 2 ];then
|
||||
echo "get_partition_size error param:$#" > /dev/stderr
|
||||
return -1
|
||||
fi
|
||||
|
||||
IMAGE_SIZE=`bpttool query_partition --input ${BPT_FILE} --label ${PARTITION_NAME} --type size`
|
||||
echo ${IMAGE_SIZE}
|
||||
}
|
||||
|
||||
function image_add_hash_footer_no_bpt()
|
||||
{
|
||||
IMAGE=$1
|
||||
PARTITION_NAME=$2
|
||||
PARTITION_SIZE=$3
|
||||
HASH_ALG=$4
|
||||
VBMETA_SIGNED_ARGS=$5
|
||||
if [ $# != 5 ];then
|
||||
echo "image_add_hash_footer_no_bpt error param:$#" > /dev/stderr
|
||||
return -1
|
||||
fi
|
||||
|
||||
avbtool erase_footer --image ${IMAGE}
|
||||
avbtool add_hash_footer --partition_name ${PARTITION_NAME} --partition_size ${PARTITION_SIZE} --image ${IMAGE} --hash_algorithm $HASH_ALG $VBMETA_SIGNED_ARGS
|
||||
|
||||
DESCIPTOR=" --include_descriptors_from_image ${IMAGE} "
|
||||
echo ${DESCIPTOR}
|
||||
}
|
||||
|
||||
function image_add_hash_footer()
|
||||
{
|
||||
IMAGE=$1
|
||||
PARTITION_NAME=$2
|
||||
BPT_FILE=$3
|
||||
HASH_ALG=$4
|
||||
if [ $# != 4 ];then
|
||||
echo "image_add_hash_footer error param:$#" > /dev/stderr
|
||||
return -1
|
||||
fi
|
||||
|
||||
VBMETA_BLOB_DIR=`dirname ${IMAGE}`
|
||||
VBMETA_BLOB_BASE=`basename ${IMAGE}`
|
||||
VBMETA_BLOB=${VBMETA_BLOB_DIR}/${VBMETA_BLOB_BASE}.vbmeta.blob
|
||||
|
||||
PARTITION_SIZE=`bpttool query_partition --input ${BPT_FILE} --label ${PARTITION_NAME} --type size`
|
||||
avbtool erase_footer --compact_footer --image ${IMAGE}
|
||||
avbtool add_hash_footer --partition_name ${PARTITION_NAME} \
|
||||
--partition_size ${PARTITION_SIZE} \
|
||||
--image ${IMAGE} \
|
||||
--compact_footer \
|
||||
--output_vbmeta_image ${VBMETA_BLOB} \
|
||||
--do_not_append_vbmeta_image \
|
||||
--hash_algorithm $HASH_ALG
|
||||
|
||||
DESCIPTOR=" --include_descriptors_from_image ${VBMETA_BLOB} "
|
||||
echo ${DESCIPTOR}
|
||||
}
|
||||
|
||||
function images_add_footer()
|
||||
{
|
||||
BPT_ORIG_FILE=$1
|
||||
ITEMS=$2
|
||||
IMAGE=
|
||||
PARTITION_NAME=
|
||||
HASH_ALG=
|
||||
FOOTER_TYPE=
|
||||
INFOS=
|
||||
VBMTEA_DESCIPTOR=
|
||||
for item in ${ITEMS};do
|
||||
INFOS=(`echo $item | tr ':' ' '`)
|
||||
IMAGE=${INFOS[0]}
|
||||
PARTITION_NAME=${INFOS[1]}
|
||||
HASH_ALG=${INFOS[2]}
|
||||
FOOTER_TYPE=${INFOS[3]}
|
||||
if [[ x"$FOOTER_TYPE" == x"hashtree" ]];then
|
||||
VBMTEA_DESCIPTOR+=" $(image_add_hashtree_footer "${IMAGE}" "${PARTITION_NAME}" "${BPT_ORIG_FILE}" "${HASH_ALG}")"
|
||||
elif [[ x"$FOOTER_TYPE" == x"hash" ]];then
|
||||
VBMTEA_DESCIPTOR+=" $(image_add_hash_footer "${IMAGE}" "${PARTITION_NAME}" "${BPT_ORIG_FILE}" "${HASH_ALG}")"
|
||||
else
|
||||
echo "unsupported hash algorithm"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo ${VBMTEA_DESCIPTOR}
|
||||
}
|
||||
|
||||
function image_add_hashtree_footer()
|
||||
{
|
||||
IMAGE=$1
|
||||
PARTITION_NAME=$2
|
||||
BPT_FILE=$3
|
||||
HASH_ALG=$4
|
||||
FILE_TYPE=
|
||||
if [ $# != 4 ];then
|
||||
echo "image_add_hashtree_footer error param:$#" > /dev/stderr
|
||||
return -1
|
||||
fi
|
||||
|
||||
IMAGE=$(realpath $IMAGE)
|
||||
FILE_TYPE=$(file ${IMAGE})
|
||||
PARTITION_SIZE=`bpttool query_partition --input ${BPT_FILE} --label ${PARTITION_NAME} --type size`
|
||||
IMAGE_MAX_SIZE=`avbtool add_hashtree_footer --calc_max_image_size --partition_size ${PARTITION_SIZE}`
|
||||
if [[ "${FILE_TYPE}" =~ "ext4 filesystem" ]];then
|
||||
IMAGE_MAX_SIZE=$((IMAGE_MAX_SIZE/1048576))
|
||||
resize2fs ${IMAGE} "${IMAGE_MAX_SIZE}M" > /dev/null
|
||||
fi
|
||||
|
||||
avbtool erase_footer --image ${IMAGE}
|
||||
avbtool add_hashtree_footer --partition_name ${PARTITION_NAME} --partition_size ${PARTITION_SIZE} --image ${IMAGE} --hash_algorithm $HASH_ALG
|
||||
if [[ $? -ne 0 ]];then
|
||||
echo "[ERROR] fail to add hashtree for ${IMAGE}" > /dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
DESCIPTOR=" --include_descriptors_from_image ${IMAGE} "
|
||||
echo ${DESCIPTOR}
|
||||
}
|
||||
|
||||
function make_vbmeta_image()
|
||||
{
|
||||
DESCIPTOR=$1
|
||||
VBMETA_SIGNED_ARGS=$2
|
||||
VBMETA_FILE=$3
|
||||
|
||||
if [ $# != 3 ];then
|
||||
echo "make_vbmeta_image error param:$#" > /dev/stderr
|
||||
return -1
|
||||
fi
|
||||
|
||||
avbtool make_vbmeta_image --output ${VBMETA_FILE} ${VBMETA_SIGNED_ARGS} ${DESCIPTOR}
|
||||
return $?
|
||||
}
|
||||
Reference in New Issue
Block a user