Coder Social home page Coder Social logo

ripasso's Introduction

ripasso

Build Status Crates Version Documentation Status Packaging Status

A simple password manager written in Rust.

The root crate ripasso is a library for accessing and decrypting passwords stored in pass format, that means PGP-encrypted files optionally stored in a git repository.

Multiple UI's in different stages of development are available in subcrates.

To build all UI's:

cargo build --all

PR's are very welcome!

History

This is a reimplementation of https://github.com/cortex/gopass in Rust. I started it mainly because https://github.com/go-qml/qml is unmaintained. Also, using a safe language for your passwords seems like a good idea.

UI's

Cursive - Terminal interface

Screenshot of ripasso-cursive

TUI interface based on cursive Supports password age display and password editing. I use this as my daily password-manager.

Build

cargo build -p ripasso-cursive

GTK GUI - (WIP)

Screenshot of ripasso-gtk

Not at feature-parity with the cursive code base yet, but basic operations work.

Build

cargo build -p ripasso-gtk

Install instructions

Arch

TUI version

pacman -S ripasso

Fedora

Available in Copr

sudo dnf copr enable atim/ripasso -y

TUI version

sudo dnf install ripasso

GTK version (unstable)

sudo dnf install ripasso-gtk

Nix

TUI version

nix-env -iA nixpkgs.ripasso-cursive

Mac OS X

The best way to install ripasso on mac right now is the nix package system, first install that and then

nix-env -iA nixpkgs.ripasso-cursive

Alpine

Ripasso-cursive is currently in the testing repository for apk, so the testing repository needs to be added to the apk repositories file.

TUI version

apk add ripasso-cursive

Build instructions

See here

Translations

Do you want to have ripasso in your native language? Help out with a translation:

See here

ripasso's People

Contributors

aevin avatar alexanderkjall avatar andreaniklaus avatar apprenticeofender avatar connorbach avatar cortex avatar dependabot[bot] avatar fnords avatar frogshead avatar heplaphon avatar johnlinwiz avatar lassegs avatar mijailr avatar orhun avatar parasew avatar prune2000 avatar qaidvoid avatar robinkrahl avatar sa7dse avatar scamin0 avatar stigok avatar stigtsp avatar theotheroracle avatar tim77 avatar travismiller avatar vincentserpoul avatar wiktor-k avatar xanonid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ripasso's Issues

allow custom gpgme::PassphraseRequest callback for GPGME operations

My immediate need is to support retrieving a GPG passphrase from the user (eg. via web form) rather than requiring that ripasso is running along side an unlocked GPG agent.

Looking at the implementation ripasso, I see two options for how to achieve this:

  1. allow passing a gpgme::PassphraseRequest callback to all uses of gpgme::Context (eg. PasswordEntry::password). For example:
let mut ctx = gpgme::Context::from_protocol(gpgme::Protocol::OpenPgp)?;
ctx.with_passphrase_provider(passphrase_cb, |ctx| -> gpgme::Result<()> {
    ctx.decrypt(&mut input, &mut output)?;
    Ok(())
})?;
  1. Allow passing a custom gpgme::Context anywhere they are used. This is more flexible and would aid testability of the GPGME integration, however, the gpg-rs bindings do not wrap ffi::gpgme_set_passphrase_cb() directly as with eg. gpgme::Context::set_pinentry_mode(). Instead, gpgme::Context::with_passphrase_provider() must be called with a closure of the operations to be called within that context. I've filed gpg-rs/gpgme#27 against gpg-rs to track this.

ripasso-cursive takes a long time to load on large pass repo

about CPU 10s on a rather large pass repo.

this seems to happen for each password entry when ripasso-cursive loads:

stat("/home/user/.password-store/.git/config", {st_mode=S_IFREG|0644, st_size=349, ...}) = 0
stat("/home/user/.gitconfig", {st_mode=S_IFREG|0644, st_size=480, ...}) = 0
access("/home/user/.password-store/.git/objects/[REDACTED]", F_OK) = 0
stat("/home/user/.password-store/.git/objects/[REDACTED]", {st_mode=S_IFREG|0400, st_size=854, ...}) = 0
openat(AT_FDCWD, "/home/user/.password-store/.git/objects/[REDACTED]", O_RDONLY|O_CLOEXEC) = 4
read(4, "[REDACTED]"..., 854) = 854
close(4)                                = 0
access("/home/user/.password-store/.git/objects/[REDACTED]", F_OK) = 0
stat("/home/user/.password-store/.git/objects/[REDACTED]", {st_mode=S_IFREG|0400, st_size=559, ...}) = 0
openat(AT_FDCWD, "/home/user/.password-store/.git/objects/[REDACTED]", O_RDONLY|O_CLOEXEC) = 4
read(4, "[REDACTED]"..., 559) = 559
close(4)                                = 0

Support git pull

Pull remote changes to the repository.

Problem: What should happen when there is a merge conflict?

No ./src/main.rs for cargo run [macOS]

When doing cargo run I get: "error: a bin target must be available for cargo run"
Also I see that cargo expects "src/main.rs" for "run".

Building it works, but I'm not sure where is the binary.

Don't go through all git objects?

I tried to start ripasso after a fresh install but always interrupted it because it just ate up my cpu (1 core at 100%) and nothing happened. Then I started it with strace and see tons of calls like this:

