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 while [ "$1" != "" ]; do case "$1" in 0x*) gpg --recv-keys "$1" || return $? ;; http:*|ftp:*) curl "$1" | gpg --import || return $? ;; *) gpg --verify "$1" return $? esac shift done } error_out(){ # $0 message ... echo "$@" 1>&2 exit 1 } wget -N ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.9.tar.bz2 wget -N ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.9.tar.bz2.sig #verify_digest md5 gnupg-1.4.9.tar.bz2 cc52393087480ac8d245625004a6a30c || error_out "$0: stopped at line $LINENO" verify_digest sha1 gnupg-1.4.9.tar.bz2 826f4bef1effce61c3799c8f7d3cc8313b340b55 || error_out "$0: stopped at line $LINENO" tar xvjf gnupg-1.4.9.tar.bz2