#!/bin/bash # Unsecure implementation of a simple encrypted file editor # The file is saved IN PLAIN TEXT when editing, # this script only takes care of storing the file # encrypted function helpexit() { echo "Edit a GPG encrypted file with vim. Unsecure implementation, since the file is saved IN PLAIN TEXT when editing, this script only takes care of storing the file encrypted Changed file is always backed up as .old " exit } [[ -z "$1" ]] && helpexit [[ "$1" = "-h" ]] && helpexit set -x if [[ ! "$1" == *\.gpg ]] then echo "source is not .gpg" exit 1 fi unc="${1%.gpg}" if [ -e "$unc" ] then echo "$unc already exists. exiting" exit 1 fi if [ ! -e "$1" ] then echo "File $1 does not exist. Creating empty file" echo " " > "$unc" else gpg --decrypt "$1" > "$unc" fi edit=`date +%s -r $unc` if [ -s "$unc" ] then vim -i NONE -n "$unc" else echo Error in decrypting rm "$unc" exit 1 fi afteredit=`date +%s -r "$unc"` if (( $edit != $afteredit )) then cat "$unc" | gpg -ca > "$1".tmp if [ -s "$1".tmp ] then [[ -e "$1" ]] && mv -f "$1" "$1".old mv -f "$1".tmp "$1" fi fi rm "$unc"