#!/bin/bash

source ${TZ_SCRYPTO_TOOLS_PATH}/utils.sh

ELF_FIPS_COVERED_LEN=0;
export IN_OUT_FILE=/tmp/inout

if [ $# != 1 ]; then
    echo "---------------------------------------------------------------"
    echo " [Warning] Use below format"
    echo "    "
    echo "./run_fips_tools.sh <input elf file>"
    echo "---------------------------------------------------------------"
    exit 1
fi

ELF_FILE=$1

if [ ! -e "$TZ_SCRYPTO_TOOLS_IMPRINT" ]; then
    print_error "imprint is not found: IMPRINT = $TZ_SCRYPTO_TOOLS_IMPRINT"
fi

# embedding fips signature (HMAC) and storing FIPS covered len into ${IN_OUT_FILE}
print_info "$ELF_FILE"
$TZ_SCRYPTO_TOOLS_IMPRINT "$ELF_FILE"

if [ $? -ne 0 ]; then
    print_error "fips signature embedding failed"
fi

# get FIPS covered area len to pass it into syms checking
if [ -f "${IN_OUT_FILE}" ];
then
    ELF_FIPS_COVERED_LEN=$(cat "${IN_OUT_FILE}")
    rm -f "${IN_OUT_FILE}"
else
    print_error "tool process internal error"
fi

# If you are NOT SCRYPTO DEVELOPER!!! pass by
# the condition is used only by SCRYPTO DEVELOPERS,
# in case of check_FIPS_sym.sh exists.
if [ -e "$CHECK_FIPS_SYM" ]; then
    # check fips symbols order
    $CHECK_FIPS_SYM "$ELF_FILE" "$REFERENCE_LIST" "$ELF_FIPS_COVERED_LEN"
    if [ $? != 0 ]; then exit 1; fi
fi

exit 0