access("/home/nik/.password-store/.git/objects/8f/469a1af346305744b801f7d581b82c8f4038cb", F_OK) = 0
stat("/home/nik/.password-store/.git/objects/8f/469a1af346305744b801f7d581b82c8f4038cb", {st_mode=S_IFREG|0400, st_size=6602, ...}) = 0
openat(AT_FDCWD, "/home/nik/.password-store/.git/objects/8f/469a1af346305744b801f7d581b82c8f4038cb", O_RDONLY|O_CLOEXEC) = 5
read(5, "x\1u\232y@Lm\364\307CE\251\320\236\264o\304\244R\242\364\246\262\245\310\222\302\233\345\316\314"..., 6602) = 6602
close(5)                                = 0
stat("/home/nik/.password-store/.git/config", {st_mode=S_IFREG|0664, st_size=302, ...}) = 0
stat("/home/nik/.gitconfig", {st_mode=S_IFREG|0644, st_size=315, ...}) = 0
access("/home/nik/.password-store/.git/objects/8f/469a1af346305744b801f7d581b82c8f4038cb", F_OK) = 0
stat("/home/nik/.password-store/.git/objects/8f/469a1af346305744b801f7d581b82c8f4038cb", {st_mode=S_IFREG|0400, st_size=6602, ...}) = 0
openat(AT_FDCWD, "/home/nik/.password-store/.git/objects/8f/469a1af346305744b801f7d581b82c8f4038cb", O_RDONLY|O_CLOEXEC) = 5
read(5, "x\1u\232y@Lm\364\307CE\251\320\236\264o\304\244R\242\364\246\262\245\310\222\302\233\345\316\314"..., 6602) = 6602
close(5)                                = 0

Apparently ripasso goes through all the files in .git for whatever reason at least on the first start. Since I am using pass for a couple of years and with several hundreds passwords I expect it to be huge…

A quick start

Hi there
I'm in the search of a little tool for getting my passwords easily in OSX. Regrettably, I don't know Rust, but it would be great to have a quick start for trying it.

ld: symbol(s) not found for architecture x86_64

$ rustc --version
rustc 1.16.0
$ system_profiler SPSoftwareDataType

