#! /bin/sh # # gpg-key2ps: convert a PGP/GnuPG key into paper slips. # # $Id$ set -e VERSION='$Rev$' USAGE="Usage: $0 [-p papersize] [-r revoked-style] keyid-or-name" if [ -z "$*" ]; then echo $USAGE exit 1 fi KEYIDS= REVOKESTYLE=hide while [ -n "$1" ]; do case "$1" in -p) PAPERSIZE=$2 export PAPERSIZE shift 2 ;; -p*) PAPERSIZE=`echo $1 | sed -e 's/^-p//'` export PAPERSIZE shift 1 ;; -r) REVOKESTYLE=$2 shift 2 ;; -r*) REVOKESTYLE=`echo $1 | sed -e 's/^-r//'` shift 1 ;; -*) echo $USAGE exit 1 ;; *) KEYIDS=$1 shift 1 ;; esac done case "$REVOKESTYLE" in grey|hide|note|show|strike) ;; *) echo >&2 "Unknown style \"$REVOKESTYLE\". Please use one of" echo >&2 " grey - Print text in grey" echo >&2 " hide - Don't show revoked uids" echo >&2 " note - Add \"(revoked)\"" echo >&2 " show - List revoked uids normally" echo >&2 " strike - Strike through lines" exit 1 ;; esac TMPFILE=`mktemp -t gpg-key2ps.XXXXXX` if ! gpg --fingerprint --with-colons $KEYIDS 2>/dev/null >$TMPFILE; then echo >&2 "Key not found. Try 'gpg --list-keys'" rm $TMPFILE exit 1 fi NUMLINES=$((`wc -l <$TMPFILE` + `grep '^pub:' $TMPFILE | wc -l` - 1)) if test -x /usr/bin/paperconf; then w=`paperconf -w` h=`paperconf -h` else # Default to A4. w=596 h=842 fi cat <> exch get show } def /pub { condhline 50 y moveto (pub) show 70 y moveto show showAlgorithm (/) show show 150 y moveto show 200 y moveto show newline needhline } def /fpr { 70 y moveto (Key fingerprint = ) show show newline } def /uid { 50 y moveto (uid) show 200 y moveto show newline } def EOF case "$REVOKESTYLE" in grey) echo "/revuid {" echo " .5 setgray" echo " uid" echo " 0 setgray" echo "} def" ;; hide) echo "/revuid {} def" ;; note) echo "/revuid {" echo " 50 y moveto (uid) show" echo " 200 y moveto show ([revoked]) show" echo " newline" echo "} def" ;; show) echo "/revuid { uid } def" ;; strike) echo "/revuid {" echo " uid" echo " 45 y 9 add moveto h 2 div 45 sub y 18 add lineto stroke" echo "} def" ;; esac cat <