#!/bin/bash INPUT_TYPE=$1 INPUT_FILE=$2 SIGN_FILE=$INPUT_FILE PROJECT_CONF="/lkp/scheduled/job.yaml" POST_ADDR="" POST_FILE_SHA256="" POST_KEY_NAME="" POST_KEY_TYPE="" POST_FILE_TYPE="" POST_SIGN_TYPE="" POST_JOB_ID="" POST_OS_ORIJECT="" CONFIG_RETEST_COUNT=5 SIGN_RESULT=0 FAILED_SIGN_PERMISSION_DENIED=2 # Tool functions for JSON get_json_value(){ echo "$1" | \ awk -F "[{,:}]" '{for(i=1;i $INPUT_FILE.sig if [ $? -ne 0 ]; then echo "Failed to write the signed file" return 1 fi # for test # cp -f $INPUT_FILE $INPUT_FILE.sig # req="{file_sha256:41c68fca7b3870cc9ef13a828a74af933bd8e4ff345fcfa316}" # 3. check the hash sha256_cal=$(sha256sum $INPUT_FILE.sig | awk '{print $1}') sha256_get=$(get_json_value "$req" "file_sha256" | tr '[:upper:]' '[:lower:]') if [ "$sha256_cal" != "$sha256_get" ]; then echo "Failed to verify the hash value" return 1 fi } sign_post() { case $INPUT_TYPE in --efi) efi_sign_post ;; --module) module_sign_post ;; --ima-digestlist) ima_digestlist_sign_post ;; --kernel) kernel_sign_post ;; esac } # Main function sign_pre for ((i=1; i<=$CONFIG_RETEST_COUNT; i++)); do sign ret_sign=$? if [ $ret_sign -eq 0 ]; then echo "Succeed to sign file" break; elif [ $ret_sign -eq $FAILED_SIGN_PERMISSION_DENIED ]; then echo "Failed to sign file, permission denied" SIGN_RESULT=$FAILED_SIGN_PERMISSION_DENIED break; elif [ $i -ne $CONFIG_RETEST_COUNT ]; then echo "Failed to sign file, try again" elif [ $i -eq $CONFIG_RETEST_COUNT ]; then echo "Failed to sign file" SIGN_RESULT=1 fi done sign_post exit $SIGN_RESULT