Document the current behavior and add a changelog - #25
Merged
Conversation
The README still told people to `pip3 install`, said nothing about which Pythons
are supported, and gave no guidance on the one thing that decides whether the
tool works at all: whether your keys have enough entropy for your plaintexts.
Adds sections on choosing and testing keys with `-t`, on `--seed` being for
testing rather than secrecy, on performance and where the time actually goes, on
running the tests, and a table of the three ciphertext format versions. Notes
that decryption now accepts plain as well as gzipped input, and `-` for stdin.
Every command in the README was run verbatim against this build, and every
number in it measured on this machine rather than estimated. The ciphertext
expansion figure is stated as a range across sizes -- 5.5x at 512 B down to 2.7x
at 512 KiB -- because a single number would have been wrong at both ends: the
dictionary header is a fixed cost that only amortises with size.
The changelog leads with the two defects that could lose or expose data, because
those are the reason to care about this release rather than the interesting ones:
* `--length-checksum` corrupted plaintexts in 34 of 120 randomized round-trips,
invisibly, because the length header truncated the damage away. Anyone with
ciphertexts from that mode should check them.
* Ciphertexts recorded the output filename in cleartext in the gzip header,
which for a deniability tool is recoverable metadata in the first 30 bytes.
It also documents the removed and renamed API. `Encrypter`'s hooks changed shape
rather than changing meaning under the same names, so an out-of-tree subclass
fails loudly instead of silently doing something else.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01367hFob9sd4xpDmVT4uoFy
Switches behaviour/colour/labelled/amortised/summarise/honouring/ desynchronisation/relabelled to their American spellings across the README, changelog, source comments, docstrings, and the affected test names. LICENSE is left alone: it is the verbatim GPL text. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01367hFob9sd4xpDmVT4uoFy
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 on #24. Last one in the series.
The README still told people to
pip3 install, said nothing about which Pythons are supported, and gave no guidance on the one thing that decides whether the tool works at all: whether your keys have enough entropy for your plaintexts.README
New sections on choosing and testing keys with
-t, on--seedbeing for testing rather than secrecy, on performance and where the time actually goes, on running the tests, and a table of the three ciphertext format versions. Notes that decryption now accepts plain as well as gzipped input, and-for stdin.Every command in the README was run verbatim against this build, and every number measured on this machine rather than estimated. The ciphertext expansion figure is stated as a range across sizes — 5.5× at 512 B down to 2.7× at 512 KiB — because a single number would have been wrong at both ends: the dictionary header is a fixed cost that only amortizes with size. (My first draft said "around 2.7×", which measurement showed was only true for large inputs.)
CHANGELOG
Leads with the two defects that could lose or expose data, because those are the reason to care about this release rather than the interesting ones:
--length-checksumcorrupted plaintexts in 34 of 120 randomized round-trips, invisibly, because the length header truncated the damage away. Anyone holding ciphertexts from that mode should check them.It also documents the removed and renamed API.
Encrypter's hooks changed shape rather than changing meaning under the same names, so an out-of-tree subclass fails loudly instead of silently doing something else.American English
A second commit converts British spellings (behaviour, colour, labelled, amortised, summarise, honouring, desynchronisation, relabelled) to American across the README, changelog, source comments, docstrings, and affected test names.
LICENSEis untouched — it is verbatim GPL text.Note that commit messages and PR descriptions already merged still contain British spellings; those are in history and not worth rewriting.
Verified
-texample, and stdin example all run verbatim and produce the documented outputlenticrypt.lenticryptgone,from lenticrypt import ...intact, no namespace leaks,ENCRYPTION_VERSION3 and__version__0.4.0 as documentedruffandtyclean🤖 Generated with Claude Code
https://claude.ai/code/session_01367hFob9sd4xpDmVT4uoFy