file-encrypt 0.2.1

CLI tool for encrypting local files
Documentation
extern crate argon2;

use argon2::{
    password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, SaltString},
    Argon2, PasswordVerifier,
};

pub fn hash_passphrase(passphrase: String) -> String {
    let argon2 = Argon2::default();
    let salt = SaltString::generate(&mut OsRng);

    let hash = argon2.hash_password(passphrase.as_bytes(), &salt).unwrap();
    let hash = hash.to_string();

    hash
}

pub fn check_hash(passphrase: String, expected_pch: String) -> (bool, Option<String>) {
    let expected_pch: PasswordHash = PasswordHash::new(&expected_pch).unwrap();

    match Argon2::default().verify_password(passphrase.as_bytes(), &expected_pch) {
        Ok(_) => {
            return (true, Some(expected_pch.to_string()));
        }
        Err(_) => {
            return (false, None);
        }
    }
}