@@ -6,10 +6,10 @@ _comp_cmd_ssh_keygen()
66 _comp_initialize -n := -- " $@ " || return
77
88 local IFS=$' \t\n ' # for ${words[*]}
9- local noargopts=' !(-*|*[ aCIJjMNPSVWzbEFRDwfGKsTmnOrtY ]*)'
9+ local noargopts=' !(-*|*[ aCIJjMNPSVWzbEFRDwfGKsTmnOrtYZ ]*)'
1010 # shellcheck disable=SC2254
1111 case $prev in
12- -${noargopts} [aCIJjMNPSVWz ])
12+ -${noargopts} [aCIJjNPSVWz ])
1313 return
1414 ;;
1515 -${noargopts} b)
@@ -46,6 +46,10 @@ _comp_cmd_ssh_keygen()
4646 _comp_compgen_filedir
4747 return
4848 ;;
49+ -${noargopts} M)
50+ _comp_compgen -- -W ' generate screen'
51+ return
52+ ;;
4953 -${noargopts} m)
5054 _comp_compgen -- -W ' PEM PKCS8 RFC4716'
5155 return
@@ -141,15 +145,23 @@ _comp_cmd_ssh_keygen()
141145 local pathcmd protocols
142146 pathcmd=$( type -P -- " $1 " ) && local PATH=${pathcmd%/* } :$PATH
143147 _comp_compgen -v protocols -x ssh query protocol-version
144- local types=' dsa ecdsa ecdsa-sk ed25519 ed25519-sk rsa'
148+ local -a types=(
149+ dsa ecdsa ecdsa-sk ed25519 ed25519-sk rsa
150+ rsa-sha2-256 rsa-sha2-512 ssh-rsa
151+ )
145152 if [[ ${protocols[*]} == * 1* ]]; then
146- types+=' rsa1'
153+ types+=( rsa1)
147154 fi
148- _comp_compgen -- -W " $ types"
155+ _comp_compgen -- -W ' "${ types[@]}" '
149156 return
150157 ;;
151158 -${noargopts} Y)
152- _comp_compgen -- -W ' find-principals check-novalidate sign verify'
159+ _comp_compgen -- -W \
160+ ' find-principals match-principals check-novalidate sign verify'
161+ return
162+ ;;
163+ -${noargopts} Z)
164+ _comp_compgen -x ssh query ciphers
153165 return
154166 ;;
155167 esac
0 commit comments