#!/bin/sh

FROM=`gpg --list-secret-keys | grep ^sec | head -1 | sed -n 's/.*sec *[0-9A-F\/ -]* //p'`
#DEBUG=echo

keyserv=`grep ^keyserver $HOME/.gnupg/options | awk '{print $2}'`
if [ -z "$keyserv" ] ; then
  keyserv='wwwkeys.eu.pgp.net'
fi
keyservcmd="--keyserver $keyserv"

id=$1
if [ -z "$id" ] ; then
  echo "No id specified" > /dev/stderr
  exit 1
fi

$DEBUG gpg $keyservcmd --recv-key $id
if [ $? -ne 0 ] ; then
  echo "No key \`$id' found" > /dev/stderr
  exit 1
fi
echo

gpg --fingerprint $id
fullname=`gpg --fingerprint $id | head -1 | sed -n 's/^pub *[0-9A-F\/ -]* //p'`
name=`echo $fullname | sed -n 's/^\(.*\) <.*>/\1/p'`
email=`echo $fullname | sed -n 's/^.*<\(.*\)>/\1/p'`

echo -n "Sign key 0x$id for $name ? "
read yes

if [ "$yes" = 'y' -o "$yes" = 'yes' ] ; then
    $DEBUG gpg --sign-key $id
else
    exit 1
fi
echo

$DEBUG gpg $keyservcmd --send-key $id

tmp=`tempfile`
done='no'
while [ "$done" = 'no' ] ; do
    echo -n "Which language do you want to use to talk to $name (fr, en) ? "
    read lang

    case $lang in 
	fr)
	    subject='Ta clef GnuPG signée'
	    echo "Bonjour,

Suite à notre rencontre, j'ai signé ta clef ($id) par la mienne.
Tu pourra la trouver sur le serveur de clefs $keyserv.
Je peux également te la fournir en attachement si tu le désires.

À bientôt" > $tmp
	    done='done'
	    ;;
	en)
	    subject='Your GnuPG key signed'
	    echo "Hi,

I just signed your GnuPG key ($id) with my key.  You can 
find it signed on keys server $keyserv.
I can also send it to you by email if you wish.

Cheers" > $tmp
	    done='done'
	    ;;
	*)
	    ;;
    esac

done

if [ -f $HOME/.signature ] ; then
  echo >> $tmp
  echo '--' >> $tmp
  cat $HOME/.signature >> $tmp
fi

$DEBUG mail -s "$subject" -b "$FROM" -a "From: $FROM" "$name <$email>" < $tmp
echo "Mail send to $name <$email>"
$DEBUG rm -f $tmp

