xref: /optee_os/ta/pkcs11/scripts/verify-helpers.sh (revision 228cf40e2ba89ab3d8afac3eba57e4563fd6c630)
1*228cf40eSRouven Czerwinski#!/usr/bin/env bash
25dfe80d6SVesa Jääskeläinen# SPDX-License-Identifier: BSD-2-Clause
35dfe80d6SVesa Jääskeläinen
45dfe80d6SVesa JääskeläinenSHOW_DETAILS=1
55dfe80d6SVesa JääskeläinenERRORS=""
65dfe80d6SVesa Jääskeläinenbasepath="$(dirname $(dirname $(readlink -f "$0")))"
75dfe80d6SVesa Jääskeläinen
85dfe80d6SVesa Jääskeläinendetails () [[ ${SHOW_DETAILS} -ne 0 ]]
95dfe80d6SVesa Jääskeläinen
105dfe80d6SVesa Jääskeläinenverify_enum () {
115dfe80d6SVesa Jääskeläinen  PREFIX=$1
125dfe80d6SVesa Jääskeläinen  SYMBOL_LIST="$(grep PKCS11\_$PREFIX\_ ${basepath}/include/pkcs11_ta.h | cut -f2 | cut '-d ' -f1)"
135dfe80d6SVesa Jääskeläinen  details && echo -e "\e[4m${PREFIX}\e[0m"
145dfe80d6SVesa Jääskeläinen  details && echo ""
155dfe80d6SVesa Jääskeläinen  details && echo -e "symbol\tuses\tstatus"
165dfe80d6SVesa Jääskeläinen  for symbol in $SYMBOL_LIST ; do
175dfe80d6SVesa Jääskeläinen    details && echo -n "$symbol"
185dfe80d6SVesa Jääskeläinen    COUNT="$(grep ${symbol} ${basepath}/src/* | wc -l)"
195dfe80d6SVesa Jääskeläinen    details && echo -n -e "\t${COUNT}\t"
205dfe80d6SVesa Jääskeläinen    PRESENT="$(grep PKCS11_ID.*\($symbol.*\) ${basepath}/src/pkcs11_helpers.c | wc -l)"
215dfe80d6SVesa Jääskeläinen    if [ ${PRESENT} -ne 0 ] ; then
225dfe80d6SVesa Jääskeläinen      details && echo -e "\e[32mOK\e[0m"
235dfe80d6SVesa Jääskeläinen    elif [ $COUNT -eq 0 ] ; then
245dfe80d6SVesa Jääskeläinen      details && echo -e "\e[33mmissing but unused\e[0m"
255dfe80d6SVesa Jääskeläinen    else
265dfe80d6SVesa Jääskeläinen      details && echo -e "\e[31mMISSING!\e[0m"
275dfe80d6SVesa Jääskeläinen      ERRORS+=" ${symbol}"
285dfe80d6SVesa Jääskeläinen    fi
295dfe80d6SVesa Jääskeläinen  done
305dfe80d6SVesa Jääskeläinen  details && echo ""
315dfe80d6SVesa Jääskeläinen}
325dfe80d6SVesa Jääskeläinen
335dfe80d6SVesa Jääskeläinenverify_define () {
345dfe80d6SVesa Jääskeläinen  PREFIX=$1
355dfe80d6SVesa Jääskeläinen  SYMBOL_LIST="$(grep PKCS11\_$PREFIX\_ ${basepath}/include/pkcs11_ta.h | grep ^#define | cut '-d ' -f2 | cut -f1)"
365dfe80d6SVesa Jääskeläinen  details && echo -e "\e[4m${PREFIX}\e[0m"
375dfe80d6SVesa Jääskeläinen  details && echo ""
385dfe80d6SVesa Jääskeläinen  details && echo -e "symbol\tuses\tstatus"
395dfe80d6SVesa Jääskeläinen  for symbol in $SYMBOL_LIST ; do
405dfe80d6SVesa Jääskeläinen    details && echo -n "$symbol"
415dfe80d6SVesa Jääskeläinen    COUNT="$(grep ${symbol} ${basepath}/src/* | wc -l)"
425dfe80d6SVesa Jääskeläinen    details && echo -n -e "\t${COUNT}\t"
435dfe80d6SVesa Jääskeläinen    PRESENT="$(grep PKCS11_ID.*\($symbol.*\) ${basepath}/src/pkcs11_helpers.c | wc -l)"
445dfe80d6SVesa Jääskeläinen    if [ ${PRESENT} -ne 0 ] ; then
455dfe80d6SVesa Jääskeläinen      details && echo -e "\e[32mOK\e[0m"
465dfe80d6SVesa Jääskeläinen    elif [ $COUNT -eq 0 ] ; then
475dfe80d6SVesa Jääskeläinen      details && echo -e "\e[33mmissing but unused\e[0m"
485dfe80d6SVesa Jääskeläinen    else
495dfe80d6SVesa Jääskeläinen      details && echo -e "\e[31mMISSING!\e[0m"
505dfe80d6SVesa Jääskeläinen      ERRORS+=" ${symbol}"
515dfe80d6SVesa Jääskeläinen    fi
525dfe80d6SVesa Jääskeläinen  done
535dfe80d6SVesa Jääskeläinen  details && echo ""
545dfe80d6SVesa Jääskeläinen}
555dfe80d6SVesa Jääskeläinen
565dfe80d6SVesa Jääskeläinenusage() {
575dfe80d6SVesa Jääskeläinen  SCR=$(basename "$0")
585dfe80d6SVesa Jääskeläinen  echo "Usage: $SCR		Verify that helpers are up to date"
595dfe80d6SVesa Jääskeläinen  echo "       $SCR --quiet	Only print errors"
605dfe80d6SVesa Jääskeläinen  echo "       $SCR --help		This help"
615dfe80d6SVesa Jääskeläinen  echo ""
625dfe80d6SVesa Jääskeläinen  echo "Verification checks that all PKCS11_* enums or defines from \
635dfe80d6SVesa Jääskeläineninclude/pkcs11_ta.h are either present in src/pkcs11_helpers.c or not used at \
645dfe80d6SVesa Jääskeläinenall."
655dfe80d6SVesa Jääskeläinen  exit 1
665dfe80d6SVesa Jääskeläinen}
675dfe80d6SVesa Jääskeläinen
685dfe80d6SVesa Jääskeläinenwhile [[ $# -gt 0 ]]; do
695dfe80d6SVesa Jääskeläinen  arg="$1"
705dfe80d6SVesa Jääskeläinen  shift
715dfe80d6SVesa Jääskeläinen
725dfe80d6SVesa Jääskeläinen  case $arg in
735dfe80d6SVesa Jääskeläinen    -q|--quiet)
745dfe80d6SVesa Jääskeläinen      SHOW_DETAILS=0
755dfe80d6SVesa Jääskeläinen      ;;
765dfe80d6SVesa Jääskeläinen    -h|--help)
775dfe80d6SVesa Jääskeläinen      usage
785dfe80d6SVesa Jääskeläinen      ;;
795dfe80d6SVesa Jääskeläinen    *)
805dfe80d6SVesa Jääskeläinen      echo "error: invalid argument: ${arg}" 1>&2
815dfe80d6SVesa Jääskeläinen      exit 1
825dfe80d6SVesa Jääskeläinen  esac
835dfe80d6SVesa Jääskeläinendone
845dfe80d6SVesa Jääskeläinen
855dfe80d6SVesa Jääskeläinen# check that symbols exists
865dfe80d6SVesa Jääskeläinenverify_enum CKA
875dfe80d6SVesa Jääskeläinenverify_define CKFS
885dfe80d6SVesa Jääskeläinenverify_define CKFT
895dfe80d6SVesa Jääskeläinenverify_define CKFSS
905dfe80d6SVesa Jääskeläinenverify_enum CKS
915dfe80d6SVesa Jääskeläinenverify_enum CKR
925dfe80d6SVesa Jääskeläinenverify_enum CKO
935dfe80d6SVesa Jääskeläinenverify_enum CKK
945dfe80d6SVesa Jääskeläinen
955dfe80d6SVesa Jääskeläinenif [ -n "${ERRORS}" ] ; then
965dfe80d6SVesa Jääskeläinen  SCR=$(basename "$0")
975dfe80d6SVesa Jääskeläinen  for symbol in $ERRORS ; do
985dfe80d6SVesa Jääskeläinen    echo "${SCR}: error: missing symbol ${symbol} in ${basepath}/src/pkcs11_helpers.c" 1>&2
995dfe80d6SVesa Jääskeläinen  done
1005dfe80d6SVesa Jääskeläinen  exit 1
1015dfe80d6SVesa Jääskeläinenfi
1025dfe80d6SVesa Jääskeläinen
1035dfe80d6SVesa Jääskeläinenexit 0
104