mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 16:14:40 +00:00
Concord channel messages can now carry images, wire-identical to Soapbox Armada's `encryptAttachments`: a normal channel-bound kind-9 whose ciphertext URL is appended to the content and annotated by a NIP-92 `imeta` tag with `encryption-algorithm aes-gcm`, hex `decryption-key`/`decryption-nonce`, and the plaintext `ox` hash (no `x`). The blob is AES-256-GCM ciphertext on Blossom, so the media host and relays only ever see encrypted bytes — the community's E2E guarantee holds. Reuses the NIP-17 encrypted-media stack end to end: quartz's imeta tag vocab and IMetaTagBuilder to build/parse the tag (ChannelChat.imageMessage / encryptedImageImeta / encryptedImagesOf), the shared UploadOrchestrator encrypted upload + ChatFileUploadDialog picker on the send side, and the OkHttp EncryptedBlobInterceptor keyCache on the receive side — registering each attachment's cipher (keyed by URL) lets the normal feed renderer display the decrypted image with no shared-render changes. Encryption is mandatory (no toggle, and a missing cipher fails closed). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzJ2Cwo8tg4oZq43oRa3ig