package passe
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=b15b176bfb67f5727092b5cb414b3c02fa509363890668646a4658bdc0755738
sha512=b018b4fd08d8d9d3dc9c3b94f2af37bc3fa44b52037cf80c8d93ab63db160a57ce5c7813172bbe3ee09213a334fd660f193a2f3dea33349ff834a232cc1b7678
Description
Passe is library for hashing and verifying passwords using bcrypt and argon2 algorithms. It is designed to be simple, secure, and easy to use in OCaml applications
Added to opam-repository:
README
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.
Dependencies (4)
-
mirage-crypto-rng
>= "1.2.0" - mirage-crypto
-
dune
>= "3.19" -
ocaml
>= "4.14"
Used by
None
Conflicts
None