#! /bin/sh set -e VERSION="0.3.1" if [ -z "$*" ]; then echo "Send people their newly signed GPG key by mail." echo "Usage: $0 keyid ..." exit 1 fi if [ -e ~/.gpg-mailkeysrc ] ; then . ~/.gpg-mailkeysrc fi if [ -n "$EMAIL" ]; then FROM="$EMAIL" fi if [ -z "$SUBJECT" ]; then SUBJECT="Your signed GPG key" fi if [ -z "$NAME" ]; then NAME=`getent passwd $USER | cut -d: -f5 | cut -d, -f1` fi if [ -z "$TEXT" ]; then TEXT="Hi, Here is your signed GPG key. Enjoy, $NAME" fi FAILKEYS= while [ -n "$1" ]; do echo -n "[$1] " TEMPFILE=`mktemp -t gpg2mail.XXXXXX` ADDR=`gpg --with-colons --fixed-list-mode --list-key $1 | sed -e 's/^uid:[^re][^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:<]*<[^:>]*>\):.*/@@uid@@ \1/' -e '/^@@uid@@ /!d' -e 's/([^)]*)//g' -e 's/ */ /g' -e 's/^@@uid@@ //' | head -1` if [ -z "$ADDR" ]; then echo "(no usable user ids)" FAILKEYS="$FAILKEYS:$1" shift 1 continue fi BOUNDARY="ksp-$$-boundary-$RANDOM" echo -n "$ADDR:" if [ $FROM ]; then echo >$TEMPFILE "From: $NAME <$FROM>" fi cat << EOM >> $TEMPFILE To: $ADDR Subject: $SUBJECT User-Agent: gpg-mailkeys/$VERSION MIME-Version: 1.0 Content-Type: multipart/mixed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="$BOUNDARY" Content-Disposition: inline --$BOUNDARY Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable $TEXT EOM if [ -f ~/.signature ]; then echo "--=20" >> $TEMPFILE cat ~/.signature >> $TEMPFILE fi cat << EOM >> $TEMPFILE --$BOUNDARY Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="$1.sig" `gpg --armor --export $1` --$BOUNDARY-- EOM echo -n " sending" /usr/sbin/sendmail -t <$TEMPFILE rm $TEMPFILE echo " done." shift 1 done if [ -n "$FAILKEYS" ]; then echo echo "Note: The following keys could not be sent:" echo "$FAILKEYS" | tr ':' '\n' | sed -e '/^ *$/d' -e 's/^/ /' fi