From a9c95b883801e689835e8a4ae659203df4828b5c Mon Sep 17 00:00:00 2001 From: alterNERDtive Date: Sat, 15 Jun 2024 23:50:29 +0200 Subject: [PATCH] [fix]: so. many. bugs. --- gpgtool | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/gpgtool b/gpgtool index 3f8c480..f6b6439 100755 --- a/gpgtool +++ b/gpgtool @@ -2,6 +2,8 @@ _dependencies=("echo" "gpg" "ln" "ls" "mktemp" "mkdir" "mv" "rm" "udisksctl") _tempdir=/tmp/gpgtool.tempdir +stty sane + # Sets up GPGtool. Creates temporary GNUPG home directory, mounts key device if # given, checks for key directory. init () { @@ -92,7 +94,7 @@ EOF echo "GPGtool initialized. Temporary working directory: ${tempdir}, key path ${keypath}." echo "" - echo "Try \`${0} list\` next." + echo "Try \`gpgtool list\` next." } # Cleans up GPGtool. Clears the temp directory and closes the mounted volume. @@ -195,6 +197,8 @@ closeall () { # Creates a new key and stores it in the key path. create () { + _checkinit + echo "----- Create master key:" gpg --homedir "${tempdir}/gpghome" --full-generate-key echo -n "----- Enter the fingerprint of your new key: " @@ -203,14 +207,15 @@ create () { gpg --homedir "${tempdir}/gpghome" --edit-key ${id} addkey echo "----- Moving secret key …" keygrip=$(gpg --homedir "${tempdir}/gpghome" --with-keygrip --list-key ${id} | grep Keygrip | head -n 1 | awk {'print $3'}) - mv ${tempdir}/gpghome/private-keys-v1.d/${keygrip}.key ${keypath}/${id}/ + mkdir -p "${keypath}/${id}/" + mv "${tempdir}/gpghome/private-keys-v1.d/${keygrip}.key" "${keypath}/${id}/" echo "----- Exporting …" - exdir=${keypath}/${id}/$(date +%F) - mkdir -p ${exdir} - gpg --homedir "${tempdir}/gpghome" --armor --export-secret-keys ${id} > ${keypath}/${id}/${id}.private.asc - gpg --homedir "${tempdir}/gpghome" --armor --export ${id} > ${keypath}/${id}/${id}.public.asc + exdir="${keypath}/${id}/$(date +%F)" + mkdir -p "${exdir}" + gpg --homedir "${tempdir}/gpghome" --armor --export-secret-keys ${id} > "${keypath}/${id}/${id}.private.asc" + gpg --homedir "${tempdir}/gpghome" --armor --export ${id} > "${keypath}/${id}/${id}.public.asc" cp ${keypath}/${id}/${id}.*.asc ${exdir} - mv /home/daniel/.gnupg/openpgp-revocs.d/${id}.rev ${keypath}/${id}/ + mv "${tempdir}/gpghome/openpgp-revocs.d/${id}.rev" "${keypath}/${id}/" echo "----- Restoring secret key for further modification …" ln -sf ${keypath}/${id}/${keygrip}.key ${tempdir}/gpghome/private-keys-v1.d/ echo "----- Remember to import / send & close when done!" @@ -218,7 +223,10 @@ create () { # Extends an open key. extend () { + _checkinit + id=${1} + echo "----- Step 1: change expiry date; end with \`save\`:" gpg --homedir "${tempdir}/gpghome" --edit-key ${id} expire echo "----- Step 2: add new encryption key; end with \`save\`:" @@ -229,8 +237,8 @@ extend () { keygrip=$(gpg --homedir "${tempdir}/gpghome" --with-keygrip --list-key ${id} | grep Keygrip | head -n 1 | awk {'print $3'}) rm ${tempdir}/gpghome/private-keys-v1.d/${keygrip}.key echo "----- Exporting …" - exdir=$(dirname $(ls ${keypath}/${id}))/$(date +%F) - mkdir $exdir + exdir="${keypath}/${id}/$(date +%F)" + mkdir -p $exdir gpg --homedir "${tempdir}/gpghome" --armor --export-secret-keys ${id} > ${keypath}/${id}/${id}.private.asc gpg --homedir "${tempdir}/gpghome" --armor --export ${id} > ${keypath}/${id}/${id}.public.asc cp ${keypath}/${id}/${id}.*.asc ${exdir} @@ -241,9 +249,12 @@ extend () { # Sends keys to key servers. send () { - zparseopts -D -E -- -keyserver=servers: + _checkinit - [[ -z "${servers}" ]] && servers=GPGTOOLKEYSERVERS + # FIXXME: bugged? + # zparseopts -D -E -- -keyserver=servers: + + [[ -z "${servers}" ]] && servers=( $GPGTOOLKEYSERVERS ) [[ -z "${servers}" ]] && echo "No key servers given, aborting …" && exit 1 @@ -260,10 +271,12 @@ send () { import () { _checkinit + id=$1 + local keyfile=${keypath}/${id}/${id}.private.asc [[ ! -f "${keyfile}" ]] && echo "Cannot find secret key ${keyfile}, aborting …" && exit 1 - "Importing key into your regular GnuPG keying …" + echo "Importing key into your regular GnuPG keyring …" gpg --import-options keep-ownertrust --import "${keyfile}" }