An implementation of the OPAQUE password-authenticated key exchange protocol

Overview

The OPAQUE key exchange protocol Build Status

OPAQUE is an asymmetric password-authenticated key exchange protocol. It allows a client to authenticate to a server using a password, without ever having to expose the plaintext password to the server.

This implementation is based on the Internet Draft for OPAQUE.

Background

Asymmetric Password Authenticated Key Exchange (aPAKE) protocols are designed to provide password authentication and mutually authenticated key exchange without relying on PKI (except during user/password registration) and without disclosing passwords to servers or other entities other than the client machine.

OPAQUE is a PKI-free aPAKE that is secure against pre-computation attacks and capable of using a secret salt.

Documentation

The API can be found here along with an example for usage.

Installation

Add the following line to the dependencies of your Cargo.toml:

opaque-ke = "0.5.0"

Resources

Contributors

The authors of this code are Kevin Lewi (@kevinlewi) and François Garillot (@huitseeker). To learn more about contributing to this project, see this document.

Acknowledgments

Special thanks go to Hugo Krawczyk and Chris Wood for helping to clarify discrepancies and making suggestions for improving this implementation.

License

This project is MIT licensed.

Comments
  • Server registration finish without username

    Server registration finish without username

    This issue is in regards to:

    https://github.com/novifinancial/opaque-ke/blob/5a0aef607ccda21ae8a76c687de801632dff2574/examples/simple_login.rs#L94-L99

    The ServerRegistration has the password file but not the username (credential_identifier). If you expose two server REST methods /ServerRegistrationStart and /ServerRegistrationFinish, your /ServerRegistrationFinish would have to authenticate the username some other way.

    I may be missing something in the API, but simple_login.rs seems to assume that you will have a single connection for all the registration messages. A typical REST implementation would violate that assumption. If so, a documentation comment will help users not to forget this part of the authentication.

    Thanks. Nice library!

    opened by jonahbeckford 11
  • Can't compile 0.6.0 version referenced in opaque-wasm, can you please help?

    Can't compile 0.6.0 version referenced in opaque-wasm, can you please help?

    trying to build opaque-wasm which refers opaque-ke 0.6.0 following error:

    Compiling opaque-ke v0.6.0

    --> opaque-ke-0.6.0/src/envelope.rs:64:17 | 64 | #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Zeroize)] | ^^^^ Copy not allowed on types with destructors | = note: this error originates in the derive macro Copy (in Nightly builds, run with -Z macro-backtrace for more info)

    For more information about this error, try rustc --explain E0184. error: could not compile opaque-ke due to previous error

    rust version: 1.58.1

    opened by jaroslavsaxa 8
  • General improvements

    General improvements

    General improvements. Many changes are ported from novifinancial/voprf#24, novifinancial/voprf#26, novifinancial/voprf#34 and novifinancial/voprf#35.

    Noteworthy:

    • Fix wrong de-serialization on Ke1State.
    • Remove unnecessary Result from KeyPair::generate_random.
    • Fix de-serialization when using owned bytes, like with bincode::deserialize_from (see novifinancial/voprf#33).
    • Replace macros with derive_where fixing the Debug implementation and missing wrong bounds.
    • Implement Ord and PartialOrd on high level API items.
    • Add rust-version to Cargo.toml.
    • Remove lots of allocations.
    • Remove human-readable base64 serialization from Serde implemenetation.
    • Make curve25519-dalek backend optional.
    • Rename serialize to serde.
    • Switch KeGroup implementations to higher-level libraries:
      • p256 uses elliptic_curve::PublicKey with p256::NistP256 - or p256::PublicKey.
      • X25519 uses x25519_dalek::PublicKey. This also surfaced a bug, it was missing clamping keys.
    cla signed 
    opened by daxpedda 8
  • SlowHash configurability

    SlowHash configurability

    At the moment, it isn't possible to pass parameters to SlowHash::hash(), the only way I could figure out is to make a new type implementing SlowHash that just executes a different function.

    Would it be in scope to pass down a instantiated CipherSuite::SlowHash to SlowHash::hash() through either an additional parameter in ClientRegistration/ClientLogin::finish() or adding something to ClientRegistrationFinishParameters/ClientLoginFinishParameters?

    opened by daxpedda 8
  • Argon2 Example

    Argon2 Example

    As discussed here: https://github.com/novifinancial/opaque-ke/issues/281

    This PR aims to update the simple_login example to add an example on how to use Argon2 as the client-side KDF, as recommended. The Argon2 struct requires a lifetime, which makes the empty struct pattern somewhat unintuitive without an example and requires a PhantomData to work.

    I'm opening as a draft for now because:

    1. I'd like to also make an example on how to specify the derivation params instead on relying on RustCrypto's default, but I'm not sure doing it in the simple_login example is the best idea since it's supposed to be simple.
    2. @daxpedda also suggested adding a custom KDF example. I think copying the simple_login file but implementing Ksf on, let's say, scrypt would be a good idea for that? If you expect to eventually first-party support scrypt we could go with something more obscure like PBKDF2-BLAKE2/3 instead so the example stays relevant.
    cla signed 
    opened by zer0x64 7
  • Critical vulnerability in v1.2.0

    Critical vulnerability in v1.2.0

    opaque-ke 1.2.0 depends on curve25519-dalek 3, which in turn depends on rand_core 0.5.1. This version of rand_core has a critical bug. I think we can fix this by patching v1.2 of opaque-ke to use the same version of curve25519-dalek that is used on master. Thoughts?

    opened by vdhanan 7
  • Remove Copy trait implementation from InnerEnvelopeMode

    Remove Copy trait implementation from InnerEnvelopeMode

    This PR fixes the following compile error by removing a trait that could not be derived.

    error[E0184]: the trait `Copy` may not be implemented for this type; the type has a destructor
      --> src/envelope.rs:68:17
       |
    68 | #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Zeroize)]
       |                 ^^^^ Copy not allowed on types with destructors
       |
       = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
    
    For more information about this error, try `rustc --explain E0184`.
    error: could not compile `opaque-ke` due to previous error
    

    Thank you for your hard work, I love the library.

    cla signed 
    opened by aidangilmore 7
  • Change argon2 salt length to recommended value (16 bytes)

    Change argon2 salt length to recommended value (16 bytes)

    This pull request changes the Ksf implementation for Argon2 and sets the salt length to 16 bytes (instead of the minimal length of 8 bytes), the value recommended for password hashing in section 3.1 of the Argon2 specification. This also serves to improve interoperability: for example, with this change, it's possible to use opaque-ke in conjunction with libopaque, since it also uses a 16-byte salt by default.

    Note that this will make existing registrations (i.e., those made with an 8-byte salt) invalid, since KSF parameters (including salt length) must stay the same across registration and login.

    cla signed 
    opened by falko17 6
  • Introduce customizable `PrivateKey`

    Introduce customizable `PrivateKey`

    This is the current approach I took to tackle #199.

    Using a dynamic object turned out not to be an option, mainly because I couldn't figure out serialization without breaking object safety.

    ~~Other approaches that I could think off that avoid having users specify a PrivateKey type:~~

    • ~~Hiding the PrivateKey associated type somewhere else, for example in Group or KeyExchange~~
    • ~~Introduce a default associated type () with the help of some hacks, because it isn't stable yet~~
    • ~~Put the type in ServerSetup and pass it down to corresponding functions instead of putting it in CipherSuite~~

    I decided to take the last approach, now the user-facing API almost doesn't change at all.

    cla signed 
    opened by daxpedda 6
  • Document responsibility for server-side id. #276

    Document responsibility for server-side id. #276

    This is a passive warning to the server implementor to not blindly trust the client to send the same identifier in both RegistrationRequest and RegistrationUpload.

    cla signed 
    opened by jonahbeckford 5
  • Remote private key

    Remote private key

    Currently there is no support for remote private keys in opaque-ke. Meaning that the use of HSMs or "vault storage"s to store the private key in ServerSetup isn't currently possible.

    I am working towards an implementation and am planning to provide a PR to support this. Is my assumption correct that the only work the private key does is a DH key exchange, basically the remote key has to provide a replacement of this function?: https://github.com/novifinancial/opaque-ke/blob/349329cdebf35bbb3767413ea8905aa4ababbf02/src/keypair.rs#L109-L118 I understand if opaque-ke doesn't want to implement support for this, but at least some API changes have to be made to allow external implementations to provide support.

    opened by daxpedda 5
  • Use `Public/SecretKey` for the `elliptic-curve` implementation

    Use `Public/SecretKey` for the `elliptic-curve` implementation

    Currently we are using ProjectivePoint and Scalar directly instead of PublicKey and SecretKey respectively.

    The reason was that curve25519_dalek::Scalar supports Zeroize but not ZeroizeOnDrop. But elliptic_curve::SecretKey supports ZeroizeOnDrop but not Zeroize. (this was one of the main reasons I worked on introducing ZeroizeOnDrop in the first place)

    The best solution here would be to introduce a SecretKey for Ristretto255, which currently doesn't exist, we could introduce this type ourselves in opaque-ke though.

    Not sure what to do about elliptic_curve::PublicKey, as it implements neither. Is not zeroing out the public key acceptable?

    This is analogous to https://github.com/novifinancial/voprf/issues/57 and is mainly for code improvement and cleaner deserialization, it doesn't actually change anything.

    opened by daxpedda 1
  • Test P-384

    Test P-384

    This just tests P-384 support and builds on top of https://github.com/novifinancial/voprf/pull/84, which builds on top of https://github.com/RustCrypto/elliptic-curves/pull/600. We still have to wait for new versions to be released.

    ~~This also builds on top of https://github.com/novifinancial/opaque-ke/pull/288, which builds on top of https://github.com/novifinancial/opaque-ke/pull/289.~~

    cla signed 
    opened by daxpedda 2
Releases(v2.0.0)
  • v2.0.0(Sep 22, 2022)

    What's Changed

    • Group impl support by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/200
    • Switch CI to using stable instead of nightly toolchain by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/202
    • Adding i2osp error checking condition by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/201
    • Updating VOPRF dependency by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/203
    • Adding reflected value check on client side by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/204
    • Updating changelog for v0.5.1 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/210
    • Introduce customizable PrivateKey by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/212
    • Add tests against intermediate values test vectors by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/216
    • Increase MSRV to 1.51 by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/217
    • P256 implementation by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/213
    • P-256 fix by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/221
    • Merge GroupWithMapToCurve into Group by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/219
    • Separate AKE from OPRF take 2 by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/222
    • no_std support by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/225
    • Fix no_std support by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/229
    • Changes related to renaming master branch to main by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/231
    • Simplifying error handling by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/232
    • Updating test vectors based on latest spec changes by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/233
    • Add SlowHash configuration by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/234
    • Remove Copy trait implementation from InnerEnvelopeMode by @aidangilmore in https://github.com/novifinancial/opaque-ke/pull/237
    • Fix is_square and is_zero by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/240
    • General cleanups and reorganizing code by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/236
    • P256 improvements by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/244
    • Constant time cmov by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/241
    • Add better parsing for RFC test vectors by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/247
    • Using voprf as a dependency by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/248
    • Updating to dual-license by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/252
    • Adding audit report reference to README + licenses by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/253
    • General improvements by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/250
    • Voprf update by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/255
    • Format by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/257
    • Group revamp by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/261
    • Publishing v2.0.0-pre.1 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/270
    • General Improvements by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/268
    • Updating to version 08 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/271
    • Addressing taplo-cli install issue by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/272
    • Adding documentation on RegistrationUpload and removing patch voprf in Cargo.toml by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/273
    • Change argon2 salt length to recommended value (16 bytes) by @falko17 in https://github.com/novifinancial/opaque-ke/pull/275
    • Document responsibility for server-side id. #276 by @jonahbeckford in https://github.com/novifinancial/opaque-ke/pull/277
    • Updating voprf dependency and test vectors by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/278
    • Fixing voprf dependency pinning by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/280
    • Argon2 Example by @zer0x64 in https://github.com/novifinancial/opaque-ke/pull/282
    • Publishing v2.0.0 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/283
    • Version bump for 2.0.0 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/284

    New Contributors

    • @aidangilmore made their first contribution in https://github.com/novifinancial/opaque-ke/pull/237
    • @falko17 made their first contribution in https://github.com/novifinancial/opaque-ke/pull/275
    • @jonahbeckford made their first contribution in https://github.com/novifinancial/opaque-ke/pull/277

    Full Changelog: https://github.com/novifinancial/opaque-ke/compare/v0.6.0...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-pre.3(Jul 11, 2022)

    What's Changed

    • Change argon2 salt length to recommended value (16 bytes) by @falko17 in https://github.com/novifinancial/opaque-ke/pull/275
    • Document responsibility for server-side id. #276 by @jonahbeckford in https://github.com/novifinancial/opaque-ke/pull/277
    • Updating voprf dependency and test vectors by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/278
    • Fixing voprf dependency pinning by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/280

    New Contributors

    • @falko17 made their first contribution in https://github.com/novifinancial/opaque-ke/pull/275
    • @jonahbeckford made their first contribution in https://github.com/novifinancial/opaque-ke/pull/277

    Full Changelog: https://github.com/novifinancial/opaque-ke/compare/v2.0.0-pre.2...v2.0.0-pre.3

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-pre.2(Apr 22, 2022)

    What's Changed

    • General Improvements by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/268
    • Updating to version 08 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/271
    • Addressing taplo-cli install issue by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/272
    • Adding documentation on RegistrationUpload and removing patch voprf in Cargo.toml by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/273

    Full Changelog: https://github.com/novifinancial/opaque-ke/compare/v2.0.0-pre.1...v2.0.0-pre.2

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-pre.1(Mar 16, 2022)

    What's Changed

    • Group impl support by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/200
    • Switch CI to using stable instead of nightly toolchain by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/202
    • Adding i2osp error checking condition by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/201
    • Updating VOPRF dependency by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/203
    • Adding reflected value check on client side by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/204
    • Updating changelog for v0.5.1 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/210
    • Introduce customizable PrivateKey by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/212
    • Add tests against intermediate values test vectors by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/216
    • Increase MSRV to 1.51 by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/217
    • P256 implementation by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/213
    • P-256 fix by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/221
    • Merge GroupWithMapToCurve into Group by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/219
    • Separate AKE from OPRF take 2 by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/222
    • no_std support by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/225
    • Fix no_std support by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/229
    • Changes related to renaming master branch to main by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/231
    • Simplifying error handling by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/232
    • Updating test vectors based on latest spec changes by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/233
    • Add SlowHash configuration by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/234
    • Remove Copy trait implementation from InnerEnvelopeMode by @aidangilmore in https://github.com/novifinancial/opaque-ke/pull/237
    • Fix is_square and is_zero by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/240
    • General cleanups and reorganizing code by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/236
    • P256 improvements by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/244
    • Constant time cmov by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/241
    • Add better parsing for RFC test vectors by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/247
    • Using voprf as a dependency by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/248
    • Updating to dual-license by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/252
    • Adding audit report reference to README + licenses by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/253
    • General improvements by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/250
    • Voprf update by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/255
    • Format by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/257
    • Group revamp by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/261
    • Publishing v2.0.0-pre.1 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/270

    New Contributors

    • @aidangilmore made their first contribution in https://github.com/novifinancial/opaque-ke/pull/237

    Full Changelog: https://github.com/novifinancial/opaque-ke/compare/v0.6.0...v2.0.0-pre.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Jan 31, 2022)

    What's Changed

    • Backport zeroize fix by @daxpedda in https://github.com/novifinancial/opaque-ke/pull/266

    Full Changelog: https://github.com/novifinancial/opaque-ke/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Oct 7, 2021)

    What's Changed

    • Adding warning about client enumeration attacks for v1 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/235
    • Adding support for thumbv6m-none-eabi by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/245
    • Publishing v1.2.0 by @kevinlewi in https://github.com/novifinancial/opaque-ke/pull/246

    Full Changelog: https://github.com/novifinancial/opaque-ke/compare/v1.1.0...v1.2.0

    Source code(tar.gz)
    Source code(zip)
Owner
Novi
A connected wallet for a connected world
Novi
Password-Authenticated Key Agreement protocols

RustCrypto: PAKEs Password-Authenticated Key Agreement protocols implementation. Warnings Crates in this repository have not yet received any formal c

Rust Crypto 81 Dec 5, 2022
X25519 elliptic curve Diffie-Hellman key exchange in pure-Rust, using curve25519-dalek.

x25519-dalek A pure-Rust implementation of x25519 elliptic curve Diffie-Hellman key exchange, with curve operations provided by curve25519-dalek. This

dalek cryptography 252 Dec 26, 2022
Plutonium is a two-device chat application that utilises WebSockets and a X25519 ECDH Key Exchange

Plutonium is a two-device chat application that utilises WebSockets and a X25519 ECDH Key Exchange, in addition to AES-256 to securely communicate between the two clients.

brxken 0 Jul 29, 2022
✈️A private, authenticated, permissioned cargo registry

chartered a little dig at creating a private cargo repository with authenticated downloads, the plan is to have git connect to a git server we setup t

Jordan Doyle 121 Dec 26, 2022
Authenticated Encryption with Associated Data Algorithms: high-level encryption ciphers

RustCrypto: Authenticated Encryption with Associated Data (AEAD) Algorithms Collection of Authenticated Encryption with Associated Data (AEAD) algorit

Rust Crypto 457 Jan 4, 2023
Bessie - an authenticated, chunked cipher based on BLAKE3

Bessie Bessie is an authenticated, chunked cipher based on BLAKE3. Right now it's in the early design stages. See design.md. Although the Bessie ciphe

Jack O'Connor 12 Dec 9, 2022
Making Token Exchange program with Solana(Rust), Web3, and Vue

Escrow program for Solana blockchain Tech stack Program (Smart Contract) Rust crates: solana-program, spl-token Solana CLI for test validator UI Types

Hoon Wee 3 May 10, 2022
Polkadex - An Orderbook-based Decentralized Exchange using the Substrate Blockchain Framework.

What is Polkadex? ?? Polkadex is a Open Source, Decentralized Exchange Platform made using Substrate Blockchain Framework that provides traders with t

Polkadex 243 Dec 16, 2022
A Multi-chain Decentralized Exchange (DEX) built on CosmWasm for the WYND DAO.

WynDex A Multi-chain Decentralized Exchange (DEX) built on CosmWasm for the WYND DAO. Overview License The initial pool types were copied from astropo

null 7 Jan 31, 2023
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
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
🐴 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
A simple password manager written in rust

Passman - A password manager written in rust. How to use?: USAGE: passman option Currently available options are: new - initalize passman with a new m

Strawkage 7 Aug 26, 2021
A simple password manager written in Rust

ripasso A simple password manager written in Rust. The root crate ripasso is a library for accessing and decrypting passwords stored in pass format (G

Joakim Lundborg 550 Dec 30, 2022
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
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
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
Password hashing functions / KDFs

RustCrypto: Password Hashes Collection of password hashing algorithms, otherwise known as password-based key derivation functions, written in pure Rus

Rust Crypto 387 Dec 28, 2022