feat(BA-6158): support TUS Checksum extension#11769
Draft
jopemachine wants to merge 1 commit into
Draft
Conversation
This was referenced May 22, 2026
8bd46b7 to
1b3c6b7
Compare
dada14e to
0d1bf13
Compare
1b3c6b7 to
c18c069
Compare
0d1bf13 to
7dcbab8
Compare
0b8250b to
638c33f
Compare
84e303d to
fc4dc36
Compare
638c33f to
4be1e1d
Compare
fc4dc36 to
968d6c3
Compare
8b88451 to
da3f5cf
Compare
b40ebc8 to
a94454f
Compare
a1f3ce9 to
80b06c6
Compare
a94454f to
583cb92
Compare
80b06c6 to
9cf8e25
Compare
583cb92 to
1f2fc01
Compare
9cf8e25 to
a2bde01
Compare
1f2fc01 to
4c07f47
Compare
9ecba5c to
0d1a512
Compare
7a5736b to
b4b7c83
Compare
e37ca75 to
cf51fc2
Compare
b4b7c83 to
f46941b
Compare
cf51fc2 to
c171fa4
Compare
6a94d31 to
794895f
Compare
c171fa4 to
e517c70
Compare
794895f to
ded76e9
Compare
6acff68 to
e14f59f
Compare
b1e94f6 to
1f3eb55
Compare
51181ab to
fccee9f
Compare
1f3eb55 to
4d873d5
Compare
fccee9f to
ee1e510
Compare
4d873d5 to
3830b87
Compare
ee1e510 to
087b43d
Compare
43bced8 to
8dde2c9
Compare
087b43d to
5dd870e
Compare
8dde2c9 to
d09efa6
Compare
c9c67a8 to
e35aee1
Compare
4381705 to
93418d2
Compare
8482a07 to
b761e68
Compare
Opt-in per-chunk integrity verification on storage proxy uploads.
- Parse \`Upload-Checksum: sha256 <base64-digest>\` on PATCH; compare to
the sha256 computed while streaming the chunk body. On mismatch,
raise \`ChunkChecksumMismatchError\` (HTTP 460 per TUS Checksum
extension) and discard the temp chunk file.
- Reject malformed header values (missing digest, non-sha256 algorithm,
invalid base64, wrong digest length) with
\`InvalidUploadChecksumHeaderError\` (400).
- Advertise the extension in OPTIONS via \`Tus-Extension: checksum\` and
\`Tus-Checksum-Algorithm: sha256\`. Add \`Upload-Checksum\` to the
Access-Control-Allow-Headers / Expose-Headers lists.
Clients that do not send the header observe no behavior change.
Tests cover matching / mismatched / malformed header cases.
Resolves BA-6158. Part of epic BA-6153 (implements BA-3974).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📚 Stacked PRs
This PR is part of a 5-PR stack implementing BA-3974 (epic: BA-6153). Merge in order:
feat(BA-6155): add metadata-driven chunk-store upload session enginefix(BA-6156): rewire TUS PATCH/HEAD to chunk-based store(actual user-visible fix)test(BA-6157): add multi-proxy NFS race regression testfeat(BA-6158): support TUS Checksum extension← you are herefeat(BA-6159): add /upload/status endpoint + progress headersSummary
Resolves BA-6158.