// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
// ┃ Copyright: (c) 2023, Mike 'PhiSyX' S. (https://github.com/PhiSyX) ┃
// ┃ SPDX-License-Identifier: MPL-2.0 ┃
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
// ┃ ┃
// ┃ This Source Code Form is subject to the terms of the Mozilla Public ┃
// ┃ License, v. 2.0. If a copy of the MPL was not distributed with this ┃
// ┃ file, You can obtain one at https://mozilla.org/MPL/2.0/. ┃
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
#[cfg(feature = "encryption-argon2")]
pub mod argon2;
// --------- //
// Interface //
// --------- //
pub trait PasswordEncryption: Clone {
fn new(secret: impl ToString) -> Self;
/// Chiffre un mot de passe avec un algorithme de hachage / chiffrement.
fn encrypt_password(
&self,
credential: impl AsRef<str>,
) -> Result<String, Box<dyn std::error::Error + Send + Sync>>;
/// Vérifie le mot de passe à l'aide du hachage codé.
fn verify_password(
&self,
encrypted: impl AsRef<str>,
credential: impl AsRef<str>,
) -> bool;
}