t[cleanup] ask_password - tomb - the crypto undertaker
HTML git clone git://parazyd.org/tomb.git
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit fb12b50d7d0837a11292b8eaf28af79527f7c4b7
DIR parent dac8e4acae1d05263e62ccb0407e960712a23720
HTML Author: hellekin <hellekin@cepheide.org>
Date: Sun, 2 Nov 2014 21:55:19 -0300
t[cleanup] ask_password
Diffstat:
M tomb | 38 +++++++++++++++++--------------
1 file changed, 21 insertions(+), 17 deletions(-)
---
DIR diff --git a/tomb b/tomb
t@@ -351,33 +351,37 @@ _check_swap() {
}
# Ask user for a password
+# Wraps around the pinentry command, from the GnuPG project, as it
+# provides better security and conveniently use the right toolkit.
ask_password() {
-# we use pinentry now
-# comes from gpg project and is much more secure
-# it also conveniently uses the right toolkit
-
- # pinentry has no custom icon setting
- # so we need to temporary modify the gtk theme
- if [ -r /usr/local/share/themes/tomb/gtk-2.0-key/gtkrc ]; then
- GTK2_RC=/usr/local/share/themes/tomb/gtk-2.0-key/gtkrc
- elif [ -r /usr/share/themes/tomb/gtk-2.0-key/gtkrc ]; then
- GTK2_RC=/usr/share/themes/tomb/gtk-2.0-key/gtkrc
- fi
- title="Insert tomb password."
- if [ $2 ]; then title="$2"; fi
+ local description=$1
+ local title=${2:-Enter tomb password.}
+ local gtkrc="share/themes/tomb/gtk-2.0-key/gtkrc"
+ local output
+
+ # Force pinentry to use a custom icon by overriding the GTK theme
+ # temporarily.
+ for prefix in /usr/local /usr; do
+ [[ -r "$prefix/$gtkrc" ]] && {
+ GTK2_RC="$prefix/$gtkrc"
+ break
+ }
+ done
output=`cat <<EOF | GTK2_RC_FILES=${GTK2_RC} pinentry 2>/dev/null | tail -n +7
OPTION ttyname=$TTY
OPTION lc-ctype=$LANG
SETTITLE $title
-SETDESC $1
+SETDESC $description
SETPROMPT Password:
GETPIN
EOF`
- if [[ `tail -n1 <<<$output` =~ ERR ]]; then
- return 1
- fi
+
+ # Return 1 on error
+ [[ `tail -n1 <<<$output` =~ ERR ]] && return 1
+
+ # Print out the typed password and return 0
head -n1 <<<$output | awk '/^D / { sub(/^D /, ""); print }'
return 0
}