A simple password manager written in Rust

Related tags

Cryptography ripasso
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
  • Freezes when selecting Manage option

    Freezes when selecting Manage option

    When selecting the Manage option under Stores menu, the UI just freezes. The only thing I could do is force kill the process.

    AFAIK the process doesn't crash or return any error. I couldn't get any debug information though.

    opened by QaidVoid 0
  • 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
Owner
Joakim Lundborg
Joakim Lundborg
The simple password manager for geeks, built with Rust.

Rooster Rooster is a simple password manager for geeks (it works in the terminal). Rooster is made available free of charge. You can support its devel

Conrad Kleinespel 131 Dec 25, 2022
A lightning-fast password generator and manager written in Rust

Passlane A lightning-fast password manager for the command line Features Generate passwords Place the generated password into the clipboard Save previ

Anssi Piirainen 4 Dec 15, 2022
A password manager coded in rust

pasman A password manager coded in rust Install Dependency rust Shell git clone https://github.com/AMTitan/pasman.git cd pasman cargo build --release

Arthur Melton 4 Nov 8, 2021
🐴 RusTOTPony — CLI manager of one-time password generators aka Google Authenticator

?? RusTOTPony CLI manager of time-based one-time password generators. It is a desktop alternative for Google Authenticator. Installation Arch Linux Pa

German Lashevich 23 Jan 5, 2023
The free password manager for power users

The free password manager for power users

null 312 Oct 22, 2022
A terminal-based password manager, generator, and importer/exporter (Firefox, Chrome) backed with a concurrent hashmap

rucksack A terminal-based password manager, generator, and importer/exporter (Firefox, Chrome) backed with a concurrent hashmap Features Password gene

null 6 Jan 18, 2023
CLI password manager with encryption: AES256, Salsa20 and Chacha20, with cross platform and exclusive features

Keep My House (CLI) CLI password manager with encryption: AES256, Salsa20 and Chacha20, with cross platform and exclusive features Features AES256 GCM

null 4 Sep 7, 2023
A Password Manager Using age for Encryption

A Password Manager Using age for Encryption Contents Features Usage Install Import from pass How It Works Features It is inspired by pass. senior's fe

Retirement Home 3 Nov 2, 2023
A pretty simple tool for password generation, written in Rust.

passwdgen A pretty simple tool for password generation, written in Rust. Usage: passwdgen - a pretty simple tool for password generation Usage: passw

Kirill Belolipetsky 9 Feb 19, 2023
Ruo is a dictionary-based password cracker written in rust 🦀 .

Ruo is a dictionary-based password cracker written in rust ?? . The primary purpose is to crack weak hashes/commonly used passwords.

Asjid Kalam 10 Mar 6, 2022
Tool written in Rust to perform Password Spraying attacks against Azure/Office 365 accounts

AzurePasswordSprayer Tool written in Rust to perform Password Spraying attacks against Azure/Office 365 accounts. It is multi threaded and makes no co

Pierre 7 Feb 27, 2024
Master Password in Pure Rust

Master Password •••| This is the Rust version of the original found here. This can be used as a drop-in replacement for the reference C version, offer

Rust India 34 Apr 13, 2022
A Rust port of the password primitives used in Django Project.

Rust DjangoHashers A Rust port of the password primitives used in Django Project. Django's django.contrib.auth.models.User class has a few methods to

Ronaldo Ferreira 52 Nov 17, 2022
A Rust port of the password primitives used in Django Project.

Rust DjangoHashers A Rust port of the password primitives used in Django Project. Django's django.contrib.auth.models.User class has a few methods to

Ronaldo Ferreira 52 Nov 17, 2022
Rust-based password mutator for brute force attacks

PWFuzz-RS A Rust-based password mutator for brute force attacks Disclaimer This tool works, but was mainly an experiment. Please do not expect frequen

Michael Taggart 6 Oct 31, 2022
A very fast Rust tool to crack a password protected PDF (Dangerous ☠️)

DOCBOT A PDF password cracking tool with multi-threading capabilities, featuring password format generators for commonly used patterns and dictionary

Akhil Sharma 3 Mar 22, 2024
An implementation of the OPAQUE password-authenticated key exchange protocol

The OPAQUE key exchange protocol OPAQUE is an asymmetric password-authenticated key exchange protocol. It allows a client to authenticate to a server

Novi 178 Jan 9, 2023
A safe implementation of the secure remote password authentication and key-exchange protocol (SRP), SRP6a and legacy are as features available.

Secure Remote Password (SRP 6 / 6a) A safe implementation of the secure remote password authentication and key-exchange protocol (SRP version 6a). Ver

Sven Assmann 10 Nov 3, 2022
A password entropy calculator.

paspio — pasvorta entropio A (naive) password entropy calculator. Refrain from using this as a sole measure of password strength, it should be used in

Aziz Ben Ali 3 Mar 8, 2022