Software:

    System Software Overview:

      System Version: macOS 10.12.4 (16E195)
      Kernel Version: Darwin 16.5.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: lap
      User Name: Viktor (viktor)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 1 day 3:09
       Fresh cfg-if v0.1.0
       Fresh winapi v0.2.8
       Fresh pkg-config v0.3.9
       Fresh glob v0.2.11
       Fresh gcc v0.3.45
       Fresh bitflags v0.7.0
       Fresh custom_derive v0.1.7
       Fresh block v0.1.6
       Fresh cmake v0.1.22
       Fresh conv v0.3.3
       Fresh winapi-build v0.1.1
       Fresh lazy_static v0.2.8
       Fresh libc v0.2.21
       Fresh libgpg-error-sys v0.2.2
       Fresh malloc_buf v0.0.6
       Fresh gpg-error v0.2.1
       Fresh filetime v0.1.10
       Fresh objc v0.2.2
       Fresh kernel32-sys v0.2.2
       Fresh fsevent-sys v0.1.6
       Fresh objc_id v0.1.0
       Fresh walkdir v0.1.8
       Fresh gpgme-sys v0.5.0 (https://github.com/johnschug/rust-gpgme#8b0d1b58)
       Fresh fsevent v0.2.16
       Fresh objc-foundation v0.1.1
       Fresh qml v0.0.9 (https://github.com/vandenoever/qml-rust/?branch=notify#07efdfac)
       Fresh gpgme v0.5.0 (https://github.com/johnschug/rust-gpgme#8b0d1b58)
       Fresh notify v4.0.1
       Fresh clipboard v0.2.0 (https://github.com/aweinstock314/rust-clipboard#618b714a)
   Compiling rustpass v0.0.1 (file:///Users/viktorv/Repositories/ripasso)
     Running `rustc --crate-name rustpass src/main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=a0af8f13a671f9a8 -C extra-filename=-a0af8f13a671f9a8 --out-dir /Users/viktorv/Repositories/ripasso/target/debug/deps -L dependency=/Users/viktorv/Repositories/ripasso/target/debug/deps --extern clipboard=/Users/viktorv/Repositories/ripasso/target/debug/deps/libclipboard-5693548e4452a143.rlib --extern glob=/Users/viktorv/Repositories/ripasso/target/debug/deps/libglob-448fa4fbc5ac9e4c.rlib --extern gpgme=/Users/viktorv/Repositories/ripasso/target/debug/deps/libgpgme-a10ebfa4e8fccea3.rlib --extern qml=/Users/viktorv/Repositories/ripasso/target/debug/deps/libqml-5eaca5e787064180.rlib --extern notify=/Users/viktorv/Repositories/ripasso/target/debug/deps/libnotify-065703ba1af6da53.rlib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/gpgme-sys-03079fc0e809a527/out/lib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/libgpg-error-sys-9fcf39f7d33b4c01/out/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/qml-68ef071e1b8d8001/out/lib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/qml-68ef071e1b8d8001/out/build/lib`
warning: method `copyToClipboard` should have a snake case name such as `copy_to_clipboard`, #[warn(non_snake_case)] on by default
  --> src/main.rs:57:5
   |
57 |     pub fn copyToClipboard(&mut self, i: i32) -> Option<&QVariant> {
   |     ^

warning: unused variable: `e`, #[warn(unused_variables)] on by default
  --> src/main.rs:66:17
   |
66 |             Err(e) => {
   |                 ^

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-m64" "-L" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/rustpass-a0af8f13a671f9a8.0.o" "-o" "/Users/viktorv/Repositories/ripasso/target/debug/deps/rustpass-a0af8f13a671f9a8" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/viktorv/Repositories/ripasso/target/debug/deps" "-L" "/Users/viktorv/Repositories/ripasso/target/debug/build/gpgme-sys-03079fc0e809a527/out/lib" "-L" "/Users/viktorv/Repositories/ripasso/target/debug/build/libgpg-error-sys-9fcf39f7d33b4c01/out/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-F" "/usr/local/Cellar/qt/5.8.0_2/lib" "-L" "/Users/viktorv/Repositories/ripasso/target/debug/build/qml-68ef071e1b8d8001/out/lib" "-L" "/Users/viktorv/Repositories/ripasso/target/debug/build/qml-68ef071e1b8d8001/out/build/lib" "-L" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libqml-5eaca5e787064180.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libgpgme-a10ebfa4e8fccea3.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libconv-f4d495a537070341.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libnotify-065703ba1af6da53.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libfsevent-ae3b64942b63ffce.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/liblazy_static-ad1e8eccb670bee7.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libbitflags-65ddff5d2b91509e.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libgpgme_sys-aba9eaa5719afb14.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libglob-448fa4fbc5ac9e4c.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libfiletime-f10baa873e2ea264.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libclipboard-5693548e4452a143.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libobjc_foundation-6c433935652d7994.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libobjc_id-c467ca9539e6846d.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libobjc-df9887aeaf8fc0d9.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libcfg_if-5cf5b4dd25466da1.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libcustom_derive-c0152e66c33f1682.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libgpg_error-7c4b967f067d8497.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/liblibgpg_error_sys-5f04a4710c71c919.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libfsevent_sys-eb1e836fef99ac6c.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libwalkdir-97309c6e51e51a47.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libmalloc_buf-7677285567d6e14c.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/liblibc-5dc7b85e748840b4.rlib" "/Users/viktorv/Repositories/ripasso/target/debug/deps/libblock-d0efe540c64f4d99.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/libstd-a71699d9a2708b89.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-938ad17540379fcc.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/libunwind-cb9ccdab2eb2dc79.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/librand-670a947df89a2ccc.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/libcollections-5b3898f8c5f0e814.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/liballoc-a6daae03bd7bd954.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/liballoc_jemalloc-4f1792314cacd044.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/liblibc-4e8e9be8cd6f1b87.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/libstd_unicode-a3427337083eea0c.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/libcore-f29b4bdb6959fcf5.rlib" "/usr/local/Cellar/rust/1.16.0/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-87bae4784d673068.rlib" "-l" "c++" "-framework" "QtQuick" "-framework" "QtQml" "-framework" "QtNetwork" "-framework" "QtSvg" "-framework" "QtWidgets" "-framework" "QtGui" "-framework" "QtCore" "-framework" "AppKit" "-framework" "Foundation" "-l" "objc" "-l" "objc" "-l" "objc" "-framework" "CoreServices" "-framework" "CoreServices" "-l" "System" "-l" "System" "-l" "pthread" "-l" "c" "-l" "m"
  = note: Undefined symbols for architecture x86_64:
            "_libintl_dgettext", referenced from:
                __gpg_strerror in liblibgpg_error_sys-5f04a4710c71c919.rlib(libgpg_error_la-strerror.o)
                __gpg_strerror_r in liblibgpg_error_sys-5f04a4710c71c919.rlib(libgpg_error_la-strerror.o)
                __gpg_strsource in liblibgpg_error_sys-5f04a4710c71c919.rlib(libgpg_error_la-strsource.o)
            "_libintl_bindtextdomain", referenced from:
                _real_init in liblibgpg_error_sys-5f04a4710c71c919.rlib(libgpg_error_la-init.o)
          ld: symbol(s) not found for architecture x86_64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
          

error: aborting due to previous error

error: Could not compile `rustpass`.

Caused by:
  process didn't exit successfully: `rustc --crate-name rustpass src/main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=a0af8f13a671f9a8 -C extra-filename=-a0af8f13a671f9a8 --out-dir /Users/viktorv/Repositories/ripasso/target/debug/deps -L dependency=/Users/viktorv/Repositories/ripasso/target/debug/deps --extern clipboard=/Users/viktorv/Repositories/ripasso/target/debug/deps/libclipboard-5693548e4452a143.rlib --extern glob=/Users/viktorv/Repositories/ripasso/target/debug/deps/libglob-448fa4fbc5ac9e4c.rlib --extern gpgme=/Users/viktorv/Repositories/ripasso/target/debug/deps/libgpgme-a10ebfa4e8fccea3.rlib --extern qml=/Users/viktorv/Repositories/ripasso/target/debug/deps/libqml-5eaca5e787064180.rlib --extern notify=/Users/viktorv/Repositories/ripasso/target/debug/deps/libnotify-065703ba1af6da53.rlib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/gpgme-sys-03079fc0e809a527/out/lib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/libgpg-error-sys-9fcf39f7d33b4c01/out/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L framework=/usr/local/Cellar/qt/5.8.0_2/lib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/qml-68ef071e1b8d8001/out/lib -L native=/Users/viktorv/Repositories/ripasso/target/debug/build/qml-68ef071e1b8d8001/out/build/lib` (exit code: 101)

Investigate what happens when you have multiple encryption subkeys in gpg

From a patch to pass written by Carl Michael Skog:

When encrypting with a gpg key that has multiple encryption subkeys ONLY
the newest encryption subkey is used when encrypting.
This leads to potential problems in pass when using such a key.

Consider this scenario:
Let's say we are using a key K with encryption subkey A.
We set up two password stores(S1 and S2) plus a git repository(G) with this
key.
All fine so far.
Let's say now that S1 adds a encryption subkey(B) to K.
S2 is still unchanged.
S1 then adds a new password P, and pushes this to G, which S2 then pulls.
When S2 tries to read password P it will get an error message from gpg:
"gpg: decryption failed: No secret key".
Even more dangerous: if S1 after adding the key does a "pass init" with K,
S2 will not be able to read a single password, if it pulls this change.

See this thread: https://lists.zx2c4.com/pipermail/password-store/2019-November/003796.html

sign git commit's

If the user have configured a signingkey in it's git config, we should use that to sign the git commits that ripasso creates

error: Could not compile `clipboard` on macOS

$ rustc --version
rustc 1.16.0
$ cargo run
   Compiling glob v0.2.11
   Compiling gcc v0.3.45
   Compiling lazy_static v0.2.8
   Compiling bitflags v0.7.0
   Compiling cfg-if v0.1.0
   Compiling block v0.1.6
   Compiling libc v0.2.21
   Compiling pkg-config v0.3.9
   Compiling fsevent-sys v0.1.6
   Compiling fsevent v0.2.16
   Compiling malloc_buf v0.0.6
   Compiling objc v0.2.2
   Compiling filetime v0.1.10
   Compiling cmake v0.1.22
   Compiling libgpg-error-sys v0.2.2
   Compiling winapi-build v0.1.1
   Compiling kernel32-sys v0.2.2
   Compiling objc_id v0.1.0
   Compiling objc-foundation v0.1.1
   Compiling qml v0.0.9 (https://github.com/vandenoever/qml-rust/?branch=notify#07efdfac)
   Compiling custom_derive v0.1.7
   Compiling winapi v0.2.8
   Compiling clipboard v0.2.0
error[E0449]: unnecessary visibility qualifier
  --> /Users/viktorv/.cargo/registry/src/github.com-1ecc6299db9ec823/clipboard-0.2.0/src/osx_clipboard.rs:34:5
   |
34 |     pub fn new() -> Result<OSXClipboardContext, Box<Error>> {
   |     ^ `pub` not needed here

error[E0449]: unnecessary visibility qualifier
  --> /Users/viktorv/.cargo/registry/src/github.com-1ecc6299db9ec823/clipboard-0.2.0/src/osx_clipboard.rs:45:5
   |
45 |     pub fn get_contents(&mut self) -> Result<String, Box<Error>> {
   |     ^ `pub` not needed here

error[E0449]: unnecessary visibility qualifier
  --> /Users/viktorv/.cargo/registry/src/github.com-1ecc6299db9ec823/clipboard-0.2.0/src/osx_clipboard.rs:65:5
   |
65 |       pub fn set_contents(&mut self, data: String) -> Result<(), Box<Error>> {
   |  _____^ starting here...
66 | |         let string_array = NSArray::from_vec(vec![NSString::from_str(&data)]);
67 | |         let _: usize = unsafe { msg_send![self.pasteboard, clearContents] };
68 | |         let success: bool = unsafe { msg_send![self.pasteboard, writeObjects:string_array] };
69 | |         return if success { Ok(()) } else {
70 | |             Err(err("NSPasteboard#writeObjects: returned false"))
71 | |         }
72 | |     }
   | |_____^ ...ending here: `pub` not needed here

error: aborting due to 3 previous errors

error: Could not compile `clipboard`.
Build failed, waiting for other jobs to finish...
error: build failed

Use password generator like xkcdpass

Throught 20 years of effort, we've successfully trained everyone to use passwords that are hard for humans to remember, but easy for computers to guess.

XKCD

We can use the implementation on python xkcdpass or make our own, but the idea is to use passphrases insted passwords.

Thumbs up if you like this.

LICENSE file?

Is there a license for this project? Either way, can one be added to the repo explicitly? Thanks.

Support custom PASSWORD_STORE_DIR

I'm getting endless error: RecvError messages, suspecting that ripasso doesn't check the custom PASSWORD_STORE_DIR environment variable (see man pass), e.g.

$ echo $PASSWORD_STORE_DIR
/Users/rafi/docs/pass/

Gopass resolves it nicely in pass.go#L167-L171

Create a status bar

Currently ripasso doesn't give users any feedback on what's happening when copying the passwords to the copy buffer or doing git commands.

If we had a status bar then we could give some feedback there.

Does not build on osx

Similar error message to #10

Cargo output

> cargo build --release --verbose
       Fresh bitflags v0.9.1
       Fresh libc v0.2.30
       Fresh winapi-build v0.1.1
       Fresh glob v0.2.11
       Fresh bitflags v0.7.0
       Fresh gcc v0.3.54
       Fresh malloc_buf v0.0.6
       Fresh filetime v0.1.10
       Fresh cmake v0.1.25
       Fresh custom_derive v0.1.7
       Fresh block v0.1.6
       Fresh pkg-config v0.3.9
       Fresh conv v0.3.3
       Fresh fsevent-sys v0.1.6
       Fresh objc v0.2.2
       Fresh cfg-if v0.1.2
       Fresh winapi v0.2.8
       Fresh lazy_static v0.2.8
       Fresh kernel32-sys v0.2.2
       Fresh fsevent v0.2.16
       Fresh objc_id v0.1.0
       Fresh walkdir v0.1.8
       Fresh objc-foundation v0.1.1
       Fresh qml v0.0.9 (https://github.com/vandenoever/qml-rust/?branch=notify#8b6b9caa)
       Fresh notify v4.0.1
       Fresh clipboard v0.3.0
       Fresh libgpg-error-sys v0.2.3
       Fresh gpg-error v0.2.2
       Fresh gpgme-sys v0.6.1 (https://github.com/johnschug/rust-gpgme#8fdd740d)
       Fresh gpgme v0.6.1 (https://github.com/johnschug/rust-gpgme#8fdd740d)
   Compiling ripasso v0.0.1 (file:///Users/daniel/Desktop/home_dir/other_peoples_code/ripasso)
     Running `rustc --crate-name ripasso src/main.rs --crate-type bin --emit=dep-info,link -C opt-level=3 -C metadata=89f0507e41834923 -C extra-filename=-89f0507e41834923 --out-dir /Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps -L dependency=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps --extern notify=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libnotify-7c1a932b551568a8.rlib --extern clipboard=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libclipboard-a0c34ef32ca9ad23.rlib --extern qml=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libqml-410c4b62b38b2d60.rlib --extern glob=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libglob-bce596da03b5dda0.rlib --extern gpgme=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libgpgme-34804575dc8ae039.rlib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/qml-17794b8715ccc1ac/out/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/qml-17794b8715ccc1ac/out/build/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/libgpg-error-sys-bbae17af317da19c/out/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/gpgme-sys-69907d687801d0e4/out/lib`
warning: unused variable: `e`
  --> src/pass.rs:31:17
   |
31 |             Err(e) => {
   |                 ^
   |
   = note: #[warn(unused_variables)] on by default

warning: unused result which must be used
  --> src/pass.rs:45:9
   |
45 |         load_passwords(&dir, &tx);
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: #[warn(unused_must_use)] on by default

warning: unused result which must be used
  --> src/pass.rs:46:9
   |
46 |         watch_passwords(&dir, tx);
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: #[warn(unused_must_use)] on by default

warning: unused import: `std::fs::File`
  --> src/main.rs:16:5
   |
16 | use std::fs::File;
   |     ^^^^^^^^^^^^^
   |
   = note: #[warn(unused_imports)] on by default

warning: method `copyToClipboard` should have a snake case name such as `copy_to_clipboard`
  --> src/main.rs:55:5
   |
55 | /     pub fn copyToClipboard(&mut self, i: i32) -> Option<&QVariant> {
56 | |         // Open password file
57 | |         let password = self.get_password(i).password().unwrap();
58 | |
...  |
71 | |
72 | |     }
   | |_____^
   |
   = note: #[warn(non_snake_case)] on by default

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-m64" "-L" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/ripasso-89f0507e41834923.0.o" "-o" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/ripasso-89f0507e41834923" "-Wl,-dead_strip" "-nodefaultlibs" "-L" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-F" "/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib" "-L" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/qml-17794b8715ccc1ac/out/lib" "-L" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/qml-17794b8715ccc1ac/out/build/lib" "-L" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/libgpg-error-sys-bbae17af317da19c/out/lib" "-L" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/gpgme-sys-69907d687801d0e4/out/lib" "-L" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libqml-410c4b62b38b2d60.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libgpgme-34804575dc8ae039.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libconv-b6465be8a6a57fdc.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libnotify-7c1a932b551568a8.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libfiletime-b62daab835d43c76.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libclipboard-a0c34ef32ca9ad23.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/liblazy_static-82d425e869035268.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libcfg_if-d9096fb133fab03f.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libgpgme_sys-d51332463238ec07.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libglob-bce596da03b5dda0.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libwalkdir-78071a89f3a6cc06.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libbitflags-750c808327703e7c.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libcustom_derive-f26eb445807806b6.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libgpg_error-ecb73eacc5cd04fa.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/liblibgpg_error_sys-336b52b858ddce22.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libfsevent-b9e8fc34ccd11a6d.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libfsevent_sys-c79612aaaa1f7e2e.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libbitflags-d11cff7f1eb40828.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libobjc_foundation-fe31a87e5b6171fe.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libblock-b17480db4b888723.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libobjc_id-8df806905a26ca47.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libobjc-b0e499224026e919.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libmalloc_buf-ac712ddfd8de90de.rlib" "/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/liblibc-66fc59ffdcb6b9d4.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd-d19edcdb8b3582f0.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libpanic_unwind-35809200ab841b7b.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libunwind-dd5cb334048ac204.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/librand-eb0e42c8ae609eea.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcollections-6fcbe3ecfbfa6629.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc-7f2c52501770c1c7.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liballoc_jemalloc-ea49ffd3fee5264c.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/liblibc-4ac31620c28c3400.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libstd_unicode-7e35037032e227eb.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcore-10c94a1f2bd23f41.rlib" "/Users/daniel/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-1afcf087346e8edb.rlib" "-l" "c++" "-framework" "QtQuick" "-framework" "QtQml" "-framework" "QtNetwork" "-framework" "QtSvg" "-framework" "QtWidgets" "-framework" "QtGui" "-framework" "QtCore" "-framework" "AppKit" "-framework" "CoreServices" "-framework" "CoreServices" "-framework" "Foundation" "-l" "System" "-l" "objc" "-l" "objc" "-l" "objc" "-l" "System" "-l" "pthread" "-l" "c" "-l" "m"
  = note: Undefined symbols for architecture x86_64:
            "_dos_qabstractlistmodel_beginResetModel", referenced from:
                qml::qabstactlistmodel::QListModel::set_data::h04c4d3e7738d2520 in libqml-410c4b62b38b2d60.rlib(qml-410c4b62b38b2d60.0.o)
            "_dos_qabstractlistmodel_endResetModel", referenced from:
                qml::qabstactlistmodel::QListModel::set_data::h04c4d3e7738d2520 in libqml-410c4b62b38b2d60.rlib(qml-410c4b62b38b2d60.0.o)
          ld: symbol(s) not found for architecture x86_64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)
          

error: aborting due to previous error

error: Could not compile `ripasso`.

Caused by:
  process didn't exit successfully: `rustc --crate-name ripasso src/main.rs --crate-type bin --emit=dep-info,link -C opt-level=3 -C metadata=89f0507e41834923 -C extra-filename=-89f0507e41834923 --out-dir /Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps -L dependency=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps --extern notify=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libnotify-7c1a932b551568a8.rlib --extern clipboard=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libclipboard-a0c34ef32ca9ad23.rlib --extern qml=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libqml-410c4b62b38b2d60.rlib --extern glob=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libglob-bce596da03b5dda0.rlib --extern gpgme=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/deps/libgpgme-34804575dc8ae039.rlib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L framework=/Users/daniel/Desktop/home_dir/brew/Cellar/qt/5.9.1/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/qml-17794b8715ccc1ac/out/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/qml-17794b8715ccc1ac/out/build/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/libgpg-error-sys-bbae17af317da19c/out/lib -L native=/Users/daniel/Desktop/home_dir/other_peoples_code/ripasso/target/release/build/gpgme-sys-69907d687801d0e4/out/lib` (exit code: 101)

Version info:

> cargo --version
cargo 0.19.0 (28d1d60d4 2017-05-16)
> sw_vers
ProductName:	Mac OS X
ProductVersion:	10.12.6
BuildVersion:	16G29
> brew info qt5
qt: stable 5.9.1, HEAD [keg-only]
...

Possibly relevant environment variables

ALTERNATE_EDITOR vim
Apple_PubSub_Socket_Render /private/tmp/com.apple.launchd.HPUAtPLCUm/Render
BREW_DIR /Users/daniel/Desktop/home_dir/brew
CMD_DURATION 34797
COLUMNS 159
COMMAND_MODE unix2003
COMPUTE_ENGINE_SERVER 35.197.44.69
CPPFLAGS -I/Users/daniel/Desktop/home_dir/brew/opt/qt/include
DBUS_LAUNCHD_SESSION_BUS_SOCKET /private/tmp/com.apple.launchd.UY1oPcBRsf/unix_domain_listener
EDITOR emacsclient
FISH_VERSION 2.5.0
HOME /Users/daniel
HOMEBREW_CASK_OPTS '--appdir=~/Applications'
HOMEBREW_NO_ANALYTICS 1
HOME_DIR /Users/daniel/Desktop/home_dir
IFS \n\ \t
INFOPATH /Users/daniel/Desktop/home_dir/brew/share/info/
LANG en_US.UTF-8
LC_CTYPE en_US.UTF-8
LDFLAGS -L/Users/daniel/Desktop/home_dir/brew/opt/qt/lib
LINES 48
LOGNAME daniel
MANPATH /Users/daniel/Desktop/home_dir/brew/share/man
PATH /Users/daniel/Desktop/home_dir/other_peoples_code/google-clo…
PKG_CONFIG_PATH /Users/daniel/Desktop/home_dir/brew/opt/qt/lib/pkgconfig
PWD /Users/daniel/Desktop/home_dir/other_peoples_code/ripasso
PYTHONPATH /Users/daniel/Desktop/home_dir/projects
SHELL /bin/bash
SHLVL 5
SSH_AUTH_SOCK /Users/daniel/.byobu/.ssh-agent
TERM screen-256color
TMUX_PANE '%2'
USER daniel
VISUAL emacsclient
XPC_FLAGS 0x0
XPC_SERVICE_NAME 0
_ set
__CF_USER_TEXT_ENCODING 0x1F7:0x0:0x0
apparent_sdk_dir /Users/daniel/Desktop/home_dir/other_peoples_code/google-clo…
bin_path /Users/daniel/Desktop/home_dir/other_peoples_code/google-clo…
dirprev '/Users/daniel/Desktop/home_dir'  '/Users/daniel/Desktop/home_di'…
old_dir /Users/daniel/Desktop/home_dir/other_peoples_code/ripasso
script_link /Users/daniel/Desktop/home_dir/other_peoples_code/google-clo…
sdk_dir /Users/daniel/Desktop/home_dir/other_peoples_code/google-clo…
status 101
umask 0022
version 2.5.0

Thanks!

RecvError in console and crash on macOS

I run cargo run then the UI appears. I type something in, hit enter and it crashes. Sometimes with different errors

1:

...
error: RecvError
error: RecvError
error: RecvError
error: RecvError
thread '<unnamed>' panicked at 'cannot access stdout during shutdown', src/libcore/option.rs:715
note: Run with `RUST_BACKTRACE=1` for a backtrace.

2:

...
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error:thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 0', src/libcollections/vec.rs:1392
note: Run with `RUST_BACKTRACE=1` for a backtrace.
fatal runtime error: failed to initiate panic, error 5
Abort trap: 6

3:

...
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvErrfatal runtime error: or
failed to initiate panic, error 5
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
error: RecvError
Abort trap: 6
$ rustc --version
rustc 1.16.0
$ system_profiler SPSoftwareDataType

Software:

    System Software Overview:

      System Version: macOS 10.12.4 (16E195)
      Kernel Version: Darwin 16.5.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Computer Name: lap
      User Name: Viktor (viktor)
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 1 day 3:09

Thread 'main' panicked at 'called `Result::unwrap()`

I experience this problem in ripasso-cursive when i press enter on a password file to copy and it asks for the gpg password. After entering the password and pressing enter the program exits with the error code

thread 'main' panicked at 'called Result::unwrap() on an Err value: XcbConn(ClosedParseErr)', src/libcore/result.rs:999:5

Full stacktrace is

0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
1: std::sys_common::backtrace::print
2: std::panicking::default_hook::{{closure}}
3: std::panicking::default_hook
4: std::panicking::rust_panic_with_hook
5: std::panicking::continue_panic_fmt
6: rust_begin_unwind
7: core::panicking::panic_fmt
8: core::result::unwrap_failed
at /usr/src/rustc-1.36.0/src/libcore/macros.rs:18
9: core::result::Result<T,E>::unwrap
at /usr/src/rustc-1.36.0/src/libcore/result.rs:800
10: ripasso_cursive::copy
at cursive/src/main.rs:80
11: core::ops::function::FnMut::call_mut
at /usr/src/rustc-1.36.0/src/libcore/ops/function.rs:148
12: cursive::event::Callback::from_fn_mut::{{closure}}
at /home/heplaphon/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.12.0/src/event.rs:139
13: cursive::event::Callback::from_fn::{{closure}}
at /home/heplaphon/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.12.0/src/event.rs:124
14: <alloc::boxed::Box as core::ops::function::Fn>::call
at /usr/src/rustc-1.36.0/src/liballoc/boxed.rs:718
15: cursive::cursive::Cursive::on_ignored_event
at /home/heplaphon/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.12.0/src/cursive.rs:738
16: cursive::cursive::Cursive::on_event
at /home/heplaphon/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.12.0/src/cursive.rs:781
17: cursive::cursive::Cursive::step
at /home/heplaphon/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.12.0/src/cursive.rs:878
18: cursive::cursive::Cursive::run
at /home/heplaphon/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.12.0/src/cursive.rs:858
19: ripasso_cursive::main
at cursive/src/main.rs:606
20: std::rt::lang_start::{{closure}}
at /usr/src/rustc-1.36.0/src/libstd/rt.rs:64
21: std::panicking::try::do_call
22: __rust_maybe_catch_panic
23: std::rt::lang_start_internal
24: std::rt::lang_start
at /usr/src/rustc-1.36.0/src/libstd/rt.rs:64
25: main
26: __libc_start_main
27: _start

verify signed git commit's

If a git commit have been signed, we should verify the status of that signature, and display this to the end user, maybe with a green/red 🔒 character.

Issues with MacOSX install instructions

I suspect that the preliminary brew install needs to include rust.

Having done that my experience was:

bash-3.2$ cd ripasso
bash-3.2$ cargo run
error: a bin target must be available for `cargo run`

Which I, maybe, resolved by doing:

bash-3.2$ cd gtk/src
bash-3.2$ cargo run

But as you have probably figured out I've never used rust before.

It complains about being unable to find res/logo.svg. I found that nearby, so I could work around it. And, it seems to hang.

But, then i discover there is an application running represented with a terminal icon including the text "exec".

Bringing that to the foreground a get a simple window layout including a lock (which is closed).

If I type something my pass entries start to appear.

Can't figure out how to open any of them.

Meanwhile my gpg agent is in a state that means the the usual pass can display entries.

Doesn't build on Fedora 26

I tried to build this with rust stable and nightly, with cargo run and cargo build --release, each time with the same error:

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/ripasso-6fcaf62d2757beae.0.o" "-o" "/home/jcgruenhage/dev/ripasso/target/debug/deps/ripasso-6fcaf62d2757beae" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/jcgruenhage/dev/ripasso/target/debug/deps" "-L" "/home/jcgruenhage/dev/ripasso/target/debug/build/backtrace-sys-4149e7a061a59e6e/out/.libs" "-L" "/home/jcgruenhage/dev/ripasso/target/debug/build/libgpg-error-sys-1ebfdd693133fd33/out/lib" "-L" "/home/jcgruenhage/dev/ripasso/target/debug/build/gpgme-sys-a78e37194fe7617d/out/lib" "-L" "/home/jcgruenhage/dev/ripasso/target/debug/build/qml-608521da418259bd/out/lib" "-L" "/home/jcgruenhage/dev/ripasso/target/debug/build/qml-608521da418259bd/out/build/lib" "-L" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libqml-228dfb52ab88d692.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libgpgme-31a0dafda1f4c5b5.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libconv-ce199667481badc0.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libnotify-68657dfd008d2a88.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libfiletime-86befbc709ac9a12.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libclipboard-b2b560b84b6aefc9.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/liblazy_static-76398561647a6df6.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libbitflags-153d136e2501a57c.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libgpgme_sys-e7c11ef12da05bbf.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libglob-eb24eb5ddd1a61cf.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libmio-4301b2f6a648a09d.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libmiow-aa7238aaa598199a.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libnix-6f80c5935536f1c4.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libbytes-5b6d322d0d6fa96b.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libslab-a38bf37318af1194.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libwinapi-11d0b48a0ae45225.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libwalkdir-ecbff5206c1fcdc1.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libcustom_derive-42d88becfa34df8b.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libgpg_error-24f4023ecf84989e.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/liblibgpg_error_sys-9d029571d7e8524f.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libbitflags-b85f2a4522dd4ee2.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libtime-e04627e13f29b853.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libbitflags-dff0f5d8368a9086.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libnet2-0c4e69f42634796f.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libinotify-e3d24fb7e3cdc54a.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libx11_clipboard-1d87f19a8b96f431.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libxcb-2a17d04e047a9c47.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/liblog-daaa699d7c7fe291.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/liberror_chain-4a7bcc9cb68d5e79.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libbacktrace-83032e2e7a13cdd0.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libbacktrace_sys-e9e3d58efed07128.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/libcfg_if-91a619aa86e87545.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/liblibc-795eecfd3e21429f.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-35ad9950c7e5074b.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-fb44afc024bbc636.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-14b8f3202acdad6a.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-20a50a22d4c2b1e9.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-b479831207997444.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-10b591f1a68dd370.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-28913dc5a1e63cd7.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-6ecacccb5bdc4911.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-f4f0ae88f5ad8ad4.rlib" "/home/jcgruenhage/dev/ripasso/target/debug/deps/librustc_demangle-00776132aa1894db.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-bfaa82017ca17cb2.rlib" "/home/jcgruenhage/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-863b57a66ba6c3e1.rlib" "-Wl,-Bdynamic" "-l" "stdc++" "-l" "Qt5Quick" "-l" "Qt5Qml" "-l" "Qt5Network" "-l" "Qt5Svg" "-l" "Qt5Widgets" "-l" "Qt5Gui" "-l" "Qt5Core" "-l" "xcb" "-l" "xcb" "-l" "xcb" "-l" "xcb" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util"
  = note: /home/jcgruenhage/dev/ripasso/target/debug/deps/libqml-228dfb52ab88d692.rlib(qml-228dfb52ab88d692.0.o): In function `qml::qabstactlistmodel::{{impl}}::set_data':
          /home/jcgruenhage/.cargo/git/checkouts/qml-rust-8999a1b9d68f9eb6/8b6b9ca/src/qabstactlistmodel.rs:212: undefined reference to `dos_qabstractlistmodel_beginResetModel'
          /home/jcgruenhage/dev/ripasso/target/debug/deps/libqml-228dfb52ab88d692.rlib(qml-228dfb52ab88d692.0.o): In function `qml::qabstactlistmodel::QListModel::set_data::h272d44f493a211e1':
          qml.cgu-0.rs:(.text._ZN3qml17qabstactlistmodel10QListModel8set_data17h272d44f493a211e1E+0xa0): undefined reference to `dos_qabstractlistmodel_endResetModel'
          collect2: error: ld returned 1 exit status
          

error: aborting due to previous error(s)

error: Could not compile `ripasso`.

Caused by:
  process didn't exit successfully: `rustc --crate-name ripasso src/main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=6fcaf62d2757beae -C extra-filename=-6fcaf62d2757beae --out-dir /home/jcgruenhage/dev/ripasso/target/debug/deps -L dependency=/home/jcgruenhage/dev/ripasso/target/debug/deps --extern clipboard=/home/jcgruenhage/dev/ripasso/target/debug/deps/libclipboard-b2b560b84b6aefc9.rlib --extern gpgme=/home/jcgruenhage/dev/ripasso/target/debug/deps/libgpgme-31a0dafda1f4c5b5.rlib --extern glob=/home/jcgruenhage/dev/ripasso/target/debug/deps/libglob-eb24eb5ddd1a61cf.rlib --extern qml=/home/jcgruenhage/dev/ripasso/target/debug/deps/libqml-228dfb52ab88d692.rlib --extern notify=/home/jcgruenhage/dev/ripasso/target/debug/deps/libnotify-68657dfd008d2a88.rlib -L native=/home/jcgruenhage/dev/ripasso/target/debug/build/backtrace-sys-4149e7a061a59e6e/out/.libs -L native=/home/jcgruenhage/dev/ripasso/target/debug/build/libgpg-error-sys-1ebfdd693133fd33/out/lib -L native=/home/jcgruenhage/dev/ripasso/target/debug/build/gpgme-sys-a78e37194fe7617d/out/lib -L native=/home/jcgruenhage/dev/ripasso/target/debug/build/qml-608521da418259bd/out/lib -L native=/home/jcgruenhage/dev/ripasso/target/debug/build/qml-608521da418259bd/out/build/lib` (exit code: 101)

Add an option to have the files on disk be in an encrypted loopback fs

currently ripassa leaks a large amount of metadata through the files on the filesystem.

site names, account names, when and how often passwords are rotated.

If pass would store the git repository in a small virtual loopback filesystem that it encrypted, then this wouldn't be as bad.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.