Skip to content

feat: switch hash verification from SHA-256 to xxHash3-64 - #12

Merged
cebarks merged 2 commits into
mainfrom
worktree-feat+xxhash3-migration
Jul 31, 2026
Merged

feat: switch hash verification from SHA-256 to xxHash3-64#12
cebarks merged 2 commits into
mainfrom
worktree-feat+xxhash3-migration

Conversation

@cebarks

@cebarks cebarks commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Summary

  • Replaces SHA-256 with xxHash3-64 in SyncEngine.VerifyHashes to match Quartermaster server change (PR #372)
  • Adds System.IO.Hashing NuGet package (v9.0.13, targets net462, zero transitive dependencies)
  • Updates PostBuild to bundle System.IO.Hashing.dll alongside Convoy.dll
  • Updates README installation instructions and hash algorithm reference

Verification

Cross-implementation hash agreement confirmed — C# XxHash3.GetCurrentHashAsUInt64().ToString("x16") and Rust format!("{:016x}", xxh3_64(data)) produce identical output for all test vectors:

Input C# Rust
"hello world" d447b1ea40e6988b d447b1ea40e6988b
"" (empty) 2d06800538d394c2 2d06800538d394c2

Test plan

  • Build succeeds (0 warnings, 0 errors)
  • System.IO.Hashing.dll present in both bin/Debug/ and Build/BepInEx/plugins/Convoy/
  • Cross-implementation hash match verified (C# vs Rust, multiple inputs)
  • Stream-based and in-memory hash APIs produce identical results
  • Integration test: sync against Quartermaster dev server with xxHash3 catalog

Implemented with the help of Claude Code

cebarks and others added 2 commits July 31, 2026 15:04
Matches Quartermaster PR #372 which changed server-side hashing.
Adds System.IO.Hashing NuGet package (zero transitive deps).
Catalog now sends 16-char xxHash3-64 hex; VerifyHashes updated to match.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hash algorithm reference: SHA-256 → xxHash3
- Installation: mention System.IO.Hashing.dll alongside Convoy.dll

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cebarks
cebarks merged commit 7dc3d24 into main Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant