diff --git a/Cargo.lock b/Cargo.lock index 38579f749a..8f92d4e1ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -293,6 +293,18 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "async-stream" version = "0.3.6" @@ -894,12 +906,16 @@ dependencies = [ ] [[package]] -name = "blake2" -version = "0.10.6" +name = "blake3" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ - "digest", + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", ] [[package]] @@ -1082,6 +1098,12 @@ dependencies = [ "tiny-keccak", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "convert_case" version = "0.6.0" @@ -1884,11 +1906,10 @@ dependencies = [ "aws-sdk-s3", "bb8", "bb8-postgres", - "blake2", + "blake3", "bytes", "config", "futures-util", - "hex", "hulyrs", "ksuid", "md5", diff --git a/Cargo.toml b/Cargo.toml index 901fdc3e1e..95274d4308 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,6 @@ bb8-postgres = { version = "0.9.0", features = ["with-uuid-1"] } md5 = "0.8.0" size = { version = "0.5.0", features = ["serde"] } uuid = { version = "1.18", features = ["v4", "serde"] } -hex = "0.4.3" serde_json = "1.0" hulyrs = { git = "https://github.com/hcengineering/hulyrs.git", features = [ "actix", @@ -39,9 +38,9 @@ reqwest = { version = "0.12.15", default-features = false, features = [ futures-util = "0.3.31" tokio-stream = "0.1.17" thiserror = "2.0.16" -blake2 = "0.10.6" bytes = "1.10.1" ksuid = "0.2.0" tracing-opentelemetry = "0.31.0" mime = "0.3.17" async-stream = "0.3.6" +blake3 = "1.8.2" diff --git a/src/handlers.rs b/src/handlers.rs index b6f242f729..f36a5bd97f 100644 --- a/src/handlers.rs +++ b/src/handlers.rs @@ -10,7 +10,7 @@ use actix_web::{ }, web::{Data, Header, Path, Payload}, }; -use blake2::{Blake2s256, Digest}; +use blake3::Hasher; use bytes::{Bytes, BytesMut}; use futures_util::{Stream, StreamExt}; use serde::{Deserialize, Serialize}; @@ -141,7 +141,7 @@ async fn upload(s3: &S3Client, pool: &Pool, mut payload: Payload) -> Result Result HandlerResult { let response = if !parts.is_empty() { let mut content_length = 0; - let mut etag = Blake2s256::new(); + let mut etag = Hasher::new(); for part in parts.iter() { content_length += part.data.size; @@ -382,7 +382,7 @@ pub async fn get(request: HttpRequest) -> HandlerResult { let mut response = HttpResponse::Ok(); response.insert_header((header::CONTENT_LENGTH, content_length)); - response.insert_header((header::ETAG, hex::encode(etag.finalize()))); + response.insert_header((header::ETAG, etag.finalize().to_hex().to_string())); let headers = parts[0].data.headers.as_ref(); if let Some(headers) = headers {