2 # Desc: Validates Input
4 yell
() { echo "$0: $*" >&2; } #o Yell, Die, Try Three-Fingered Claw technique
5 die
() { yell
"$*"; exit 111; } #o Ref/Attrib: https://stackoverflow.com/a/25515370
6 try
() { "$@" || die
"cannot $*"; } #o
8 # Desc: Validates Input
9 # Usage: validateInput [str input] [str input type]
11 # Input: arg1: string to validate
12 # arg2: string specifying input type (ex:"ssh_pubkey")
13 # Output: return code 0: if input string matched specified string type
14 # Depends: bash 5, yell
17 local FN
="${FUNCNAME[0]}";
22 if [[ $# -gt 2 ]]; then yell
"ERROR:$0:$FN:Too many arguments."; exit 1; fi;
25 if [[ -z "$argInput" ]]; then return 1; fi
29 ### Check for alnum/dash base64 (ex: "ssh-rsa AAAAB3NzaC1yc2EAAA")
30 if [[ "$argType" = "ssh_pubkey" ]]; then
31 if [[ "$argInput" =~ ^
[[:alnum
:]-]*[\
]*[[:alnum
:]+/=]*$
]]; then
35 ### Check for age1[:bech32:]
36 if [[ "$argType" = "age_pubkey" ]]; then
37 if [[ "$argInput" =~ ^age1
[qpzry9x8gf2tvdw0s3jn54khce6mua7l
]*$
]]; then
40 # Return error if no condition matched.
44 #==BEGIN sample code==
45 testKey1
="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq8G0XWi8A+MXNu7MEaxDsZJUwtgPC4shGAAarXC4PQTRxLfUHtyWkNbzGh31U/bKI3Snp1O78yOVEZSjdmWkDvkwtWKJQcoZBStgqw9oIPE0oG8uh49XoX77nVabi0JCf8zO63Ai4/9EdwyqE9xsJ+soOYt2V5+UCj0zsv1xpt2YhfYyXrzBv9x6k9lCxy0NW3Ik1mSW+OzSOT3tgDf36ujV/CI2i8ERM9civWy8FtFOReZMV2kkbj7fXI4E1wKM1RFIn7er1MseCSvbvh3o2uCO46/euqHAstYs5cL+4yB2qM/xKfHT5aocDjq7GBLKtree9xdNF0EE9CNr/+J5R";
46 testKey2
="blah-blah onetwothreeREEE";
48 testKey4
="age1c3s6huz6en6jh40cem0erc0m2un2ry85my0t0ujj4a5cu8gzkysq9l39e4";
49 keyTypeA
="ssh_pubkey";
50 keyTypeB
="age_pubkey";
51 if validateInput
"$testKey1" "$keyTypeA"; then echo "$testKey1 looks like a valid $keyTypeA."; else echo "$testKey1 doesn't look like a valid $keyTypeA."; fi
52 if validateInput
"$testKey2" "$keyTypeA"; then echo "$testKey2 looks like a valid $keyTypeA."; else echo "$testKey2 doesn't look like a valid $keyTypeA."; fi
53 if validateInput
"$testKey3" "$keyTypeA"; then echo "$testKey3 looks like a valid $keyTypeA."; else echo "$testKey3 doesn't look like a valid $keyTypeA."; fi
54 if validateInput
"$testKey4" "$keyTypeB"; then echo "$testKey4 looks like a valid $keyTypeB."; else echo "$testKey4 doesn't look like a valid $keyTypeB."; fi
57 # Author: Steven Baltakatei Sandoval (bktei.com)