X-Git-Url: https://zdv2.bktei.com/gitweb/BK-2020-03.git/blobdiff_plain/849106f7246e47bc077d7f3b8228cec717a8e63d..26f0533782d8c57fb95b8df4f55057edcbf17703:/unitproc/bkt-check_resembles_gpg_fingerprint diff --git a/unitproc/bkt-check_resembles_gpg_fingerprint b/unitproc/bkt-check_resembles_gpg_fingerprint new file mode 100644 index 0000000..ff5a39f --- /dev/null +++ b/unitproc/bkt-check_resembles_gpg_fingerprint @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +yell() { echo "$0: $*" >&2; } # print script path and all args to stderr +die() { yell "$*"; exit 111; } # same as yell() but non-zero exit status +try() { "$@" || die "cannot $*"; } # runs args as command, reports args if command fails +check_resembles_gpg_fingerprint() { + # Desc: Checks if input string looks like gpg fingerprint + # Usage: check_resembles_gpg_fingerprint arg1 + # Input: arg1: string + # Output: exit code: 0 if arg1 is fingerprint, 1 otherwise + # Depends: yell(), die(), try() + # Version: 0.0.1 + local pattern1 pattern2 input input_length + + # Check args + if [[ $# -ne 1 ]]; then + die "ERROR:Invalid number of arguments:$#"; + else + input="$1"; + fi; + + ## Trim leading `0x` + pattern1="(0x)(.*)"; + if [[ $input =~ $pattern1 ]]; then + input="${input:2}"; + #yell "DEBUG:input:$input"; + fi; + + ## Check if char count multiple of 8 + input_length="${#input}"; + if [[ ! $(( input_length % 8 )) -eq 0 ]]; then + yell "DEBUG:Length not a multiple of 8:$input_length:$input"; + return 1; + fi; + + ## Check if hexadecimal + pattern2="[0-9A-Fa-f]{8,40}"; + if [[ $1 =~ $pattern2 ]]; then + #yell "DEBUG:is a fingerprint:$arg"; + return 0; + else + #yell "DEBUG:Not a fingerprint:$arg"; + return 1; + fi; +}; # Checks if input string looks like gpg fingerprint + + +# test code +myVar="0xdc3469c9"; +if check_resembles_gpg_fingerprint "$myVar"; then + yell "Looks like a gpg fingerprint:$myVar"; +else + yell "Doesn't look like a gpg fingerprint:$myVar"; +fi; + +myVar="69B4C4CDC628F8F9"; +if check_resembles_gpg_fingerprint "$myVar"; then + yell "Looks like a gpg fingerprint:$myVar"; +else + yell "Doesn't look like a gpg fingerprint:$myVar"; +fi; + +myVar="26646D99CBAEC9B81982EF6029D9EE6B1FC730C1"; +if check_resembles_gpg_fingerprint "$myVar"; then + yell "Looks like a gpg fingerprint:$myVar"; +else + yell "Doesn't look like a gpg fingerprint:$myVar"; +fi; + +myVar="deadbeef"; +if check_resembles_gpg_fingerprint "$myVar"; then + yell "Looks like a gpg fingerprint:$myVar"; +else + yell "Doesn't look like a gpg fingerprint:$myVar"; +fi; + +myVar="foobar"; +if check_resembles_gpg_fingerprint "$myVar"; then + yell "Looks like a gpg fingerprint:$myVar"; +else + yell "Doesn't look like a gpg fingerprint:$myVar"; +fi; + +myVar="zzzzzzzz"; +if check_resembles_gpg_fingerprint "$myVar"; then + yell "Looks like a gpg fingerprint:$myVar"; +else + yell "Doesn't look like a gpg fingerprint:$myVar"; +fi;