Skip to content

Commit

Permalink
Merge branch '#20-jsdoc' into #30-move-logic-to-cas-lib
Browse files Browse the repository at this point in the history
  • Loading branch information
WingZer0o committed May 19, 2024
2 parents dd04911 + 4125748 commit 4bbe0b3
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 124 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ crate-type = ["cdylib"]

[dependencies]
aes-gcm = "0.10.3"
argon2 = "0.5.2"
bcrypt = "0.15.0"
blake2 = "0.10.6"
napi = "2"
napi-derive = "2"
Expand All @@ -23,6 +21,8 @@ x25519-dalek = {version = "2.0.0", features = ["static_secrets"]}
rand_07 = { package = "rand", version = "0.7.0" }
ascon-aead = "0.4.2"
rayon = "1.10.0"
csbindgen = "1.9.1"
cas-lib = "0.1.3"

[profile.dev.package.num-bigint-dig]
opt-level = 3
Expand Down
Binary file modified index.node
Binary file not shown.
1 change: 0 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
mod password_hashers {
pub mod argon2;
pub mod bcrypt;
pub mod cas_password_hasher;
pub mod scrypt;
}

Expand Down
48 changes: 4 additions & 44 deletions src/password_hashers/argon2.rs
Original file line number Diff line number Diff line change
@@ -1,35 +1,7 @@

use napi_derive::napi;

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

use crate::symmetric::aes::CASAES128;

use super::cas_password_hasher::CASPasswordHasher;

pub struct CASArgon;

impl CASPasswordHasher for CASArgon {
fn hash_password(password_to_hash: String) -> String {
let salt = SaltString::generate(&mut OsRng);
let argon2 = Argon2::default();
let hashed_password = argon2
.hash_password(password_to_hash.as_bytes(), &salt)
.unwrap()
.to_string();
return hashed_password;
}

fn verify_password(hashed_password: String, password_to_verify: String) -> bool {
let hashed_password = PasswordHash::new(&hashed_password).unwrap();
return Argon2::default()
.verify_password(password_to_verify.as_bytes(), &hashed_password)
.is_ok();
}
}
use cas_lib::password_hashers::argon2::CASArgon;
use cas_lib::password_hashers::cas_password_hasher::CASPasswordHasher;

