implement plaintext/crypttext merkle trees #64
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#64
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
the "thingA" block (scheduled to be renamed in #62) should include the root hashes of a pair of merkle trees: one computed over the segments of plaintext, and another computed over the segments of crypttext.
This will give us the ability to validate individual segments of plaintext (such that we can detect corrupted encryption keys, or bugs in FEC or decryption). At the moment the only form of validation which can detect such problems is the FileID, which cannot be computed until the entire file has been downloaded.
The hash trees themselves are stored in the Bucket, and accessed with a get/set method pair for each tree. All buckets store the same data.
For a first cut, we'll retrieve all the hashes at the same time. A later enhancement should be to retrieve only the hashes we actually need for any given block, to improve the alacrity.
this is fully implemented now (I think changeset:c81f2b01ffc6d6c7 was the last fix). It needs more exhaustive unit tests to exercise the failure cases, but that's not a blocker for 0.2.1.
ok, I implemented a huge collection of tests for this, and I'm now pretty confident that all the possible error cases are sufficiently exercised.