Skip to content

+ EGG: bzip2, AZO, LZMA, solid, ZIP/AES/LEA encryption - #513

Open
Hawkynt wants to merge 7 commits into
mainfrom
feat/egg-methods
Open

Hawkynt wants to merge 7 commits into
mainfrom
feat/egg-methods

Conversation

@Hawkynt

@Hawkynt Hawkynt commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

EGG reader now decodes bzip2, AZO and LZMA, solid archives and ZIP 2.0 / AES / LEA encryption, and parses real ALZip filename fields and comment records correctly. The writer no longer emits a zero-size block for empty files.

Rung 1: AZO and the encryption headers converted from EggDotNet (MIT), notices beside the code.

Verification:

  • 15 ALZip-written archives from EggDotNet's corpus, every block CRC-32 checked (EggReferenceTests).
  • EggDotNet reads our writer's ours.egg with valid CRCs (Egg/ReferenceVectors/eggdotnet-listing.txt); writer output pinned byte for byte.
  • FullyQualifiedName~Egg (58) and CatalogueConsistency green locally.

Split (multi-volume) archives remain refused.

Integration update: depends on #537 for shared Intel HEX payload validation exposed by the required Linux suite. The dependency is integrated for CI and must land first; after it merges, the remaining diff is this PR's format change. The refreshed solution build and focused format, firmware, README and architecture checks pass.

Hawkynt and others added 7 commits October 23, 2026 15:12
The reader handled store and deflate only and misread real ALZip
archives in two places:
# the filename field's size counts the name only; the code page and
  parent-path id ALZip puts in front of it are not counted, so names
  were cut short;
# a comment record between a file header and its blocks (and at the
  top level) stopped the parse.
* the writer no longer emits a zero-size block for an empty file;
  ALZip writes none and EggDotNet cannot read that entry otherwise.

Rung 1: EggDotNet (akolman/EggDotNet master, MIT) converted for AZO
(Compression.Core/Dictionary/Azo) and the EGG encryption headers
(WinZip-style AES, LEA in CTR mode); notices sit beside the code.
Nothing permissive above it covers AZO or LEA.

Verified against EggDotNet's ALZip-written corpus (15 archives, each
block CRC-32 checked) and the other way: EggDotNet reads our writer's
ours.egg with valid CRCs (eggdotnet-listing.txt); the writer output is
pinned byte for byte. Split archives stay refused.
Retain EGG and main reference archives together, record the EggDotNet AZO and ZIP/AES/LEA conversion notices, keep main artwork and regenerate Core and Archives API documentation.

Verified: Release solution build, 89 focused format/codec/documentation/provenance tests passed, documentation generation completed without errors.
Current-main fixtures, provenance additions and public API counts overlap the EGG branch. Preserve both sets and regenerate the Core summary. Verified solution build, 70 focused tests and Core and Archive documentation generation.
Adding a second named payload to Intel HEX could silently discard a file because the shared image builder kept only the first payload in filesystem enumeration order. Reject multiple non-metadata payloads, including an empty first payload, before any output is written. Tests verify creation refusal and byte-preserving add refusal.

Verified all three regressions fail before the fix and pass after it, 93 focused tests, 34280 required tests with 1582 skips and no failures, and three package documentation checks.
Bring the firmware payload validation fix onto current main after partitioned-disk support merged. Verified solution build, 299 focused tests and all three package documentation checks; the preceding required suite passed 34280 tests.
Integrate the independently tested Intel HEX payload-loss fix from PR #537 before rerunning the required suite for PR #513. Verified the solution build and focused format, firmware, documentation and architecture tests.
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