#!/bin/sh ERR_1_MSG="Please specify valid uid or keyid." QRENCODE_FLAGS="-8 -l H" echo $@ [ -z $1 ] && echo $ERR_1_MSG && exit 1 gpg -K $1 > /dev/null || ( echo $ERR_1_MSG && exit 1 ) usage () { echo "$0 GPG_KEYID|GPG_UID [OUTPUT_TYPE]" exit 2 } export_secret() { gpg --export-secret-keys $1 \ | paperkey --output-type raw } export_public() { gpg --export $1 } qr_png_prettify () { OUTPUT_TITLE="$1 paperkey backup $(date +"%F %T")" montage -pointsize 18 \ -title "$OUTPUT_TITLE" \ -label pubkey "$2" \ -label seckey "$3" \ -mode concatenate \ "$1-backup.png" } qr_png () { QRENCODE_FLAGS="${QRENCODE_FLAGS} -t png -s 10" QRENCODE_PUBKEY_FLAGS="${QRENCODE_FLAGS} -o $1-pubkey.png" QRENCODE_SECKEY_FLAGS="${QRENCODE_FLAGS} -o $1-seckey.png" export_secret $1 | qrencode $QRENCODE_SECKEY_FLAGS export_public $1 | qrencode $QRENCODE_PUBKEY_FLAGS qr_png_prettify $1 "$1-pubkey.png" "$1-seckey.png" rm "$1-pubkey.png" "$1-seckey.png" } qr_utf8 () { QRENCODE_FLAGS="${QRENCODE_FLAGS} -t UTF8 -o -" echo "$1 secret paperkey" export_secret $1 | qrencode $QRENCODE_FLAGS echo "$1 public key" export_public $1 | qrencode $QRENCODE_FLAGS } case $2 in "png" ) qr_png $1 ;; * ) qr_utf8 $1 ;; esac