Skip to content

Commit 4bbe0b3

Browse files
committed
Merge branch '#20-jsdoc' into #30-move-logic-to-cas-lib
2 parents dd04911 + 4125748 commit 4bbe0b3

File tree

7 files changed

+13
-124
lines changed

7 files changed

+13
-124
lines changed

Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ crate-type = ["cdylib"]
99

1010
[dependencies]
1111
aes-gcm = "0.10.3"
12-
argon2 = "0.5.2"
13-
bcrypt = "0.15.0"
1412
blake2 = "0.10.6"
1513
napi = "2"
1614
napi-derive = "2"
@@ -23,6 +21,8 @@ x25519-dalek = {version = "2.0.0", features = ["static_secrets"]}
2321
rand_07 = { package = "rand", version = "0.7.0" }
2422
ascon-aead = "0.4.2"
2523
rayon = "1.10.0"
24+
csbindgen = "1.9.1"
25+
cas-lib = "0.1.3"
2626

2727
[profile.dev.package.num-bigint-dig]
2828
opt-level = 3

index.node

5.5 KB
Binary file not shown.

src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
mod password_hashers {
22
pub mod argon2;
33
pub mod bcrypt;
4-
pub mod cas_password_hasher;
54
pub mod scrypt;
65
}
76

src/password_hashers/argon2.rs

+4-44
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,7 @@
11

22
use napi_derive::napi;
3-
4-
use argon2::{
5-
password_hash::{rand_core::OsRng, SaltString},
6-
Argon2, PasswordHash, PasswordHasher, PasswordVerifier,
7-
};
8-
9-
use crate::symmetric::aes::CASAES128;
10-
11-
use super::cas_password_hasher::CASPasswordHasher;
12-
13-
pub struct CASArgon;
14-
15-
impl CASPasswordHasher for CASArgon {
16-
fn hash_password(password_to_hash: String) -> String {
17-
let salt = SaltString::generate(&mut OsRng);
18-
let argon2 = Argon2::default();
19-
let hashed_password = argon2
20-
.hash_password(password_to_hash.as_bytes(), &salt)
21-
.unwrap()
22-
.to_string();
23-
return hashed_password;
24-
}
25-
26-
fn verify_password(hashed_password: String, password_to_verify: String) -> bool {
27-
let hashed_password = PasswordHash::new(&hashed_password).unwrap();
28-
return Argon2::default()
29-
.verify_password(password_to_verify.as_bytes(), &hashed_password)
30-
.is_ok();
31-
}
32-
}
3+
use cas_lib::password_hashers::argon2::CASArgon;
4+
use cas_lib::password_hashers::cas_password_hasher::CASPasswordHasher;
335

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

3911
#[napi]
4012
pub fn argon2_hash_thread_pool(password: String) -> String {
41-
let (sender, receiver) = std::sync::mpsc::channel();
42-
rayon::spawn(move || {
43-
let hash_result = <CASArgon as CASPasswordHasher>::hash_password(password);
44-
sender.send(hash_result);
45-
});
46-
let result = receiver.recv().unwrap();
47-
result
13+
return <CASArgon as CASPasswordHasher>::hash__password_threadpool(password);
4814
}
4915

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

5521
#[napi]
5622
pub fn argon2_verify_threadpool(hashed_password: String, password_to_verify: String) -> bool {
57-
let (sender, receiver) = std::sync::mpsc::channel();
58-
rayon::spawn(move || {
59-
let verify_result = <CASArgon as CASPasswordHasher>::verify_password(hashed_password, password_to_verify);
60-
sender.send(verify_result);
61-
});
62-
let result = receiver.recv().unwrap();
63-
result
23+
return <CASArgon as CASPasswordHasher>::verify_password_threadpool(hashed_password, password_to_verify);
6424
}
6525

6626
#[test]

src/password_hashers/bcrypt.rs

+4-31
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,15 @@
1-
use std::sync::mpsc;
2-
3-
use bcrypt::{hash, verify, DEFAULT_COST};
1+
use cas_lib::password_hashers::bcrypt::CASBCrypt;
2+
use cas_lib::password_hashers::cas_password_hasher::CASPasswordHasher;
43
use napi_derive::napi;
54

