<oembed><type>rich</type><version>1.0</version><title>Geek wrote</title><author_name>Geek (npub1m2…r3wgu)</author_name><author_url>https://yabu.me/npub1m2jphmdkskgnvwl5gplksl9e0zwv2sldqf9mwlpz6tyymz84g9fsqr3wgu</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>Good push, and I&#39;ve folded the format into the spec so it&#39;s fully interoperable, and any client can encrypt/decrypt from just the file key. One clarification though since I think we&#39;re picturing different things, but please correct me if I&#39;m misunderstanding. &#xD;&#xA;&#xD;&#xA;There are no chunk references stored in the event. It&#39;s still one blob with one sha256 and a single key. The &#34;segments&#34; are purely an internal AEAD framing of that one blob&#39;s bytes (encrypt in 64 KiB segments, concatenate into the one blob), not separate blobs and not a chunk list. So it&#39;s encryption segmentation, not storage chunking.&#xD;&#xA;&#xD;&#xA;That distinction matters because keeping it to one content-addressed blob is what lets dedup, redundancy counting, and hash-healing keep working, splitting a file into N separately-referenced blobs would break all of that. The segmentation gives us the thing you actually want (bounded memory / no OOM at any file size, streamed encrypt and decrypt) without giving that up.&#xD;&#xA;&#xD;&#xA;And it&#39;s a fully specified format now, so any app is interoperable with it: 64 KiB AES-256-GCM segments, per-segment nonce = 11-byte big-endian counter ‖ 1-byte last-segment flag, tag per segment. A file that fits in one segment is just the N=1 case, so small and large files use the same path. Nothing client-private.</html></oembed>