aboutsummaryrefslogtreecommitdiffstats
path: root/.local/bin/backup-secret-key
blob: 56bf9308e28b88658963a517c26dfb7fa95be8c0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/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