6-
use super::cas_password_hasher::CASPasswordHasher;
7-
8-
pub struct CASBCrypt;
9-
10-
impl CASPasswordHasher for CASBCrypt {
11-
fn hash_password(password_to_hash: String) -> String {
12-
return hash(password_to_hash, DEFAULT_COST).unwrap();
13-
}
14-
15-
fn verify_password(hashed_password: String, password_to_verify: String) -> bool {
16-
return verify(password_to_verify, &hashed_password).unwrap();
17-
}
18-
}
19-
205
#[napi]
216
pub fn bcrypt_hash(password_to_hash: String) -> String {
227
return <CASBCrypt as CASPasswordHasher>::hash_password(password_to_hash);
238
}
249

2510
#[napi]
2611
pub fn bcrypt_hash_threadpool(password_to_hash: String) -> String {
27-
let (sender, receiver) = mpsc::channel();
28-
rayon::spawn(move || {
29-
let thread_result = <CASBCrypt as CASPasswordHasher>::hash_password(password_to_hash);
30-
sender.send(thread_result);
31-
});
32-
let result = receiver.recv().unwrap();
33-
result
12+
return <CASBCrypt as CASPasswordHasher>::hash__password_threadpool(password_to_hash);
3413
}
3514

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

4120
#[napi]
4221
pub fn bcrypt_verify_threadpool(password_to_hash: String, password_to_verify: String) -> bool {
43-
let (sender, receiver) = mpsc::channel();
44-
rayon::spawn(move || {
45-
let thread_result = <CASBCrypt as CASPasswordHasher>::verify_password(password_to_hash, password_to_verify);
46-
sender.send(thread_result);
47-
});
48-
let result = receiver.recv().unwrap();
49-
result
22+
return <CASBCrypt as CASPasswordHasher>::verify_password_threadpool(password_to_hash, password_to_verify);
5023
}
5124

5225
#[test]

src/password_hashers/cas_password_hasher.rs

-4
This file was deleted.

src/password_hashers/scrypt.rs

+3-42
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,6 @@
1-
use std::sync::mpsc;
2-
1+
use cas_lib::password_hashers::{cas_password_hasher::CASPasswordHasher, scrypt::CASScrypt};
32
use napi_derive::napi;
43

5-
use scrypt::{
6-
password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
7-
Scrypt,
8-
};
9-
10-
use super::cas_password_hasher::CASPasswordHasher;
11-
12-
pub struct CASScrypt;
13-
14-
impl CASPasswordHasher for CASScrypt {
15-
fn hash_password(password_to_hash: String) -> String {
16-
let salt = SaltString::generate(&mut OsRng);
17-
return Scrypt
18-
.hash_password(password_to_hash.as_bytes(), &salt)
19-
.unwrap()
20-
.to_string();
21-
}
22-
23-
fn verify_password(hashed_password: String, password_to_verify: String) -> bool {
24-
let parsed_hash = PasswordHash::new(&hashed_password).unwrap();
25-
return Scrypt
26-
.verify_password(password_to_verify.as_bytes(), &parsed_hash)
27-
.is_ok();
28-
}
29-
}
30-
314
#[napi]
325
pub fn scrypt_hash(password_to_hash: String) -> String {
336
return <CASScrypt as CASPasswordHasher>::hash_password(password_to_hash);
@@ -40,24 +13,12 @@ pub fn scrypt_verify(hashed_password: String, password_to_verify: String) -> boo
4013

4114
#[napi]
4215
pub fn scrypt_hash_threadpool(password_to_hash: String) -> String {
43-
let (sender, receiver) = mpsc::channel();
44-
rayon::spawn(move || {
45-
let thread_result = <CASScrypt as CASPasswordHasher>::hash_password(password_to_hash);
46-
sender.send(thread_result);
47-
});
48-
let result = receiver.recv().unwrap();
49-
result
16+
return <CASScrypt as CASPasswordHasher>::hash__password_threadpool(password_to_hash);
5017
}
5118

5219
#[napi]
5320
pub fn scrypt_verify_threadpool(hashed_password: String, password_to_verify: String) -> bool {
54-
let (sender, receiver) = mpsc::channel();
55-
rayon::spawn(move || {
56-
let thread_result = <CASScrypt as CASPasswordHasher>::verify_password(hashed_password, password_to_verify);
57-
sender.send(thread_result);
58-
});
59-
let result = receiver.recv().unwrap();
60-
result
21+
return <CASScrypt as CASPasswordHasher>::verify_password_threadpool(hashed_password, password_to_verify);
6122
}
6223

6324
#[test]

0 commit comments

Comments
 (0)