package passe

  1. Overview
  2. Docs
Passe is library for hashing and verifying passwords using bcrypt and argon2 algorithms

Install

dune-project
 Dependency

Authors

Maintainers

Sources

passe-0.2.0.tbz
sha256=67b052af6a84859dfcc13438e6109062d18a9184527c5c9a5f5b1b65cc3800be
sha512=c3bfb4d4c9f47df53c904fadcf6ff6de4480885244f61948bfe2025998bcfc3091c353f5a4bc79f7f96c42d874ef2743045a56f26719992104d03fa51c770c79

doc/README.html

Passe - Password hash algorithm

Passe is an OCaml library for hashing and verifying passwords using Bcrypt and Argon2.

The primary goal of Passe is to provide a simple and secure interface for password hashing, and easy to install library. All dependencies are vendored, so no external libraries are required.

Usage

Argon2

let hash_result = Passe.Argon2.hash "my_password"

match hash_result with
| Ok hash ->
    (* Store the hash in your database *)
    let hash_string = Passe.hash_to_string hash in
    store_in_db hash_string
| Error e ->
    Format.eprintf "%a" Passe.Argon2.pp_error e

(* Verify a password against a stored hash *)
let stored_hash = Passe.hash_of_string (get_from_db ()) in
match Passe.Argon2.verify ~hash:stored_hash "user_input" with
| Ok true -> (* Password matches *)
| Ok false -> (* Password does not match *)
| Error e -> (* Handle error *)

(* Use custom parameters *)
let params = { Passe.Argon2.t_cost = 3; m_cost = 65536; parallelism = 4 } in
let hash_result = Passe.Argon2.hash ~params "my_password"

Bcrypt

let hash_result = Passe.Bcrypt.hash "my_password"

match hash_result with
| Ok hash ->
    let hash_string = Passe.hash_to_string hash in
    store_in_db hash_string
| Error e ->
    Format.eprintf "%a" Passe.Bcrypt.pp_error e

let stored_hash = Passe.hash_of_string (get_from_db ()) in
match Passe.Bcrypt.verify ~hash:stored_hash "user_input" with
| Ok true -> (* Password matches *)
| Ok false -> (* Password does not match *)
| Error e -> (* Handle error *)

(* Use custom cost factor *)
let hash_result = Bcrypt.hash ~cost:14 "my_password"

Examples

The examples/ directory contains cross-language verification tests that demonstrate compatibility with Python's argon2-cffi and bcrypt libraries.

License

This library is licensed under the ISC License. See LICENSE for details.

Third-Party Code

This library includes vendored implementations:

  • Argon2 reference implementation (dual-licensed CC0 1.0 Universal / Apache 2.0)
  • Bcrypt from OpenBSD (ISC License)
  • Blowfish cipher from OpenBSD (BSD 4-Clause License)

All third-party licenses and attributions are included in the LICENSE file.