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