diff options
Diffstat (limited to 'files/.config/nnn/plugins/gpge')
| -rwxr-xr-x | files/.config/nnn/plugins/gpge | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/files/.config/nnn/plugins/gpge b/files/.config/nnn/plugins/gpge new file mode 100755 index 0000000..7664cda --- /dev/null +++ b/files/.config/nnn/plugins/gpge @@ -0,0 +1,45 @@ +#!/usr/bin/env sh + +# Description: Encrypts selected files using gpg. Can encrypt +# asymmetrically (key) or symmetrically (passphrase). +# If asymmetric encryption is chosen a key can be +# chosen from the list of capable public keys using fzf. +# +# Note: Symmetric encryption only works for a single (current) file as per gpg limitations +# +# Shell: POSIX compliant +# Author: KlzXS + +# shellcheck disable=SC1090,SC1091 +. "$(dirname "$0")"/.nnn-plugin-helper + +printf "(s)ymmetric, (a)symmetric? [default=a] " +read -r symmetry + +if [ "$symmetry" = "s" ]; then + gpg --symmetric "$1" +else + if nnn_use_selection; then + clear_sel=1 + # shellcheck disable=SC2154 + files=$(tr '\0' '\n' < "$selection") + else + clear_sel=0 + files=$1 + fi + + keyids=$(gpg --list-public-keys --with-colons | grep -E "pub:(.*:){10}.*[eE].*:" | awk -F ":" '{print $5}') + + #awk needs literal $10 + #shellcheck disable=SC2016 + keyuids=$(printf "%s" "$keyids" | xargs -n1 -I{} sh -c 'gpg --list-key --with-colons "{}" | grep "uid" | awk -F ":" '\''{printf "%s %s\n", "{}", $10}'\''') + + recipient=$(printf "%s" "$keyuids" | fzf | awk '{print $1}') + + printf "%s" "$files" | xargs -n1 gpg --encrypt --recipient "$recipient" + + # Clear selection + if [ "$clear_sel" -eq 1 ] && [ -p "$NNN_PIPE" ]; then + printf "-" > "$NNN_PIPE" + fi +fi |
