[Bash-completion-commits] ./current r1268: new standalone completion for openssl
Guillaume Rousse
guillomovitch at zarb.org
Mon Jan 19 20:35:37 UTC 2009
------------------------------------------------------------
revno: 1268
committer: Guillaume Rousse <guillomovitch at zarb.org>
branch nick: current
timestamp: Mon 2009-01-19 21:35:37 +0100
message:
new standalone completion for openssl
added:
to_review/openssl
-------------- next part --------------
=== added file 'to_review/openssl'
--- a/to_review/openssl 1970-01-01 00:00:00 +0000
+++ b/to_review/openssl 2009-01-19 20:35:37 +0000
@@ -0,0 +1,291 @@
+# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
+# ex: ts=8 sw=8 noet filetype=sh
+#
+# bash completion for openssl
+
+have openssl && {
+_openssl_sections()
+{
+ local config
+
+ # start with default configuration
+ config=/etc/pki/tls/openssl.cnf
+
+ # check if a specific configuration file is used
+ 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 prev commands command options formats
+
+ COMPREPLY=()
+ cur=`_get_cword`
+
+ commands='asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa \
+ dsaparam ec ecparam enc engine errstr gendh gendsa genrsa \
+ nseq ocsp passwd pkcs12 pkcs7 pkcs8 prime rand req rsa \
+ rsautl s_client s_server s_time sess_id smime speed spkac \
+ verify version x509 md2 md4 md5 rmd160 sha sha1 aes-128-cbc \
+ aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb \
+ base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc \
+ camellia-128-ecb camellia-192-cbc camellia-192-ecb \
+ camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc \
+ cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb \
+ des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 \
+ des-ede3-cbc 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'
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ else
+ command=${COMP_WORDS[1]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+ case $prev in
+ -@(CA|CAfile|CAkey|CAserial|cert|certfile|config|content|dcert|dkey|dhparam|extfile|in|inkey|kfile|key|keyout|out|oid|prvrify|rand|recip|revoke|sess_in|sess_out|spkac|sign|signkey|signer|signature|ss_cert|untrusted|verify))
+ _filedir
+ return 0
+ ;;
+ -@(outdir|CApath))
+ _filedir -d
+ return 0
+ ;;
+ -@(name|crlexts|extensions))
+ _openssl_sections
+ return 0
+ ;;
+ -@(in|out|key|cert|CA|CAkey|dkey|dcert)form)
+ formats='DER PEM'
+ case $command in
+ x509)
+ formats="$formats NET"
+ ;;
+ smime)
+ formats="$formats SMIME"
+ ;;
+ esac
+ COMPREPLY=( $( compgen -W "$formats" -- $cur ) )
+ return 0
+ ;;
+ -connect)
+ _known_hosts
+ return 0
+ ;;
+ -starttls)
+ COMPREPLY=( $( compgen -W 'smtp pop3 imap ftp' \
+ -- $cur ) )
+ return 0
+ ;;
+ -cipher)
+ COMPREPLY=( $( compgen -W "$(openssl ciphers | \
+ tr ':' '\n')" -- $cur ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ # possible options for the command
+ case $command in
+ asn1parse)
+ options='-inform -in -out -noout \
+ -offset -length -i -oid \
+ -strparse'
+ ;;
+ ca)
+ options='-verbose -config -name \
+ -gencrl -revoke -crl_reason \
+ -crl_hold -crl_compromise \
+ -crl_CA_compromise -crldays \
+ -crlhours -crlexts -startdate \
+ -enddate -days -md -policy \
+ -keyfile -key -passin -cert \
+ -selfsig -in -out -notext \
+ -outdir -infiles -spkac \
+ -ss_cert -preserveDN \
+ -noemailDN -batch -msie_hack \
+ -extensions -extfile -engine \
+ -subj -utf8 -multivalue-rdn'
+ ;;
+ ciphers)
+ options='-v -ssl2 -ssl3 -tls1'
+ ;;
+ crl)
+ options='-inform -outform -text -in \
+ -out -noout -hash -issuer \
+ -lastupdate -nextupdate \
+ -CAfile -CApath'
+ ;;
+ crl2pkcs7)
+ options='-inform -outform -in -out \
+ -print_certs'
+ ;;
+ dgst)
+ options='-md5 -md4 -md2 -sha1 -sha \
+ -mdc2 -ripemd160 -dss1 -c -d \
+ -hex -binary -out -sign \
+ -verify -prverify -signature'
+ ;;
+ dsa)
+ options='-inform -outform -in -passin \
+ -out -passout -des -des3 -idea \
+ -text -noout -modulus -pubin \
+ -pubout'
+ ;;
+ dsaparam)
+ options='-inform -outform -in -out \
+ -noout -text -C -rand -genkey'
+ ;;
+ enc)
+ options='-ciphername -in -out -pass \
+ -e -d -a -A -k -kfile -S -K \
+ -iv -p -P -bufsize -debug'
+ ;;
+ dhparam)
+ options='-inform -outform -in -out \
+ -dsaparam -noout -text -C -2 \
+ -5 -rand'
+ ;;
+ gendsa)
+ options='-out -des -des3 -idea -rand'
+ ;;
+ genrsa)
+ options='-out -passout -des -des3 \
+ -idea -f4 -3 -rand'
+ ;;
+ pkcs7)
+ options='-inform -outform -in -out \
+ -print_certs -text -noout'
+ ;;
+ rand)
+ options='-out -rand -base64'
+ ;;
+ req)
+ options='-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'
+ ;;
+ rsa)
+ options='-inform -outform -in -passin \
+ -out -passout -sgckey -des \
+ -des3 -idea -text -noout \
+ -modulus -check -pubin -pubout \
+ -engine'
+ ;;
+ rsautl)
+ options='-in -out -inkey -pubin \
+ -certin -sign -verify -encrypt \
+ -decrypt -pkcs -ssl -raw \
+ -hexdump -asn1parse'
+ ;;
+ s_client)
+ options='-connect -verify -cert \
+ -certform -key -keyform -pass \
+ -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 -tlsextdebug \
+ -no_ticket -sess_out -sess_in \
+ -rand'
+ ;;
+ s_server)
+ options='-accept -context -verify \
+ -Verify -crl_check \
+ -crl_check_all -cert -certform \
+ -key -keyform -pass -dcert \
+ -dcertform -dkey -dkeyform \
+ -dpass -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 -tlsextdebug \
+ -no_ticket -id_prefix -rand'
+ ;;
+ s_time)
+ options='-connect -www -cert -key \
+ -CApath -CAfile -reuse -new \
+ -verify -nbio -time -ssl2 \
+ -ssl3 -bugs -cipher'
+ ;;
+ sess_id)
+ options='-inform -outform -in -out \
+ -text -noout -context ID'
+ ;;
+ smime)
+ options='-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'
+ ;;
+ speed)
+ options='-engine'
+ ;;
+ verify)
+ options='-CApath -CAfile -purpose \
+ -untrusted -help \
+ -issuer_checks -verbose \
+ -certificates'
+ ;;
+ x509)
+ options='-inform -outform -keyform \
+ -CAform -CAkeyform -in -out \
+ -serial -hash -subject-hash \
+ -issuer_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'
+ ;;
+ @(md5|md4|md2|sha1|sha|mdc2|ripemd160))
+ options='-c -d'
+ ;;
+ esac
+ COMPREPLY=( $( compgen -W "$options" -- $cur ) )
+ else
+ if [[ "$command" == speed ]]; then
+ 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 ) )
+ else
+ _filedir
+ fi
+ fi
+ fi
+}
+complete -F _openssl $default openssl
+}
More information about the Bash-completion-commits
mailing list