- Complete rewrite of openssl(1) completion by Guillaume Rousse
<rousse@ccr.jussieu.fr>.
This commit is contained in:
parent
aa82bc1e9f
commit
7a49c1c156
476
bash_completion
476
bash_completion
@ -1,6 +1,6 @@
|
||||
# bash_completion - some programmable completion functions for bash 2.05b
|
||||
#
|
||||
# $Id: bash_completion,v 1.770 2005/01/03 05:31:38 ianmacd Exp $
|
||||
# $Id: bash_completion,v 1.771 2005/01/03 05:38:41 ianmacd Exp $
|
||||
#
|
||||
# Copyright (C) Ian Macdonald <ian@caliban.org>
|
||||
#
|
||||
@ -3173,10 +3173,26 @@ _bzip2()
|
||||
|
||||
# openssl(1) completion
|
||||
#
|
||||
have openssl &&
|
||||
have openssl && {
|
||||
_openssl_sections()
|
||||
{
|
||||
local config
|
||||
|
||||
config=/etc/ssl/openssl.cnf
|
||||
for (( i=2; i < COMP_CWORD; i++ )); do
|
||||
if [[ "${COMP_WORDS[i]}" == -config ]]; then
|
||||
config=${COMP_WORDS[i+1]}
|
||||
break
|
||||
fi
|
||||
done
|
||||
[ ! -f $config ] && return 0
|
||||
|
||||
COMPREPLY=( $( awk '/\[.*\]/ {print $2} ' $config | grep "^$cur" ) )
|
||||
}
|
||||
|
||||
_openssl()
|
||||
{
|
||||
local cur
|
||||
local cur prev
|
||||
|
||||
COMPREPLY=()
|
||||
cur=${COMP_WORDS[COMP_CWORD]}
|
||||
@ -3194,11 +3210,463 @@ _openssl()
|
||||
des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 \
|
||||
rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb \
|
||||
rc4 rc4-40' -- $cur ) )
|
||||
else
|
||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||
case ${COMP_WORDS[1]} in
|
||||
asn1parse)
|
||||
case $prev in
|
||||
-inform)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out|oid))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -in -out -noout -offset \
|
||||
-length -i -oid -strparse' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
ca)
|
||||
case $prev in
|
||||
-@(config|revoke|cert|in|out|spkac|ss_cert))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-outdir)
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
-@(name|crlexts|extensions))
|
||||
_openssl_sections
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-verbose -config -name \
|
||||
-gencrl -revoke -crldays -crlhours -crlexts \
|
||||
-startdate -enddate -days -md -policy -keyfile \
|
||||
-key -passin -cert -in -out -notext -outdir \
|
||||
-infiles -spkac -ss_cert -preserveDN -batch \
|
||||
-msie_hack -extensions' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
ciphers)
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-v -ssl2 -ssl3 -tls1' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
crl)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out|CAfile))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-CAPath)
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -text -in -out -noout \
|
||||
-hash -issuer -lastupdate -nextupdate -CAfile -CApath' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
crl2pkcs7)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in -out -print_certs' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
dgst)
|
||||
case $prev in
|
||||
-@(out|sign|verify|prvrify|signature))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-md5 -md4 -md2 -sha1 -sha -mdc2 -ripemd160 -dss1 \
|
||||
-c -d -hex -binary -out -sign -verify -prverify -signature' -- $cur ) )
|
||||
else
|
||||
_filedir
|
||||
fi
|
||||
;;
|
||||
dsa)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in -passin -out -passout -des -des3 -idea -text -noout \
|
||||
-modulus -pubin -pubout' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
dsaparam)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in -out -noout \
|
||||
-text -C -rand -genkey' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
enc)
|
||||
case $prev in
|
||||
-@(in|out|kfile))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-ciphername -in -out -pass \
|
||||
-e -d -a -A -k -kfile -S -K -iv -p -P -bufsize -debug' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
dhparam)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in -out -dsaparam -noout \
|
||||
-text -C -2 -5 -rand' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
gendsa)
|
||||
case $prev in
|
||||
-@(out|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-out -des -des3 -idea -rand' -- $cur ) )
|
||||
else
|
||||
_filedir
|
||||
fi
|
||||
;;
|
||||
genrsa)
|
||||
case $prev in
|
||||
-@(out|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-out -passout -des -des3 -idea -f4 -3 -rand' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
pkcs7)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in -out -print_certs -text -noout' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
rand)
|
||||
case $prev in
|
||||
-@(out|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-out -rand -base64' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
req)
|
||||
case "$prev" in
|
||||
-@(in|out|key)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
|
||||
-@(in|out|rand|key|keyout|config))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-extensions)
|
||||
_openssl_sections
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in \
|
||||
-passin -out -passout -text -noout -verify \
|
||||
-modulus -new -rand -newkey -newkey -nodes \
|
||||
-key -keyform -keyout -md5 -sha1 -md2 -mdc2 \
|
||||
-config -x509 -days -asn1-kludge -newhdr \
|
||||
-extensions -reqexts section' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
rsa)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER NET PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in -passin -out -passout \
|
||||
-sgckey -des -des3 -idea -text -noout -modulus -check -pubin \
|
||||
-pubout -engine' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
rsautl)
|
||||
case $prev in
|
||||
-@(in|out|inkey))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-in -out -inkey -pubin -certin -sign -verify \
|
||||
-encrypt -decrypt -pkcs -ssl -raw -hexdump -asn1parse' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
s_client)
|
||||
case $prev in
|
||||
-connect)
|
||||
_known_hosts
|
||||
return 0
|
||||
;;
|
||||
-@(cert|key|CAfile|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-CApath)
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-connect -verify -cert -key -CApath -CAfile \
|
||||
-reconnect -pause -showcerts -debug -msg -nbio_test -state -nbio \
|
||||
-crlf -ign_eof -quiet -ssl2 -ssl3 -tls1 -no_ssl2 -no_ssl3 -no_tls1 \
|
||||
-bugs -cipher -starttls -engine -rand' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
s_server)
|
||||
case $prev in
|
||||
-@(cert|key|dcert|dkey|dhparam|CAfile|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-CApath)
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-accept -context -verify -Verify -cert -key \
|
||||
-dcert -dkey -dhparam -nbio -nbio_test -crlf -debug -msg -state -CApath \
|
||||
-CAfile -nocert -cipher -quiet -no_tmp_rsa -ssl2 -ssl3 -tls1 -no_ssl2 \
|
||||
-no_ssl3 -no_tls1 -no_dhe -bugs -hack -www -WWW -HTTP -engine -id_prefix \
|
||||
-rand' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
s_time)
|
||||
case $prev in
|
||||
-connect)
|
||||
_known_hosts
|
||||
return 0
|
||||
;;
|
||||
-@(cert|key|CAfile))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-CApath)
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-connect -www -cert -key -CApath -CAfile -reuse \
|
||||
-new -verify -nbio -time -ssl2 -ssl3 -bugs -cipher' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
|
||||
sess_id)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform -in -out -text -noout \
|
||||
-context ID' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
smime)
|
||||
case $prev in
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'SMIME DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(in|out|certfile|signer|recip|inkey|content|rand))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-encrypt -decrypt -sign -verify -pk7out -des -des3 \
|
||||
-rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -in -certfile -signer \
|
||||
-recip -inform -passin -inkey -out -outform -content -to -from -subject \
|
||||
-text -rand' -- $cur ) )
|
||||
else
|
||||
_filedir
|
||||
fi
|
||||
;;
|
||||
speed)
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-engine' -- $cur ) )
|
||||
else
|
||||
COMPREPLY=( $( compgen -W 'md2 mdc2 md5 hmac sha1 rmd160 idea-cbc \
|
||||
rc2-cbc rc5-cbc bf-cbc des-cbc des-ede3 rc4 rsa512 rsa1024 rsa2048 \
|
||||
rsa4096 dsa512 dsa1024 dsa2048 idea rc2 des rsa blowfish' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
verify)
|
||||
case $prev in
|
||||
-@(CAfile|untrusted))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-CApath)
|
||||
_filedir -d
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-CApath -CAfile -purpose -untrusted -help -issuer_checks \
|
||||
-verbose -certificates' -- $cur ) )
|
||||
else
|
||||
_filedir
|
||||
fi
|
||||
;;
|
||||
x509)
|
||||
case "$prev" in
|
||||
-@(in|out|CA|CAkey|CAserial|extfile))
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
-@(in|out)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM NET' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-@(key|CA|CAkey)form)
|
||||
COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
|
||||
return 0
|
||||
;;
|
||||
-extensions)
|
||||
_openssl_sections
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-inform -outform \
|
||||
-keyform -CAform -CAkeyform -in -out \
|
||||
-serial -hash -subject -issuer -nameopt \
|
||||
-email -startdate -enddate -purpose \
|
||||
-dates -modulus -fingerprint -alias \
|
||||
-noout -trustout -clrtrust -clrreject \
|
||||
-addtrust -addreject -setalias -days \
|
||||
-set_serial -signkey -x509toreq -req \
|
||||
-CA -CAkey -CAcreateserial -CAserial \
|
||||
-text -C -md2 -md5 -sha1 -mdc2 -clrext \
|
||||
-extfile -extensions -engine' -- $cur ) )
|
||||
fi
|
||||
;;
|
||||
@(md5|md4|md2|sha1|sha|mdc2|ripemd160))
|
||||
if [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '-c -d' -- $cur ) )
|
||||
else
|
||||
_filedir
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
[ -n "${have:-}" ] && complete -F _openssl $default openssl
|
||||
complete -F _openssl $default openssl
|
||||
}
|
||||
|
||||
# screen(1) completion
|
||||
#
|
||||
|
Loading…
x
Reference in New Issue
Block a user