[pass] [PATCH] Added show obfuscation
Andrew DeMaria
ademariad at gmail.com
Sat Nov 28 18:06:01 CET 2015
- Hides shown text using terminal color codes by default
- Adds --no-color/-n option to remove coloring
- By default display only the first line regardless of whether clip is
specified
- Full output can be toggled with --full/-f
---
src/completion/pass.bash-completion | 2 +-
src/completion/pass.fish-completion | 2 ++
src/completion/pass.zsh-completion | 6 +++++-
src/password-store.sh | 28 ++++++++++++++++++++--------
4 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/src/completion/pass.bash-completion
b/src/completion/pass.bash-completion
index efd4b70..bfd2492 100644
--- a/src/completion/pass.bash-completion
+++ b/src/completion/pass.bash-completion
@@ -80,7 +80,7 @@ _pass()
_pass_complete_entries
;;
show|-*)
- COMPREPLY+=($(compgen -W "-c --clip" -- ${cur}))
+ COMPREPLY+=($(compgen -W "-c --clip -n --no-color -f
--full" -- ${cur}))
_pass_complete_entries 1
;;
insert)
diff --git a/src/completion/pass.fish-completion
b/src/completion/pass.fish-completion
index c32a42c..5913224 100644
--- a/src/completion/pass.fish-completion
+++ b/src/completion/pass.fish-completion
@@ -98,6 +98,8 @@ complete -c $PROG -f -A -n '__fish_pass_uses_command
edit' -a "(__fish_pass_prin
complete -c $PROG -f -A -n '__fish_pass_needs_command' -a show -d
'Command: show existing password'
complete -c $PROG -f -A -n '__fish_pass_uses_command show' -s c -l clip -d
'Put password in clipboard'
+complete -c $PROG -f -A -n '__fish_pass_uses_command show' -s n -l
no-color -d 'Do not colorize text'
+complete -c $PROG -f -A -n '__fish_pass_uses_command show' -s f -l full -d
'Output the full password'
complete -c $PROG -f -A -n '__fish_pass_uses_command show' -a
"(__fish_pass_print_entries)"
# When no command is given, `show` is defaulted.
complete -c $PROG -f -A -n '__fish_pass_needs_command' -s c -l clip -d
'Put password in clipboard'
diff --git a/src/completion/pass.zsh-completion
b/src/completion/pass.zsh-completion
index 9bb3f97..3b0259a 100644
--- a/src/completion/pass.zsh-completion
+++ b/src/completion/pass.zsh-completion
@@ -108,7 +108,11 @@ _pass () {
_pass_cmd_show () {
_arguments : \
"-c[put it on the clipboard]" \
- "--clip[put it on the clipboard]"
+ "--clip[put it on the clipboard]" \
+ "--full[Output the entire text]" \
+ "-f[Output the entire text]" \
+ "--no-color[Do not colorize output]" \
+ "-n[Do not colorize output]"
_pass_complete_entries
}
_pass_complete_entries_helper () {
diff --git a/src/password-store.sh b/src/password-store.sh
index d535a74..e4f33d6 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -16,6 +16,9 @@ PREFIX="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
X_SELECTION="${PASSWORD_STORE_X_SELECTION:-clipboard}"
CLIP_TIME="${PASSWORD_STORE_CLIP_TIME:-45}"
+SHOW_PASS_OBFUS='{ echo -en "$(tput setaf 1)$(tput setab 1)"; cat -; echo
-en "$(tput sgr0)"; }'
+SHOW_PASS_CLEAR='{ cat -; }'
+
export GIT_DIR="${PASSWORD_STORE_GIT:-$PREFIX}/.git"
export GIT_WORK_TREE="${PASSWORD_STORE_GIT:-$PREFIX}"
@@ -223,9 +226,11 @@ cmd_usage() {
List passwords.
$PROGRAM find pass-names...
List passwords that match pass-names.
- $PROGRAM [show] [--clip,-c] pass-name
+ $PROGRAM [show] [--clip,-c] [--no-color,-n] [--full,-f] pass-name
Show existing password and optionally put it on the clipboard.
+ If no color is specified the password will be shown in
non-colorized text.
If put on the clipboard, it will be cleared in $CLIP_TIME
seconds.
+ If full is specified the entire contents will be used (copied
or displayed), not just the first line
$PROGRAM grep search-string
Search for password files containing search-string when
decrypted.
$PROGRAM insert [--echo,-e | --multiline,-m] [--force,-f] pass-name
@@ -294,26 +299,33 @@ cmd_init() {
}
cmd_show() {
- local opts clip=0
- opts="$($GETOPT -o c -l clip -n "$PROGRAM" -- "$@")"
+ local opts clip=0 no_color=0 full=0
+ opts="$($GETOPT -o cnf -l clip,no-color,full -n "$PROGRAM" -- "$@")"
local err=$?
eval set -- "$opts"
while true; do case $1 in
-c|--clip) clip=1; shift ;;
+ -n|--no-color) no_color=1; shift ;;
+ -f|--full) full=1; shift ;;
--) shift; break ;;
esac done
- [[ $err -ne 0 ]] && die "Usage: $PROGRAM $COMMAND [--clip,-c]
[pass-name]"
+ [[ $err -ne 0 ]] && die "Usage: $PROGRAM $COMMAND [--clip,-c]
[--no-color,-n] [--full,-f] [pass-name]"
local path="$1"
local passfile="$PREFIX/$path.gpg"
check_sneaky_paths "$path"
if [[ -f $passfile ]]; then
- if [[ $clip -eq 0 ]]; then
- $GPG -d "${GPG_OPTS[@]}" "$passfile" || exit $?
+ local pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile")"
+ if [[ $full -eq 0 ]]; then
+ local pass=$(echo "${pass}" | head -n 1 -)
+ fi
+ [[ -n $pass ]] || exit 1
+ if [[ $clip -eq 0 && $no_color -eq 0 ]]; then
+ echo "${pass}" | eval "${SHOW_PASS_OBFUS}"
+ elif [[ $clip -eq 0 ]]; then
+ echo "${pass}" | eval "${SHOW_PASS_CLEAR}"
else
- local pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | head -n
1)"
- [[ -n $pass ]] || exit 1
clip "$pass" "$path"
fi
elif [[ -d $PREFIX/$path ]]; then
--
2.6.2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.zx2c4.com/pipermail/password-store/attachments/20151128/4dc2970c/attachment.html>
More information about the Password-Store
mailing list