Created by: ston1th 2019-01-13 23:35:34
Updated by: ston1th 2019-02-18 19:04:18
Visibility:
Public
Encrypted Editor
Install
cat <<'EOF'>> ~/.bashrc
e_cipher="TWOFISH"
e_digest="SHA512"
e_count="62914560"
e_gpg_cmd="gpg2 --quiet --batch --no-tty --passphrase-fd 0"
e_hash() { sha256sum ${1} | cut -d" " -f1; }
e_clean() { unset e_pass; shred -f -u -z $1; }
epw() {
echo -n "enter password: " >&2
read -s e_pass; echo >&2
[ -z "${e_pass}" ] && { echo "error: empty password" >&2; return 1; } || return 0
}
evi() {
e_plain=$(TMPDIR=/dev/shm mktemp)
chmod 600 ${e_plain}
[ -f "$1" ] && { ecat $1 "no_unset" >${e_plain} || { e_clean "${e_plain}"; return 1; }; }
sum=$(e_hash ${e_plain})
${EDITOR} ${e_plain}
[ "${sum}" != "$(e_hash ${e_plain})" ] && { ewrite "${e_plain}" "$1" || rm -f $1; }
e_clean "${e_plain}"
}
ecat() {
[ -z "${e_pass}" ] && { epw || return 1; }
[ -f "$1" ] && echo "${e_pass}" | ${e_gpg_cmd} --decrypt $1
local exc=$?
[ "$2" == "no_unset" ] || unset e_pass
return ${exc};
}
ewrite() {
[ -z "${e_pass}" ] && { epw || return 1; }
echo "${e_pass}" | ${e_gpg_cmd} --no-random-seed-file --s2k-digest-algo ${e_digest} --s2k-count ${e_count} --symmetric --armor --cipher-algo ${e_cipher} --digest-algo ${e_digest} --output - $1 >$2
}
EOF
. ~/.bashrc
Usage
# create, view, edit
evi <file>
# view
ecat <file>