use blake3

Signed-off-by: Alexey Aristov <aav@acm.org>
This commit is contained in:
Alexey Aristov
2025-08-26 19:19:23 +02:00
parent 07bc3e3add
commit 5e2a30b200
3 changed files with 33 additions and 13 deletions
Generated
+27 -6
View File
@@ -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",
+1 -2
View File
@@ -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"
+5 -5
View File
@@ -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<Blob
let mut buffer = BytesMut::with_capacity(1024 * 1024 * 6);
let mut complete = CompletedMultipartUpload::builder();
let mut part_number = 1;
let mut hash = Blake2s256::new();
let mut hash = Hasher::new();
let mut total_in = 0;
let mut total_uploaded = 0;
@@ -192,7 +192,7 @@ async fn upload(s3: &S3Client, pool: &Pool, mut payload: Payload) -> Result<Blob
.send()
.await?;
let hash = hex::encode(hash.finalize());
let hash = hash.finalize().to_hex().to_string();
debug!(hash, "upload complete");
@@ -372,7 +372,7 @@ pub async fn get(request: HttpRequest) -> HandlerResult<HttpResponse> {
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<HttpResponse> {
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 {