verify_digest(){ # $0 method file string case "$1" in *) DIGEST=`echo "$1" | tr a-z A-Z` [ "$DIGEST($2)= $3" = "`openssl $1 $2`" ] ;; esac } verify_signature(){ # $0 url|id sig case "$1" in 0x*) gpg --recv-keys "$1" && gpg --verify "$2" ;; *) curl "$1" | gpg --import && gpg --verify "$2" ;; esac } error_out(){ # $0 message ... echo "$@" 1>&2 exit 1 } wget -N ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.7.tar.bz2 wget -N ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.7.tar.bz2.sig verify_digest sha1 gnupg-1.4.7.tar.bz2 "22149105845c79068771837c8deb7d5ba0854927" || error_out "$0: stopped at line $LINENO" tar xvjf gnupg-1.4.7.tar.bz2