From eaf42b68c25e9bfdb2e5f62f9e9bd460405071d9 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Mon, 11 Mar 2019 18:00:03 +0000 Subject: Better support GPG migrations After yet another unpleasant experience starting up GPG on a new system, I decided to encode my learnings and mistakes as aliases, functions, scripts, hoping to protect my future me from myself. Fingers crossed! --- configs/shared/gpg/.gnupg/export.sh | 21 +++++++++++++++++++++ configs/shared/gpg/.gnupg/import.sh | 13 +++++++++++++ configs/shared/zsh/aliases.zsh | 6 ++++++ configs/shared/zsh/variables.zsh | 1 + 4 files changed, 41 insertions(+) create mode 100755 configs/shared/gpg/.gnupg/export.sh create mode 100644 configs/shared/gpg/.gnupg/import.sh (limited to 'configs/shared') diff --git a/configs/shared/gpg/.gnupg/export.sh b/configs/shared/gpg/.gnupg/export.sh new file mode 100755 index 000000000000..571689773b0e --- /dev/null +++ b/configs/shared/gpg/.gnupg/export.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +set -e + +# Run this script to export all the information required to transport your GPG +# information. +# Usage: ./export.sh [directory] +# TODO: run this periodically as a job. + +destination="${1:-$(mktemp -d)}" + +if [ ! -d "$destination" ]; then + echo "$destination does not exist. Creating it..." + mkdir -p "$destination" +fi + +gpg --armor --export >"$destination/public.asc" +gpg --armor --export-secret-keys >"$destination/secret.asc" +gpg --armor --export-ownertrust >"$destination/ownertrust.txt" + +echo $(realpath "$destination") diff --git a/configs/shared/gpg/.gnupg/import.sh b/configs/shared/gpg/.gnupg/import.sh new file mode 100644 index 000000000000..9fb9be64f060 --- /dev/null +++ b/configs/shared/gpg/.gnupg/import.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +set -e + +# Run this script to import all of the information exported by `export.sh`. +# Usage: ./export.sh path/to/directory + +gpg --import "$1/public.asc" +gpg --import "$1/secret.asc" +gpg --import-ownertrust "$1/ownertrust.txt" + +# Run this at the end to output some verification +gpg --list-keys diff --git a/configs/shared/zsh/aliases.zsh b/configs/shared/zsh/aliases.zsh index c2788d41e12e..ad00763dad59 100644 --- a/configs/shared/zsh/aliases.zsh +++ b/configs/shared/zsh/aliases.zsh @@ -49,6 +49,12 @@ alias mdg="mix deps.get" alias mdu="mix deps.update" alias mdup="mix docker.up" +# GPG +alias gpged='gpg --edit-key wpcarro@gmail.com' +alias gpge='gpg --encrypt' +alias gpgd='gpg --decrypt' +alias gpgls='gpg --list-keys' + # Git alias g="git" alias glp='git log --graph --pretty=format:"%Cred%h%Creset -%Cblue %an %Creset - %C(yellow)%d%Creset %s %Cgreen(%cr)%Creset" --abbrev-commit --date=relative' diff --git a/configs/shared/zsh/variables.zsh b/configs/shared/zsh/variables.zsh index 53f6f3e84a09..5e8e67ed0221 100644 --- a/configs/shared/zsh/variables.zsh +++ b/configs/shared/zsh/variables.zsh @@ -1,6 +1,7 @@ export TERMINAL=urxvtc export EDITOR=emacsclient export ALTERNATE_EDITOR=nvim +export GPG_TTY=$(tty) # "It is important that this environment variable always reflects the output of the tty command". Source: https://gnupg.org/documentation/manuals/gnupg-devel/Invoking-GPG_002dAGENT.html BROWSER=google-chrome NIXIFY="$HOME/programming/nixify" -- cgit 1.4.1