Commit 667cc747 authored by Nugine's avatar Nugine
Browse files

feat(s3s/checksum): add crc64nvme

parent 95f19533
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2058,6 +2058,7 @@ dependencies = [
 "chrono",
 "crc32c",
 "crc32fast",
 "crc64fast-nvme",
 "digest 0.11.0-pre.9",
 "futures",
 "hex-simd",
+1 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ zeroize = "1.8.1"
std-next = "0.1.1"
sync_wrapper = { version = "1.0.1", default-features = false }
tokio = { version = "1.40.0", features = ["time"] }
crc64fast-nvme = "1.2.0"

[dev-dependencies]
tokio = { version = "1.40.0", features = ["full"] }
+8 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ pub struct ChecksumHasher {
    pub crc32c: Option<crc32c::Crc32cHasher>,
    pub sha1: Option<sha1::Sha1>,
    pub sha256: Option<sha2::Sha256>,
    pub crc64nvme: Option<crc64fast_nvme::Digest>,
}

impl ChecksumHasher {
@@ -28,6 +29,9 @@ impl ChecksumHasher {
        if let Some(sha256) = &mut self.sha256 {
            sha256.update(data);
        }
        if let Some(crc64nvme) = &mut self.crc64nvme {
            crc64nvme.write(data);
        }
    }

    #[must_use]
@@ -49,6 +53,10 @@ impl ChecksumHasher {
            let sum = sha256.finalize();
            ans.checksum_sha256 = Some(Self::base64(sum.as_ref()));
        }
        if let Some(crc64nvme) = self.crc64nvme {
            let sum = crc64nvme.sum64().to_be_bytes();
            ans.checksum_crc64nvme = Some(Self::base64(&sum));
        }
        ans
    }