GoWiki
Index
Sections
Search
Login
ston1th
Encrypted Editor
# 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> ```