about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-03-03T12·40+0200
committerclbot <clbot@tvl.fyi>2024-03-03T15·18+0000
commit8383e9e02e1f762013a652e9a842493a1be5bb60 (patch)
treefbc79f6f10f4b3abf17722701b9a7bcc8d7c3c82
parent9a7246ea1dac200648976be4558e29c3e9aa7eb7 (diff)
feat(tvix/castore/digests): impl From digest::Output<_> for B3Digest r/7640
This allows calling .into() to get a B3Digest.

Change-Id: I6e63b496413cd00d84acfcd15c7de0f64c79721f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11086
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
-rw-r--r--tvix/Cargo.lock3
-rw-r--r--tvix/Cargo.nix22
-rw-r--r--tvix/castore/Cargo.toml7
-rw-r--r--tvix/castore/src/digests.rs7
4 files changed, 33 insertions, 6 deletions
diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock
index 7995402ead4a..bcaa8190e5be 100644
--- a/tvix/Cargo.lock
+++ b/tvix/Cargo.lock
@@ -280,6 +280,7 @@ dependencies = [
  "cc",
  "cfg-if",
  "constant_time_eq",
+ "digest",
  "rayon",
 ]
 
@@ -649,6 +650,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
  "block-buffer",
  "crypto-common",
+ "subtle",
 ]
 
 [[package]]
@@ -3304,6 +3306,7 @@ dependencies = [
  "bstr",
  "bytes",
  "data-encoding",
+ "digest",
  "fuse-backend-rs",
  "futures",
  "hex-literal",
diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix
index 9ee11cbd94f7..2987a76751b4 100644
--- a/tvix/Cargo.nix
+++ b/tvix/Cargo.nix
@@ -923,6 +923,12 @@ rec {
             packageId = "constant_time_eq";
           }
           {
+            name = "digest";
+            packageId = "digest";
+            optional = true;
+            features = [ "mac" ];
+          }
+          {
             name = "rayon";
             packageId = "rayon";
             optional = true;
@@ -943,7 +949,7 @@ rec {
           "traits-preview" = [ "digest" ];
           "zeroize" = [ "dep:zeroize" "arrayvec/zeroize" ];
         };
-        resolvedDefaultFeatures = [ "default" "rayon" "std" ];
+        resolvedDefaultFeatures = [ "default" "digest" "rayon" "std" "traits-preview" ];
       };
       "block-buffer" = rec {
         crateName = "block-buffer";
@@ -1917,6 +1923,12 @@ rec {
             name = "crypto-common";
             packageId = "crypto-common";
           }
+          {
+            name = "subtle";
+            packageId = "subtle";
+            optional = true;
+            usesDefaultFeatures = false;
+          }
         ];
         features = {
           "blobby" = [ "dep:blobby" ];
@@ -1931,7 +1943,7 @@ rec {
           "std" = [ "alloc" "crypto-common/std" ];
           "subtle" = [ "dep:subtle" ];
         };
-        resolvedDefaultFeatures = [ "alloc" "block-buffer" "core-api" "default" "std" ];
+        resolvedDefaultFeatures = [ "alloc" "block-buffer" "core-api" "default" "mac" "std" "subtle" ];
       };
       "dirs" = rec {
         crateName = "dirs";
@@ -10288,7 +10300,7 @@ rec {
           {
             name = "blake3";
             packageId = "blake3";
-            features = [ "rayon" "std" ];
+            features = [ "rayon" "std" "traits-preview" ];
           }
           {
             name = "bstr";
@@ -10303,6 +10315,10 @@ rec {
             packageId = "data-encoding";
           }
           {
+            name = "digest";
+            packageId = "digest";
+          }
+          {
             name = "fuse-backend-rs";
             packageId = "fuse-backend-rs";
             optional = true;
diff --git a/tvix/castore/Cargo.toml b/tvix/castore/Cargo.toml
index 584e64adb8ec..a4b74cba1118 100644
--- a/tvix/castore/Cargo.toml
+++ b/tvix/castore/Cargo.toml
@@ -5,9 +5,12 @@ edition = "2021"
 
 [dependencies]
 async-stream = "0.3.5"
-blake3 = { version = "1.3.1", features = ["rayon", "std"] }
+async-tempfile = "0.4.0"
+blake3 = { version = "1.3.1", features = ["rayon", "std", "traits-preview"] }
+bstr = "1.6.0"
 bytes = "1.4.0"
 data-encoding = "2.3.3"
+digest = "0.10.7"
 futures = "0.3.30"
 lazy_static = "1.4.0"
 parking_lot = "0.12.1"
@@ -23,8 +26,6 @@ tower = "0.4.13"
 tracing = "0.1.37"
 url = "2.4.0"
 walkdir = "2.4.0"
-bstr = "1.6.0"
-async-tempfile = "0.4.0"
 
 [dependencies.fuse-backend-rs]
 optional = true
diff --git a/tvix/castore/src/digests.rs b/tvix/castore/src/digests.rs
index 137ed2669a8f..8a1938c1b649 100644
--- a/tvix/castore/src/digests.rs
+++ b/tvix/castore/src/digests.rs
@@ -26,6 +26,13 @@ impl From<B3Digest> for bytes::Bytes {
     }
 }
 
+impl From<digest::Output<blake3::Hasher>> for B3Digest {
+    fn from(value: digest::Output<blake3::Hasher>) -> Self {
+        let v = Into::<[u8; B3_LEN]>::into(value);
+        Self(Bytes::copy_from_slice(&v))
+    }
+}
+
 impl TryFrom<Vec<u8>> for B3Digest {
     type Error = Error;