#!/bin/sh

# $Id: ppf_verify,v 1.8 2010/07/28 00:04:47 dougb Exp $

# Please see detailed Copyright below

PATH=/bin:/usr/bin:/usr/pkg/bin ; export PATH
umask 077

clear 1>&2
echo ''
echo '----------------------------------------------------------------------------'
echo '                          Verifying signed message'
echo ''
echo '         A long delay here is likely due to automatic key retrieval'
echo '----------------------------------------------------------------------------'

: ${TMPDIR:=/tmp}
TDIR=`mktemp -d ${TMPDIR}/ppf_verify.XXXXXXXX` ||
	{ echo '' > ${1}
	  echo "$0: mktemp failed, exiting" >> ${1}
	  echo '' >> ${1}
	  echo 'Press h to see the signed version of the message' >> ${1}
	  echo '' >> ${1}
	  exit 0;}

trap "rm -f ${TDIR}/* ; rmdir ${TDIR} ; exit" 0 1 2 15

pgp_failed () {
	local message_file

	message_file="${1}"

	echo '----------------------------------------------------------------------------' >${TDIR}/error
	echo "$0: ${2:-pgp command failed}" >>${TDIR}/error
	echo '' >>${TDIR}/error
	cat ${TDIR}/stderr >>${TDIR}/error
	echo '----------------------------------------------------------------------------' >>${TDIR}/error
	echo '' >>${TDIR}/error
	cp ${message_file} ${TDIR}/message
	cat ${TDIR}/error ${TDIR}/message > ${message_file}
	exit 0
}

/usr/pkg/bin/gpg2 --batch --no-tty --decrypt ${1} >${TDIR}/message 2>${TDIR}/stderr || pgp_failed ${1}

# Output will be 19 characters total so adjust status message length accordingly
date=`date +"%Y-%m-%d %H:%M:%S"`

echo '---------------------------- PGP Command Output ----------------------------' >${1}
egrep -v '^$|pattern is:' ${TDIR}/stderr >>${1}
echo "----------- Begin PGP Signed Message Verified $date ----------" >>${1}
echo '' >>${1}
cat ${TDIR}/message >>${1}
echo '' >>${1}
echo "------------ End PGP Signed Message Verified $date -----------" >>${1}

clear 1>&2

exit 0

#  Copyright (c) 2003-2010 Douglas Barton
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
#  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
#  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
#  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
#  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
#  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
#  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
#  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
#  SUCH DAMAGE.
