chore(deps): use crate `crypto-utils` instead of `rust_utilities`
This commit is contained in:
parent
1dcf7250ba
commit
d413a4fa82
|
@ -341,6 +341,19 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crypto-utils"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c21850a20f41468aedddf2dcf88124ae8e6959c8c7b610c986f870fd62fbba3c"
|
||||||
|
dependencies = [
|
||||||
|
"chrono",
|
||||||
|
"jsonwebtoken",
|
||||||
|
"serde",
|
||||||
|
"sha1",
|
||||||
|
"sha2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "digest"
|
name = "digest"
|
||||||
version = "0.10.3"
|
version = "0.10.3"
|
||||||
|
@ -651,7 +664,6 @@ dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"homedisk-types",
|
"homedisk-types",
|
||||||
"log",
|
"log",
|
||||||
"rust_utilities",
|
|
||||||
"serde",
|
"serde",
|
||||||
"sqlx",
|
"sqlx",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
|
@ -667,13 +679,13 @@ dependencies = [
|
||||||
"axum-auth",
|
"axum-auth",
|
||||||
"base64",
|
"base64",
|
||||||
"byte-unit",
|
"byte-unit",
|
||||||
|
"crypto-utils",
|
||||||
"futures",
|
"futures",
|
||||||
"homedisk-database",
|
"homedisk-database",
|
||||||
"homedisk-types",
|
"homedisk-types",
|
||||||
"hyper",
|
"hyper",
|
||||||
"jsonwebtoken",
|
"jsonwebtoken",
|
||||||
"log",
|
"log",
|
||||||
"rust_utilities",
|
|
||||||
"serde",
|
"serde",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tower-http",
|
"tower-http",
|
||||||
|
@ -685,8 +697,9 @@ version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"axum",
|
"axum",
|
||||||
|
"crypto-utils",
|
||||||
"dirs",
|
"dirs",
|
||||||
"rust_utilities",
|
"hex",
|
||||||
"serde",
|
"serde",
|
||||||
"sqlx",
|
"sqlx",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
|
@ -1191,20 +1204,6 @@ dependencies = [
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rust_utilities"
|
|
||||||
version = "0.2.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8524c76496ed3097b6d24d7cb3b435cc8a84cbded6da7153942f6daa3ade9da7"
|
|
||||||
dependencies = [
|
|
||||||
"chrono",
|
|
||||||
"hex",
|
|
||||||
"jsonwebtoken",
|
|
||||||
"serde",
|
|
||||||
"sha-1",
|
|
||||||
"sha2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustc-demangle"
|
name = "rustc-demangle"
|
||||||
version = "0.1.21"
|
version = "0.1.21"
|
||||||
|
@ -1290,10 +1289,10 @@ dependencies = [
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sha-1"
|
name = "sha1"
|
||||||
version = "0.10.0"
|
version = "0.10.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f"
|
checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"cpufeatures",
|
"cpufeatures",
|
||||||
|
|
|
@ -10,7 +10,6 @@ futures-util = "0.3.21"
|
||||||
serde = { version = "1.0.137", features = ["derive"] }
|
serde = { version = "1.0.137", features = ["derive"] }
|
||||||
sqlx = { version = "0.5.13", features = ["runtime-tokio-rustls", "sqlite"] }
|
sqlx = { version = "0.5.13", features = ["runtime-tokio-rustls", "sqlite"] }
|
||||||
uuid = { version = "1.1.1", features = ["v5"] }
|
uuid = { version = "1.1.1", features = ["v5"] }
|
||||||
rust_utilities = { version = "0.2.0", features = ["sha"] }
|
|
||||||
homedisk-types = { path = "../types", features = ["database"] }
|
homedisk-types = { path = "../types", features = ["database"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
@ -135,7 +135,7 @@ mod tests {
|
||||||
|
|
||||||
use crate::{Database, User};
|
use crate::{Database, User};
|
||||||
|
|
||||||
/// Utils to open database in tests
|
/// Utils to open database in tests
|
||||||
async fn open_db() -> Database {
|
async fn open_db() -> Database {
|
||||||
Database::open("sqlite::memory:").await.expect("open db")
|
Database::open("sqlite::memory:").await.expect("open db")
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ futures = "0.3.21"
|
||||||
hyper = { version = "0.14.19", features = ["full"] }
|
hyper = { version = "0.14.19", features = ["full"] }
|
||||||
jsonwebtoken = "8.1.0"
|
jsonwebtoken = "8.1.0"
|
||||||
log = "0.4.17"
|
log = "0.4.17"
|
||||||
rust_utilities = { version = "0.2.0", features = ["jsonwebtoken"] }
|
crypto-utils = { version = "0.2.0", features = ["jwt"] }
|
||||||
serde = { version = "1.0.137", features = ["derive"] }
|
serde = { version = "1.0.137", features = ["derive"] }
|
||||||
thiserror = "1.0.31"
|
thiserror = "1.0.31"
|
||||||
tower-http = { version = "0.3.4", features = ["full"] }
|
tower-http = { version = "0.3.4", features = ["full"] }
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
use crypto_utils::jsonwebtoken::{Claims, Token};
|
||||||
use homedisk_types::errors::{AuthError, ServerError};
|
use homedisk_types::errors::{AuthError, ServerError};
|
||||||
use jsonwebtoken::TokenData;
|
use jsonwebtoken::TokenData;
|
||||||
use rust_utilities::crypto::jsonwebtoken::{Claims, Token};
|
|
||||||
|
|
||||||
/// Validate user token
|
/// Validate user token
|
||||||
pub fn validate_jwt(secret: &[u8], token: &str) -> Result<TokenData<Claims>, ServerError> {
|
pub fn validate_jwt(secret: &[u8], token: &str) -> Result<TokenData<Claims>, ServerError> {
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
|
use crypto_utils::jsonwebtoken::{Claims, Token};
|
||||||
use homedisk_database::{Database, User};
|
use homedisk_database::{Database, User};
|
||||||
use homedisk_types::errors::{AuthError, ServerError};
|
use homedisk_types::errors::{AuthError, ServerError};
|
||||||
use rust_utilities::crypto::jsonwebtoken::{Claims, Token};
|
|
||||||
|
|
||||||
/// Create user token
|
/// Create user token
|
||||||
pub fn create_token(user: &User, secret: &[u8], expires: i64) -> Result<String, ServerError> {
|
pub fn create_token(user: &User, secret: &[u8], expires: i64) -> Result<String, ServerError> {
|
||||||
let token = Token::new(secret, Claims::new(user.id.clone(), expires));
|
let token = Token::new(secret, Claims::new(&user.id, expires))
|
||||||
|
.map_err(|_| ServerError::AuthError(AuthError::TokenGenerate))?;
|
||||||
|
|
||||||
match token {
|
Ok(token.encoded)
|
||||||
Ok(token) => Ok(token.encoded),
|
|
||||||
Err(_) => Err(ServerError::AuthError(AuthError::TokenGenerate)),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Search for a user
|
/// Search for a user
|
||||||
|
@ -39,6 +37,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_create_token() {
|
fn test_create_token() {
|
||||||
let secret = b"secret";
|
let secret = b"secret";
|
||||||
|
|
||||||
let user = User::new("username", "password");
|
let user = User::new("username", "password");
|
||||||
|
|
||||||
create_token(&user, secret, 1).unwrap();
|
create_token(&user, secret, 1).unwrap();
|
||||||
|
|
|
@ -5,7 +5,7 @@ edition = "2021"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
config = ["toml", "dirs"]
|
config = ["toml", "dirs"]
|
||||||
database = ["rust_utilities", "sqlx"]
|
database = ["crypto-utils", "hex", "sqlx"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
thiserror = "1.0.31"
|
thiserror = "1.0.31"
|
||||||
|
@ -14,11 +14,8 @@ anyhow = "1.0.57"
|
||||||
serde = { version = "1.0.137", features = ["derive"] }
|
serde = { version = "1.0.137", features = ["derive"] }
|
||||||
zeroize = { version = "1.5.5", features = ["derive"] }
|
zeroize = { version = "1.5.5", features = ["derive"] }
|
||||||
axum = { version = "0.5.7", optional = true }
|
axum = { version = "0.5.7", optional = true }
|
||||||
|
|
||||||
# config
|
|
||||||
toml = { version = "0.5.9", optional = true }
|
toml = { version = "0.5.9", optional = true }
|
||||||
dirs = { version = "4.0.0", optional = true }
|
dirs = { version = "4.0.0", optional = true }
|
||||||
|
crypto-utils = { version = "0.2.0", features = ["sha"], optional = true }
|
||||||
# database
|
hex = { version = "0.4.3", optional = true }
|
||||||
rust_utilities = { version = "0.2.0", optional = true }
|
|
||||||
sqlx = { version = "0.5.13", features = ["sqlite"], optional = true }
|
sqlx = { version = "0.5.13", features = ["sqlite"], optional = true }
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use rust_utilities::crypto::sha::{encode, Algorithm, CryptographicHash};
|
use crypto_utils::sha::{Algorithm, CryptographicHash};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
/// SQL user table
|
/// SQL user table
|
||||||
|
@ -31,7 +31,7 @@ impl User {
|
||||||
let id = Uuid::new_v5(&Uuid::NAMESPACE_X500, &sha1_name).to_string();
|
let id = Uuid::new_v5(&Uuid::NAMESPACE_X500, &sha1_name).to_string();
|
||||||
|
|
||||||
// hash password using SHA-512
|
// hash password using SHA-512
|
||||||
let password = encode(CryptographicHash::hash(
|
let password = hex::encode(CryptographicHash::hash(
|
||||||
Algorithm::SHA512,
|
Algorithm::SHA512,
|
||||||
password.as_bytes(),
|
password.as_bytes(),
|
||||||
));
|
));
|
||||||
|
@ -52,9 +52,9 @@ impl User {
|
||||||
///
|
///
|
||||||
/// let user = User::new("medzik", "whatever");
|
/// let user = User::new("medzik", "whatever");
|
||||||
///
|
///
|
||||||
/// let dir = user.user_dir("/home/homedisk"); // will return `/home/homedisk/medzik`
|
/// let dir = user.user_dir("/storage"); // will return `/storage/medzik`
|
||||||
///
|
///
|
||||||
/// assert_eq!(dir, "/home/homedisk/medzik")
|
/// assert_eq!(dir, "/storage/medzik")
|
||||||
/// ```
|
/// ```
|
||||||
pub fn user_dir(&self, storage: &str) -> String {
|
pub fn user_dir(&self, storage: &str) -> String {
|
||||||
// get a user storage path
|
// get a user storage path
|
||||||
|
|
Loading…
Reference in New Issue