Commit message (Collapse)AuthorAgeFilesLines
* Account for missing [:graph:] on Busybox by using [:alnum:][:punct:]Daniel Janus2019-07-171-1/+1
| | | | | | | | | Some implementations of tr (notably the ones in Busybox and Toybox) do not support the [:graph:] character class, but they do support [:punct:] and [:alnum:]. This makes pass generate sane passwords in such environments. Discussed-on: https://lists.zx2c4.com/pipermail/password-store/2019-July/003702.html
* Exclude invalid, disabled and revoked subkeys from subkey selectionAaron Jones2019-06-161-1/+1
| | | | | | | | | | | | | | When rotating encryption subkeys, and revoking the old one, `pass init keyid` would re-encrypt your stored credentials to the (now revoked) old subkey(s) in addition to the new one too. It would also mistakenly encrypt to keys that have been disabled, and keys that were never validly signed by their master (certify) key. Fix all of these cases. It was decided NOT to also exclude expired subkeys. Signed-off-by: Aaron Jones <aaronmdjones@gmail.com>
* emacs: Delete duplicate entries from password-store-listTino Calancha2019-06-101-4/+5
| | | | | | | | Emacs backup files add a duplicate entry, that is, if you have the two files, foo.bar and foo.bar~, then you'd get two entries for `foo'. * password-store.el (password-store-list): Delete duplicate entries. Bump version to 2.0.2. Update Copyright notice.
* emacs: Drop nil command argumentsSvend Sorensen2019-04-251-3/+3
| | | | | Drop nil arguments in `password-store--run` and `password-store--run-1`. This fixes an error running `password-store-generate`.
* emacs: Release version 2.0.0 of Emacs packageSvend Sorensen2019-04-051-1/+1
* emacs: Supprt asynchronous pass operations which return output.Ian Eure2019-04-051-30/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using EXWM, if `password-store-get` is called and a pinentry program needs to be executed, Emacs deadlocks. This happens becuase Emacs blocks waiting for output from `gpg(1)`, which is blocked waiting for output from the pinentry-program, which is blocked waiting for Emacs to manage its window. This updates `password-store-copy` to work asynchronously. This should be fine, since its primary purpose is side-effecting, and it doesn’t matter when its evaluation completes. The ability to call `password-store-get` asynchronously with a callback has also been added to support this usecase. A new function has been added for general cases of async `pass` commands where the output is needed, `password-store--run-1`. While there is an existing `password-store--run-async`, it discards output -- it’s only used for `pass edit`, where it’s not needed. The body of `password-store--run` has been replacing it with one that uses `--run-1` and a wait loop which blocks until it’s complete. Supporting all this necessitated moving the file to lexical binding and dropping Emacs 24 support. The latter requirement could be worked around if there are concerns around it. **SECURITY INTERLUDE** I was unbelievably distressed to discover that the implementation of `password-store--run` redirects the decrypted file contents to disk, reads that into a buffer, then removes the file. This approach is preposterous and may warrant a CVE, as it exposes users to numerous conditions where their cleartext passwords could be recovered: - If the user hits C-g, the Emacs function may not get to the point of removing the file, leaving the password on disk. - It’s not a safe assumption that `make-temp-file` is secure, and even if it were, the time windows in play are likely to be very large, opening race conditions where the file contents can be read by an attacker before the file is removed. - Even if the file is removed, it could be recovered by examining the contents of deleted inodes. Information this sensitive should NEVER be persisted in cleartext in non-volatile storage. You may as well write it on a post-it and stick it on your monitor. re NicolasPetton/pass#25
* clip: Add support for wl-clipboardBrett Cornwall2019-02-273-6/+29
* emacs: Fix typo in password-store-url function doc stringSvend Sorensen2018-10-312-3/+7
| | | | "http://" was repeated, fix the second instance to read "https://".
* bash-completion: detect whether to use gpg/gpg2 binary for complete keysElan Ruusamäe2018-10-191-1/+4
| | | | Signed-off-by: Elan Ruusamäe <glen@pld-linux.org>
* bash_completion: do not leak variables to globals scopeElan Ruusamäe2018-10-191-6/+6
| | | | Signed-off-by: Elan Ruusamäe <glen@pld-linux.org>
* Do not reencrypt symbolic linksAldis Berjoza2018-08-092-0/+10
* version: bump1.7.3Jason A. Donenfeld2018-08-031-1/+1
* show: do not store binary data in bash varsJason A. Donenfeld2018-08-015-15/+18
| | | | Instead we're forced to base64 it, like we do with the clipboard.
* Add custom bash completion for extensionsLars Flitter2018-07-261-1/+12
| | | | | Bash completion now allows usage of extension commands. (see pass.bash-completion for details)
* Do not set foreground color for generated passwordLukas Fleischer2018-07-261-1/+1
| | | | | | | | | | | | Since commit 63ef32a (generate: use nice ansi colors instead., 2014-05-08), generated passwords are highlighted to make them distinguishable from the Git output. However, setting the foreground color to white makes the password hardly readable when a "black on white" color scheme is used. Drop the hardcoded foreground color and use the bold attribute only instead. Signed-off-by: Lukas Fleischer <lfleischer@lfos.de>
* Do not put passwords in herestringsJason A. Donenfeld2018-06-251-3/+3
| | | | Bash sometimes writes these into temporary files, which isn't okay.
* Simplify filename matching in redact_pass.vimTom Ryder2018-06-242-40/+11
| | | | | Use the autocmd pattern to match the password filename rather than doing it manually within the called function.
* version: bump1.7.2Jason A. Donenfeld2018-06-141-1/+1
* show: buffer output before displaying, in case decryption failsJason A. Donenfeld2018-06-141-2/+4
| | | | | For the line-choosing case, this is actually a big deal since we weren't passing the error code back to the user either.
* Close stdout for background task that restores clipboardAllan Odgaard2018-06-143-3/+3
| | | | | | | While we do not expect any output on stdout from the background task, keeping the file handle open means that anyone calling `pass` and waiting for stdout to be closed, will have to wait (by default) for 45 seconds.
* Don't trap INT or TERM; they are redundant and can break `pass edit`.Nick Kousu2018-06-141-2/+2
| | | | | | | | | | | Some EDITORs, notably Linux vi(1), which is the fallback default in pass, apparently send INT when they exit, and when pass is run under bash (which is also its default)--if you have /dev/shm/ available--bash catches this and cleans up your edited password file *before* it can be reencrypted and saved. This only happens with `pass edit`; none of the other commands combine tmpdir and $EDITOR.
* tests: fix compatibility with GnuPG 2.2.5Clément Lassieur2018-06-141-1/+1
* Add tests and documentation of passing options to grep(1)Norbert Buchmueller2018-06-143-5/+18
* Ensure signature regexes are anchoredJason A. Donenfeld2018-06-141-4/+4
| | | | | | Fixes CVE-2018-12356. Reported-by: Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
* Replace noplaintext.vim as redact_pass.vim pluginTom Ryder2018-06-103-46/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per debugging from Enno Nagel <enno.nagel+vim@gmail.com>, it's become apparent to me that to have any degree of confidence that none of these options have actually got any plaintext password data in them, we need to disable the options globally when a password file is edited. In particular, in the case of the 'viminfo' global option, it's not possible to disable it per path, and not terribly meaningful either; things like the last seach pattern or the contents of registers, i.e. global state of the editor, are recorded. There's no sensible approach I can see except to actually switch the feature off entirely by blanking it. I've therefore completely rewritten this, to make as thorough a check as possible that the Vim user is editing a pass(1) file by calling `pass edit`, and then to disable the "leaky" options globally, with an explicit warning so that the user can see it's been done. This plugin is also available as Vim script #5707: <https://www.vim.org/scripts/script.php?script_id=5707> Its homepage is here: <https://sanctum.geek.nz/cgit/vim-redact-pass.git/about/>
* grep: allow grep options and argumentsSitaram Chamarty2018-05-241-3/+3
| | | | | | | | | Allow grep options and arguments. Typical uses may be, for instance, wanting to ignore case ('-i'), print a few lines of context around the matched line, multiple patterns with '-e', etc. (background: grep is deprecating GREP_OPTIONS, so eventually that will stop working).
* fish: reduce completion runtimesMathis Antony2018-02-191-14/+13
| | | | | | | Fish completion spends most of the time in calls to `sed` in for loops over entries and directories. This patch removes the repeated calls to `sed`. Signed-off-by: Mathis Antony <sveitser@gmail.com>
* generate: disallow zero length generated passwordsJason A. Donenfeld2018-02-081-1/+2
* generate: in-place should work when file is emptyJason A. Donenfeld2018-02-011-1/+1
* Quote array specifierJason A. Donenfeld2017-12-181-1/+1
| | | | | | Otherwise this expands to a filename if one exists. Suggested-by: izaberina@gmail.com
* protect dirname calls from pass-names that look like command-line optionsStacey Sheldon2017-10-131-6/+6
| | | | | | | | | | | | | | | | | | | | With the $path variable being passed directly to dirname, any pass-names provided by the user that happened to look like options to dirname would be processed as options rather than as the path to be split. This results in a real mess when you happen to run one of: pass edit --help pass generate --help pass insert --help then in the cmd_foo() function, you have: mkdir -p -v "$PREFIX/$(dirname --help)" which (due to the -p option to mkdir) results in the creation of an entire directory hierarchy made up of the slash-separated help text from dirname.
* passmenu: Don't eat whitespace at beginning/end of passwordDaniel Lublin2017-09-151-1/+1
| | | | | If IFS (Input Field Separator) is not emptied, read will actually strip spaces and tabs at the beginning/end end of the "line".
* emacs: Release version 1.0.1 of Emacs packageSvend Sorensen2017-08-292-5/+10
* emacs: --run-async: Quote shell argumentsDamien Cassou2017-08-291-4/+5
| | | | | This is important for filenames with special characters such as spaces and parenthesis.
* emacs: Update author's email addressSvend Sorensen2017-08-291-2/+2
* emacs: Fix package-lint violationsSvend Sorensen2017-08-291-2/+3
* emacs: Release version 1.0.0 of Emacs packageSvend Sorensen2017-07-262-1/+8
* emacs: Use with-editor to wrap "pass edit"Svend Sorensen2017-07-262-9/+17
| | | | | | | Instead of editing the password file directly using Emacs, "pass edit" is run. This allows password-store's git change tracking to work. This adds a dependency on the with-editor Emacs package.
* Bump version1.7.1Jason A. Donenfeld2017-04-131-1/+1
* init: match only the public keyJason A. Donenfeld2017-04-131-1/+1
* Use $GPG variableJason A. Donenfeld2017-03-281-3/+3
* Fix compatibility with GnuPG 2.2.19Andreas Stieger2017-03-202-2/+2
| | | | | | | | | | | GnuPG 2.2.19 added a warning when no command was given. * src/password-store.sh (reencrypt_path): Add --decrypt to --list-only * tests/t0300-reencryption.sh (gpg_keys_from_encrypted_file): same https://bugs.gnupg.org/gnupg/msg9873 http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=810adfd47801fc01e45fb71af9f05c91f7890cdb https://bugzilla.suse.com/show_bug.cgi?id=1028867
* tests: fix on OSX by not using the tr hackJason A. Donenfeld2017-03-013-5/+2
* Bump version1.7Jason A. Donenfeld2017-02-261-1/+1
* Modernize makefileJason A. Donenfeld2017-02-262-31/+36
* CopyrightJason A. Donenfeld2017-02-251-1/+1
* StyleJason A. Donenfeld2017-02-251-2/+2
* git: use inner-most directoryJason A. Donenfeld2017-02-252-27/+48
* clip: sleep may require argv[0] to be sleepJason A. Donenfeld2017-02-251-1/+1
* man: document system extensionsJason A. Donenfeld2017-02-251-2/+3