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 
  41     if [[ "$argType" = "integer" ]]; then 
  42         if [[ "$argInput" =~ ^
[[:digit
:]]*$ 
]]; then 
  45     ## time element (year, month, week, day, hour, minute, second) 
  46     if [[ "$argType" = "time_element" ]]; then 
  47         if [[ "$argInput" = "year" ]] || \
 
  48                [[ "$argInput" = "month" ]] || \
 
  49                [[ "$argInput" = "week" ]] || \
 
  50                [[ "$argInput" = "day" ]] || \
 
  51                [[ "$argInput" = "hour" ]] || \
 
  52                [[ "$argInput" = "minute" ]] || \
 
  53                [[ "$argInput" = "second" ]]; then 
  56     # Return error if no condition matched. 
  60 #==BEGIN sample code== 
  61 testKey
="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCq8G0XWi8A+MXNu7MEaxDsZJUwtgPC4shGAAarXC4PQTRxLfUHtyWkNbzGh31U/bKI3Snp1O78yOVEZSjdmWkDvkwtWKJQcoZBStgqw9oIPE0oG8uh49XoX77nVabi0JCf8zO63Ai4/9EdwyqE9xsJ+soOYt2V5+UCj0zsv1xpt2YhfYyXrzBv9x6k9lCxy0NW3Ik1mSW+OzSOT3tgDf36ujV/CI2i8ERM9civWy8FtFOReZMV2kkbj7fXI4E1wKM1RFIn7er1MseCSvbvh3o2uCO46/euqHAstYs5cL+4yB2qM/xKfHT5aocDjq7GBLKtree9xdNF0EE9CNr/+J5R"; 
  63 if validateInput 
"$testKey" "$keyType"; then echo "Looks like a valid $keyType:\"$testKey\""; else echo "doesn't look like a valid $keyType:\"$testKey\""; fi 
  66 testKey
="blah-blah onetwothreeREEE"; 
  68 if validateInput 
"$testKey" "$keyType"; then echo "Looks like a valid $keyType:\"$testKey\""; else echo "doesn't look like a valid $keyType:\"$testKey\""; fi 
  73 if validateInput 
"$testKey" "$keyType"; then echo "Looks like a valid $keyType:\"$testKey\""; else echo "doesn't look like a valid $keyType:\"$testKey\""; fi 
  76 testKey
="age1c3s6huz6en6jh40cem0erc0m2un2ry85my0t0ujj4a5cu8gzkysq9l39e4"; 
  78 if validateInput 
"$testKey" "$keyType"; then echo "Looks like a valid $keyType:\"$testKey\""; else echo "doesn't look like a valid $keyType:\"$testKey\""; fi 
  83 if validateInput 
"$testKey" "$keyType"; then echo "Looks like a valid $keyType:\"$testKey\""; else echo "doesn't look like a valid $keyType:\"$testKey\""; fi 
  88 if validateInput 
"$testKey" "$keyType"; then echo "Looks like a valid $keyType:\"$testKey\""; else echo "doesn't look like a valid $keyType:\"$testKey\""; fi 
  92 keyType
="time_element"; 
  93 if validateInput 
"$testKey" "$keyType"; then echo "Looks like a valid $keyType:\"$testKey\""; else echo "doesn't look like a valid $keyType:\"$testKey\""; fi 
  98 # Author: Steven Baltakatei Sandoval (bktei.com)