#[napi]
pub fn argon2_hash(password: String) -> String {
Expand All @@ -38,13 +10,7 @@ pub fn argon2_hash(password: String) -> String {

#[napi]
pub fn argon2_hash_thread_pool(password: String) -> String {
let (sender, receiver) = std::sync::mpsc::channel();
rayon::spawn(move || {
let hash_result = <CASArgon as CASPasswordHasher>::hash_password(password);
sender.send(hash_result);
});
let result = receiver.recv().unwrap();
result
return <CASArgon as CASPasswordHasher>::hash__password_threadpool(password);
}

#[napi]
Expand All @@ -54,13 +20,7 @@ pub fn argon2_verify(hashed_password: String, password_to_verify: String) -> boo

#[napi]
pub fn argon2_verify_threadpool(hashed_password: String, password_to_verify: String) -> bool {
let (sender, receiver) = std::sync::mpsc::channel();
rayon::spawn(move || {
let verify_result = <CASArgon as CASPasswordHasher>::verify_password(hashed_password, password_to_verify);
sender.send(verify_result);
});
let result = receiver.recv().unwrap();
result
return <CASArgon as CASPasswordHasher>::verify_password_threadpool(hashed_password, password_to_verify);
}

#[test]
Expand Down
35 changes: 4 additions & 31 deletions src/password_hashers/bcrypt.rs
Original file line number Diff line number Diff line change
@@ -1,36 +1,15 @@
use std::sync::mpsc;

use bcrypt::{hash, verify, DEFAULT_COST};
use cas_lib::password_hashers::bcrypt::CASBCrypt;
use cas_lib::password_hashers::cas_password_hasher::CASPasswordHasher;
use napi_derive::napi;

use super::cas_password_hasher::CASPasswordHasher;

pub struct CASBCrypt;

impl CASPasswordHasher for CASBCrypt {
fn hash_password(password_to_hash: String) -> String {
return hash(password_to_hash, DEFAULT_COST).unwrap();
}

fn verify_password(hashed_password: String, password_to_verify: String) -> bool {
return verify(password_to_verify, &hashed_password).unwrap();
}
}

#[napi]
pub fn bcrypt_hash(password_to_hash: String) -> String {
return <CASBCrypt as CASPasswordHasher>::hash_password(password_to_hash);
}

#[napi]
pub fn bcrypt_hash_threadpool(password_to_hash: String) -> String {
let (sender, receiver) = mpsc::channel();
rayon::spawn(move || {
let thread_result = <CASBCrypt as CASPasswordHasher>::hash_password(password_to_hash);
sender.send(thread_result);
});
let result = receiver.recv().unwrap();
result
return <CASBCrypt as CASPasswordHasher>::hash__password_threadpool(password_to_hash);
}

#[napi]
Expand All @@ -40,13 +19,7 @@ pub fn bcrypt_verify(hashed_password: String, password_to_verify: String) -> boo

#[napi]
pub fn bcrypt_verify_threadpool(password_to_hash: String, password_to_verify: String) -> bool {
let (sender, receiver) = mpsc::channel();
rayon::spawn(move || {
let thread_result = <CASBCrypt as CASPasswordHasher>::verify_password(password_to_hash, password_to_verify);
sender.send(thread_result);
});
let result = receiver.recv().unwrap();
result
return <CASBCrypt as CASPasswordHasher>::verify_password_threadpool(password_to_hash, password_to_verify);
}

#[test]
Expand Down
4 changes: 0 additions & 4 deletions src/password_hashers/cas_password_hasher.rs

This file was deleted.

45 changes: 3 additions & 42 deletions src/password_hashers/scrypt.rs
Original file line number Diff line number Diff line change
@@ -1,33 +1,6 @@
use std::sync::mpsc;

use cas_lib::password_hashers::{cas_password_hasher::CASPasswordHasher, scrypt::CASScrypt};
use napi_derive::napi;

use scrypt::{
password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
Scrypt,
};

use super::cas_password_hasher::CASPasswordHasher;

pub struct CASScrypt;

impl CASPasswordHasher for CASScrypt {
fn hash_password(password_to_hash: String) -> String {
let salt = SaltString::generate(&mut OsRng);
return Scrypt
.hash_password(password_to_hash.as_bytes(), &salt)
.unwrap()
.to_string();
}

fn verify_password(hashed_password: String, password_to_verify: String) -> bool {
let parsed_hash = PasswordHash::new(&hashed_password).unwrap();
return Scrypt
.verify_password(password_to_verify.as_bytes(), &parsed_hash)
.is_ok();
}
}

#[napi]
pub fn scrypt_hash(password_to_hash: String) -> String {
return <CASScrypt as CASPasswordHasher>::hash_password(password_to_hash);
Expand All @@ -40,24 +13,12 @@ pub fn scrypt_verify(hashed_password: String, password_to_verify: String) -> boo

#[napi]
pub fn scrypt_hash_threadpool(password_to_hash: String) -> String {
let (sender, receiver) = mpsc::channel();
rayon::spawn(move || {
let thread_result = <CASScrypt as CASPasswordHasher>::hash_password(password_to_hash);
sender.send(thread_result);
});
let result = receiver.recv().unwrap();
result
return <CASScrypt as CASPasswordHasher>::hash__password_threadpool(password_to_hash);
}

#[napi]
pub fn scrypt_verify_threadpool(hashed_password: String, password_to_verify: String) -> bool {
let (sender, receiver) = mpsc::channel();
rayon::spawn(move || {
let thread_result = <CASScrypt as CASPasswordHasher>::verify_password(hashed_password, password_to_verify);
sender.send(thread_result);
});
let result = receiver.recv().unwrap();
result
return <CASScrypt as CASPasswordHasher>::verify_password_threadpool(hashed_password, password_to_verify);
}

#[test]
Expand Down

0 comments on commit 4bbe0b3

Please sign in to comment.