That's something that has been bugging me for years! Is there any reason
why `generate -m` doesn't expect lines on stdin, like `insert -m` does?
lg
On Thu, Jan 10, 2019 at 03:33:30PM +0100, Calin Iorgulescu wrote:
Hello,
This patch adds the '-m' flag to 'generate', allowing the user to specify
one or more multiline entries after the generated password. This is
particularly useful when generating passwords used for website accounts where
other pieces of info are added to the password entry. For example, if using
an extension like browserpass[1], one might wish to add the account name as
well. But conceivably additional info such as security question answers could
be added. It is possible to specify multiple '-m' entries.
Currently, achieving this requires an additional call to "pass edit", requiring
a decryption of the password (which can be mildly annoying if a passphrase or
smartcard is required). With this patch, it is reduced to:
$ pass generate acme.com 20 -m "login: [email protected]" -m "pin: 1423"
I hope this can prove useful!
Best,
Calin
[1] https://github.com/browserpass/browserpass
---
src/password-store.sh | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/password-store.sh b/src/password-store.sh
index d89d455..e3e48b2 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -276,7 +276,7 @@ cmd_usage() {
overwriting existing password unless forced.
$PROGRAM edit pass-name
Insert a new password or edit an existing password using
${EDITOR:-vi}.
- $PROGRAM generate [--no-symbols,-n] [--clip,-c] [--in-place,-i |
--force,-f] pass-name [pass-length]
+ $PROGRAM generate [--no-symbols,-n] [--clip,-c] [--in-place,-i | --force,-f]
pass-name [pass-length] [-m "additional line"]
Generate a new password of pass-length (or $GENERATED_LENGTH if
unspecified) with optionally no symbols.
Optionally put it on the clipboard and clear board after
$CLIP_TIME seconds.
Prompt before overwriting existing password unless forced.
@@ -491,8 +491,8 @@ cmd_edit() {
}
cmd_generate() {
- local opts qrcode=0 clip=0 force=0 characters="$CHARACTER_SET"
inplace=0 pass
- opts="$($GETOPT -o nqcif -l no-symbols,qrcode,clip,in-place,force -n "$PROGRAM" --
"$@")"
+ local opts qrcode=0 clip=0 force=0 characters="$CHARACTER_SET" inplace=0
extralines=0 footer="" pass
+ opts="$($GETOPT -o nqcifm: -l no-symbols,qrcode,clip,in-place,force -n "$PROGRAM" --
"$@")"
local err=$?
eval set -- "$opts"
while true; do case $1 in
@@ -501,10 +501,11 @@ cmd_generate() {
-c|--clip) clip=1; shift ;;
-f|--force) force=1; shift ;;
-i|--in-place) inplace=1; shift ;;
+ -m) shift; extralines=1; footer+="$1\n"; shift ;;
--) shift; break ;;
esac done
- [[ $err -ne 0 || ( $# -ne 2 && $# -ne 1 ) || ( $force -eq 1 && $inplace -eq 1 ) || ( $qrcode -eq
1 && $clip -eq 1 ) ]] && die "Usage: $PROGRAM $COMMAND [--no-symbols,-n] [--clip,-c] [--qrcode,-q]
[--in-place,-i | --force,-f] pass-name [pass-length]"
+ [[ $err -ne 0 || ( $# -ne 2 && $# -ne 1 ) || ( $force -eq 1 && $inplace -eq 1 ) || ( $qrcode -eq 1 && $clip
-eq 1 ) || ( $inplace -eq 1 && $extralines -eq 1 ) ]] && die "Usage: $PROGRAM $COMMAND [--no-symbols,-n] [--clip,-c]
[--qrcode,-q] [--in-place,-i | --force,-f] pass-name [pass-length] [-m \"additional line\"]"
local path="$1"
local length="${2:-$GENERATED_LENGTH}"
check_sneaky_paths "$path"
@@ -520,7 +521,7 @@ cmd_generate() {
read -r -n $length pass < <(LC_ALL=C tr -dc "$characters" <
/dev/urandom)
[[ ${#pass} -eq $length ]] || die "Could not generate password from
/dev/urandom."
if [[ $inplace -eq 0 ]]; then
- echo "$pass" | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile"
"${GPG_OPTS[@]}" || die "Password encryption aborted."
+ { echo "$pass" ; echo -e "$footer" ; } | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o
"$passfile" "${GPG_OPTS[@]}" || die "Password encryption aborted."
else
local
passfile_temp="${passfile}.tmp.${RANDOM}.${RANDOM}.${RANDOM}.${RANDOM}.--"
if { echo "$pass"; $GPG -d "${GPG_OPTS[@]}" "$passfile" | tail -n +2; } | $GPG -e
"${GPG_RECIPIENT_ARGS[@]}" -o "$passfile_temp" "${GPG_OPTS[@]}"; then
--
2.20.1
_______________________________________________
Password-Store mailing list
[email protected]
https://lists.zx2c4.com/mailman/listinfo/password-store
_______________________________________________
Password-Store mailing list
[email protected]
https://lists.zx2c4.com/mailman/listinfo/password-store