A simple password manager written in Rust

Overview

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 (GPG-encrypted files), with a file-watcher event emitter.

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!

If you want to talk to the developers, please join our matrix room here.

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

QT GUI - (unstable)

Screenshot of ripasso-qt This is mostly working, but needs updates.

Build

cargo build -p ripasso-qt

For it to run, you need to be in the qml directory.

cd qml
cargo run

GTK GUI - (WIP)

Screenshot of ripasso-gtk Build

cargo build -p ripasso-gtk

Install instructions

Arch

TUI version

yay install ripasso-cursive

Fedora

Avaliable in Copr

sudo dnf copr enable atim/ripasso -y

TUI version

sudo dnf install ripasso

GTK version (unstable)

sudo dnf install ripasso-gtk

Qt version (unstable)

sudo dnf install ripasso-qt

Nix

TUI version

nix-env -iA nixpkgs.ripasso-cursive

Mac OS X

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

nix-env -iA nixpkgs.ripasso-cursive

Build instructions

See here

Translation howto

See here

Comments
  • allow custom gpgme::PassphraseRequest callback for GPGME operations

    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 https://github.com/gpg-rs/gpgme/issues/27 against gpg-rs to track this.
    enhancement 
    opened by khimaros 14
  • Do not assume the remote is called

    Do not assume the remote is called "origin"

    [user@ripasso .password-store]$ git remote -v
    local-bare	/home/user/git/password-store/ (fetch)
    local-bare	/home/user/git/password-store/ (push)
    
     ┌───────────────────────────────────────────────┤ Ripasso ├───────────────────────────────────────────────┐
     │ _______________________________________________________________________________________________________ │
     │ Gmail                                                                        Test 2019-12-28            │
     │           ┌───────────────────────────────────┤ Error ├────────────────────────────────────┐            │
     │           │ Git(Error { code: -3, klass: 7, message: "remote \'origin\' does not exist" }) │            │
     │           │                                                                                │            │
     │           │                                                                           <Ok> │            │
     │           └────────────────────────────────────────────────────────────────────────────────┘            │
     │                                                                                                         │
     └─────────────────────────────────────────────────────────────────────────────────────────────────────────┘
     F1: Menu |
    
    bug 
    opened by labanskoller 7
  • Don't go through all git objects?

    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…

    enhancement 
    opened by nielsk 7
  • Use password generator like xkcdpass

    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.

    opened by mijailr 7
  • https://www.passwordstore.org/ compatible clients still lists gopass

    https://www.passwordstore.org/ compatible clients still lists gopass

    I noticed the https://www.passwordstore.org/ still links to https://github.com/cortex/gopass but does not link ripasso. I haven't joined their dev mailing list but wanted to open an issue here if you have time to update the link.

    documentation 
    opened by ghost 6
  • Doesn't build on Fedora 26

    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)
    
    opened by jcgruenhage 4
  • error: Could not compile `clipboard` on macOS

    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
    
    opened by voroninman 4
  • lots of usize/u32 issues?

    lots of usize/u32 issues?

    This is the result of me trying to build ripasso-cursive via the nix package (nixos-unstable channel)

       Compiling ripasso-cursive v0.5.1 (/build/source/cursive)
       Compiling unic-langid v0.9.0
       Compiling quote v1.0.6
       Compiling jobserver v0.1.21
       Compiling xcb v0.8.2
       Compiling mio v0.7.0
       Compiling signal-hook-registry v1.2.0
       Compiling time v0.1.43
       Compiling parking_lot_core v0.7.2
       Compiling cstr-argument v0.1.1
       Compiling aho-corasick v0.7.10
       Compiling smallvec v0.6.13
       Compiling lexical-core v0.6.2
       Compiling gettext v0.4.0
       Compiling crossbeam-channel v0.4.2
       Compiling toml v0.5.6
       Compiling cc v1.0.54
       Compiling const-random-macro v0.1.8
       Compiling rand_core v0.5.1
       Compiling signal-hook v0.1.15
       Compiling parking_lot v0.10.2
       Compiling unicode-normalization v0.1.9
       Compiling regex v1.3.9
       Compiling chrono v0.4.11
       Compiling libz-sys v1.0.25
       Compiling openssl-sys v0.9.58
       Compiling libssh2-sys v0.2.17
       Compiling libgit2-sys v0.12.9+1.0.1
       Compiling const-random v0.1.8
       Compiling rand_chacha v0.2.2
       Compiling darling_core v0.10.2
       Compiling gpgme v0.9.2
       Compiling crossterm v0.17.7
       Compiling idna v0.2.0
    error[E0308]: mismatched types
      --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/bhcomp.rs:62:24
       |
    62 |     let bytes = bits / Limb::BITS;
       |                        ^^^^^^^^^^ expected `usize`, found `u32`
    
    error[E0277]: cannot divide `usize` by `u32`
      --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/bhcomp.rs:62:22
       |
    62 |     let bytes = bits / Limb::BITS;
       |                      ^ no implementation for `usize / u32`
       |
       = help: the trait `Div<u32>` is not implemented for `usize`
    
    error[E0308]: mismatched types
       --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/bigcomp.rs:158:55
        |
    158 |     let nlz = den.leading_zeros().wrapping_sub(wlz) & (u32::BITS - 1);
        |                                                       ^^^^^^^^^^^^^^^ expected `usize`, found `u32`
    
    error[E0277]: no implementation for `usize & u32`
       --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/bigcomp.rs:158:53
        |
    158 |     let nlz = den.leading_zeros().wrapping_sub(wlz) & (u32::BITS - 1);
        |                                                     ^ no implementation for `usize & u32`
        |
        = help: the trait `BitAnd<u32>` is not implemented for `usize`
    
    error[E0308]: mismatched types
       --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/bigcomp.rs:176:40
        |
    176 |         let (q, r) = shift.ceil_divmod(Limb::BITS);
        |                                        ^^^^^^^^^^ expected `usize`, found `u32`
        |
    help: you can convert a `u32` to a `usize` and panic if the converted value doesn't fit
        |
    176 |         let (q, r) = shift.ceil_divmod(Limb::BITS.try_into().unwrap());
        |                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:2071:27
         |
    2071 |     let rs = Limb::BITS - s;
         |                           ^ expected `u32`, found `usize`
    
    error[E0277]: cannot subtract `usize` from `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:2071:25
         |
    2071 |     let rs = Limb::BITS - s;
         |                         ^ no implementation for `u32 - usize`
         |
         = help: the trait `Sub<usize>` is not implemented for `u32`
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1049:42
         |
    1049 |     let mut count = index.saturating_mul(Limb::BITS);
         |                                          ^^^^^^^^^^ expected `usize`, found `u32`
         |
    help: you can convert a `u32` to a `usize` and panic if the converted value doesn't fit
         |
    1049 |     let mut count = index.saturating_mul(Limb::BITS.try_into().unwrap());
         |                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1064:28
         |
    1064 |     Limb::BITS.checked_mul(x.len())
         |                            ^^^^^^^ expected `u32`, found `usize`
         |
    help: you can convert a `usize` to a `u32` and panic if the converted value doesn't fit
         |
    1064 |     Limb::BITS.checked_mul(x.len().try_into().unwrap())
         |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1065:22
         |
    1065 |         .map(|v| v - nlz)
         |                      ^^^ expected `u32`, found `usize`
    
    error[E0277]: cannot subtract `usize` from `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1065:20
         |
    1065 |         .map(|v| v - nlz)
         |                    ^ no implementation for `u32 - usize`
         |
         = help: the trait `Sub<usize>` is not implemented for `u32`
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1066:20
         |
    1066 |         .unwrap_or(usize::max_value())
         |                    ^^^^^^^^^^^^^^^^^^ expected `u32`, found `usize`
         |
    help: you can convert a `usize` to a `u32` and panic if the converted value doesn't fit
         |
    1066 |         .unwrap_or(usize::max_value().try_into().unwrap())
         |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1064:5
         |
    1060 |   pub fn bit_length(x: &[Limb]) -> usize {
         |                                    ----- expected `usize` because of return type
    ...
    1064 | /     Limb::BITS.checked_mul(x.len())
    1065 | |         .map(|v| v - nlz)
    1066 | |         .unwrap_or(usize::max_value())
         | |______________________________________^ expected `usize`, found `u32`
         |
    help: you can convert a `u32` to a `usize` and panic if the converted value doesn't fit
         |
    1064 ~     Limb::BITS.checked_mul(x.len())
    1065 +         .map(|v| v - nlz)
    1066 +         .unwrap_or(usize::max_value()).try_into().unwrap()
         |
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1091:23
         |
    1091 |     debug_assert!(n < bits && n != 0);
         |                       ^^^^ expected `usize`, found `u32`
         |
    help: you can convert a `u32` to a `usize` and panic if the converted value doesn't fit
         |
    1091 |     debug_assert!(n < bits.try_into().unwrap() && n != 0);
         |                       ~~~~~~~~~~~~~~~~~~~~~~~~
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1098:25
         |
    1098 |     let lshift = bits - n;
         |                         ^ expected `u32`, found `usize`
    
    error[E0277]: cannot subtract `usize` from `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1098:23
         |
    1098 |     let lshift = bits - n;
         |                       ^ no implementation for `u32 - usize`
         |
         = help: the trait `Sub<usize>` is not implemented for `u32`
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1140:19
         |
    1140 |     let rem = n % bits;
         |                   ^^^^ expected `usize`, found `u32`
    
    error[E0277]: cannot mod `usize` by `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1140:17
         |
    1140 |     let rem = n % bits;
         |                 ^ no implementation for `usize % u32`
         |
         = help: the trait `Rem<u32>` is not implemented for `usize`
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1141:19
         |
    1141 |     let div = n / bits;
         |                   ^^^^ expected `usize`, found `u32`
    
    error[E0277]: cannot divide `usize` by `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1141:17
         |
    1141 |     let div = n / bits;
         |                 ^ no implementation for `usize / u32`
         |
         = help: the trait `Div<u32>` is not implemented for `usize`
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1197:23
         |
    1197 |     debug_assert!(n < bits);
         |                       ^^^^ expected `usize`, found `u32`
         |
    help: you can convert a `u32` to a `usize` and panic if the converted value doesn't fit
         |
    1197 |     debug_assert!(n < bits.try_into().unwrap());
         |                       ~~~~~~~~~~~~~~~~~~~~~~~~
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1207:25
         |
    1207 |     let rshift = bits - n;
         |                         ^ expected `u32`, found `usize`
    
    error[E0277]: cannot subtract `usize` from `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1207:23
         |
    1207 |     let rshift = bits - n;
         |                       ^ no implementation for `u32 - usize`
         |
         = help: the trait `Sub<usize>` is not implemented for `u32`
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1259:19
         |
    1259 |     let rem = n % bits;
         |                   ^^^^ expected `usize`, found `u32`
    
    error[E0277]: cannot mod `usize` by `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1259:17
         |
    1259 |     let rem = n % bits;
         |                 ^ no implementation for `usize % u32`
         |
         = help: the trait `Rem<u32>` is not implemented for `usize`
    
    error[E0308]: mismatched types
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1260:19
         |
    1260 |     let div = n / bits;
         |                   ^^^^ expected `usize`, found `u32`
    
    error[E0277]: cannot divide `usize` by `u32`
        --> /build/ripasso-cursive-0.5.1-vendor.tar.gz/lexical-core/src/atof/algorithm/math.rs:1260:17
         |
    1260 |     let div = n / bits;
         |                 ^ no implementation for `usize / u32`
         |
         = help: the trait `Div<u32>` is not implemented for `usize`
    
    Some errors have detailed explanations: E0277, E0308.
    For more information about an error, try `rustc --explain E0277`.
    error: could not compile `lexical-core` due to 27 previous errors
    warning: build failed, waiting for other jobs to finish...
    error: build failed
    
    opened by colemickens 3
  • "ripasso" man page file is a 64-bit ELF executable in the official atim:ripasso Copr repo

    man ripasso has very unexpected results... ;)

    user@ripasso ~]$ MANPAGER=head man ripasso-cursive
    No manual entry for ripasso-cursive
    [user@ripasso ~]$ MANPAGER=head man ripasso
    ELF...........>......R@@K@8
                               @!
    @@@ ààà.............øHøH...PPP99......ààà+.......+..............
         *     *&°’X6XFXF0üüüDD         *    *0À
    Påtd||QåtdRåtd                                   *
    *à%à%......../lib64/ld‐linux‐x86‐64.so.2....GNUGNUÀon¢å%°vb’×......................T»b×ý¸Ò...Æ
    
    ,"Ë"^z..Üíä
    ........¥.......».......¤ñK.....¬7   F:©h"..*libdl.so.2_ITM_deregisterTM‐
    CloneTable__gmon_start___ITM_registerTMCloneTabledladdr‐
    [user@ripasso ~]$ whereis ripasso
    ripasso: /usr/share/man/man1/ripasso.1.gz
    [user@ripasso ~]$ file /usr/share/man/man1/ripasso.1.gz
    /usr/share/man/man1/ripasso.1.gz: gzip compressed data, max compression, from Unix, original size 414592
    [user@ripasso ~]$ cp /usr/share/man/man1/ripasso.1.gz .
    [user@ripasso ~]$ gzip -d ripasso.1.gz 
    [user@ripasso ~]$ file ripasso.1 
    ripasso.1: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=14c083048a6f0b886ea20be50b25b0766227d788, not stripped, too many notes (256)
    [user@ripasso ~]$ dnf list installed ripasso
    Installed Packages
    ripasso.x86_64                                                                              0.3.0-1.fc30                                                                               @copr:copr.fedorainfracloud.org:atim:ripasso
    
    opened by labanskoller 3
  • If you have more password in the list than the screen is high, then you can't scroll

    If you have more password in the list than the screen is high, then you can't scroll

    If you have more passwords than screen height and try to move the cursor down below the lowest one, then it disappears out of sight.

    Caused by this bug in cursive: https://github.com/gyscos/cursive/issues/365

    bug upstream 
    opened by alexanderkjall 3
  • A quick start

    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.

    documentation 
    opened by joyarzun 3
  • Unable to create a new password-store with sig-keys configured

    Unable to create a new password-store with sig-keys configured

    When trying to create a new password store and entering values for the signature pgp keys and pressing save, then nothing seem to happen.

    What's really happening is that a errorbox dialog pops up, with the error message "problem reading .gpg-id.sig, and strict signature checking was asked for" and is automatically closed by a ui.pop_layer().

    bug 
    opened by alexanderkjall 0
  • Ripasso is not working with git submodule

    Ripasso is not working with git submodule

    My pass folder contains only submodule from git. My assumtion is, cause of this ripasso fails to start with the message: The password store is backed by a git repository, but there is passwords there that's not in git. Please add them, otherwise they might get lost. Unfortunately I wasn't able to find anything in the issues or something regarding ripasso and the usage of git submodule.

    OS: Arch Linux ripasso build from the master branch (sha:c10e163) with https://github.com/cortex/ripasso/blob/master/BUILD_INSTRUCTIONS.md

    What I expected: Ripasso starting correctly

    What happened: The password store is backed by a git repository, but there is passwords there that's not in git. Please add them, otherwise they might get lost.

    enhancement 
    opened by nachevn 1
  • Fedora 34 copr dependencies

    Fedora 34 copr dependencies

    Error: 
     Problem: conflicting requests
      - nothing provides libQt5Core.so.5(Qt_5.13.2_PRIVATE_API)(64bit) needed by ripasso-qt-0.4.0-1.fc33.x86_64
    

    currently on fedora 34, seems like the dependencies just need to be updated

    opened by theotheroracle 0
  • error: failed to locate password directory.

    error: failed to locate password directory.

    
    $ ripasso
    
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Generic("failed to locate password directory")', cursive/src/main.rs:1383:73                                      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    $ export RUST_BACKTRACE=full && ripasso
    
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Generic("failed to locate password directory")', cursive/src/main.rs:1383:73                                      stack backtrace:                                                 0:       0x5a2de707c0 - <unknown>                             1:       0x5a2de8881c - <unknown>                             2:       0x5a2de6ca60 - <unknown>                             3:       0x5a2de71c58 - <unknown>                             4:       0x5a2de71928 - <unknown>                             5:       0x5a2de72368 - <unknown>
       6:       0x5a2de71f08 - <unknown>                             7:       0x5a2de708c4 - <unknown>                             8:       0x5a2de71e70 - <unknown>                             9:       0x5a2de87894 - <unknown>
      10:       0x5a2de877e0 - <unknown>                            11:       0x5a2d97ce54 - <unknown>                            12:       0x5a2d9b34e4 - <unknown>                            13:       0x5a2d9d083c - <unknown>
      14:       0x5a2d97fdb0 - <unknown>                            15:       0x5a2d936464 - <unknown>                            16:       0x5a2de72510 - <unknown>
      17:       0x5a2d93643c - <unknown>
      18:       0x5a2d9b5fa8 - <unknown>                            19:       0x71d625f784 - <unknown>                            20:                0x0 - <unknown>
    

    I am guessing that this may be due to my password-store not being in the default location (~/.password-store), mine is located at ~/.pass instead, this is done by exporting the PASSWORD_STORE_DIR variable. Could it be that ripasso is not looking for this variables existence?? and instead looking for its default path??

    Thanks again, this looks like just what I need! (currently I use fzf to list/select my entries)

    opened by nerd190 2
Owner
Joakim Lundborg
Joakim Lundborg
A cryptographically verifiable code review system for the cargo (Rust) package manager.

image credit cargo-crev A cryptographically verifiable code review system for the cargo (Rust) package manager. Introduction Crev is a language and ec

crev - Code REView system 1.8k Jan 5, 2023
Semi-automatic OSINT framework and package manager

sn0int sn0int (pronounced /snoɪnt/) is a semi-automatic OSINT framework and package manager. It was built for IT security professionals and bug hunter

null 1.4k Dec 31, 2022
A fast, simple, recursive content discovery tool written in Rust.

A simple, fast, recursive content discovery tool written in Rust ?? Releases ✨ Example Usage ✨ Contributing ✨ Documentation ?? ?? What the heck is a f

epi 3.6k Dec 30, 2022
simple multi-threaded port scanner written in rust

knockson simple multi-threaded port scanner written in rust Install Using AUR https://aur.archlinux.org/packages/knockson-bin/ yay -Syu knockson-bin M

Josh Münte 4 Oct 5, 2022
Simple prepender virus written in Rust

Linux.Fe2O3 This is a POC ELF prepender written in Rust. I like writting prependers on languages that I'm learning and find interesting. As for the na

Guilherme Thomazi Bonicontro 91 Dec 9, 2022
A simple allocator written in Rust that manages memory in fixed-size chunks.

Simple Chunk Allocator A simple no_std allocator written in Rust that manages memory in fixed-size chunks/blocks. Useful for basic no_std binaries whe

Philipp Schuster 7 Aug 8, 2022
subscout is a simple, nimble subdomain enumeration tool written in Rust language

subscout is a simple, nimble subdomain enumeration tool written in Rust language. It is designed to help bug bounty hunters, security professionals and penetration testers discover subdomains of a given target domain.

Dom Sec 5 Apr 5, 2023
A simple port scanner built using rust-lang

A simple port scanner built using rust-lang

Krisna Pranav 1 Nov 6, 2021
Simple verification of Rust programs via functional purification in Lean 2(!)

electrolysis About A tool for formally verifying Rust programs by transpiling them into definitions in the Lean theorem prover. Masters thesis: Simple

Sebastian Ullrich 300 Dec 11, 2022
A simple rust library for working with ZIP archives

rust-zip A simple rust library to read and write Zip archives, which is also my pet project for learning Rust. At the moment you can list the files in

Jorge Gorbe Moya 11 Aug 6, 2022
A simple menu to keep all your most used one-liners and scripts in one place

Dama Desktop Agnostic Menu Aggregate This program aims to be a hackable, easy to use menu that can be paired to lightweight window managers in order t

null 47 Jul 23, 2022
A simple scanner that loops through ips and checks if a minecraft server is running on port 25565

scanolotl Scanolotl is a simple scanner that loops through ips and checks if a minecraft server is running on port 25565. Scanolotl can also preform a

JustFr33z 3 Jul 28, 2022
A simple port sniffer(scanner) implementation with 🦀

A simple port sniffer(scanner) implementation with ?? Install from crates.io crago install ports-sniffer From aur: yay -S ports-sniffer Arguments Argu

Anas Elgarhy 8 Oct 10, 2022
A simple command line tool which quickly audits the Disallow entries of a site's robots.txt.

Domo Arigato A simple command line tool which quickly audits the Disallow entries of a site's robots.txt. Disallow entries can be used to stop search

Ember Hext 20 Apr 17, 2023
An esoteric language/compiler written with Rust and Rust LLVM bindings

MeidoLang (メイドラング) A not so useful and esoteric language. The goal of this project was to contain some quirky or novel syntax in a stack-style program

null 0 Dec 24, 2021
link is a command and control framework written in rust

link link is a command and control framework written in rust. Currently in alpha. Table of Contents Introduction Features Feedback Build Process Ackno

null 427 Dec 24, 2022
Multi-threaded Padding Oracle attacks against any service. Written in Rust.

rustpad is a multi-threaded successor to the classic padbuster, written in Rust. It abuses a Padding Oracle vulnerability to decrypt any cypher text or encrypt arbitrary plain text without knowing the encryption key!

Kibouo 76 Dec 16, 2022
OpenSK is an open-source implementation for security keys written in Rust that supports both FIDO U2F and FIDO2 standards.

OpenSK This repository contains a Rust implementation of a FIDO2 authenticator. We developed OpenSK as a Tock OS application. We intend to bring a ful

Google 2.4k Jan 7, 2023
Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs

Alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients*, perfect for self-hosted deploy

Daniel García 21.5k Jan 8, 2023