aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-x.local/bin/backup-secret-key55
1 files changed, 55 insertions, 0 deletions
diff --git a/.local/bin/backup-secret-key b/.local/bin/backup-secret-key
new file mode 100755
index 0000000..62c107a
--- /dev/null
+++ b/.local/bin/backup-secret-key
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+ERR_1_MSG="Please specify valid uid or keyid."
+QRENCODE_FLAGS="-8 -l H"
+
+[ -z $1 ] && ( echo $ERR_1_MSG && exit 1 )
+
+gpg -K $1 > /dev/null || ( echo $ERR_1_MSG && exit 1 )
+
+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 \
+ 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
+