feat(blobs): content-addressed blob store scaffolding

Adds core/archipelago/src/blobs.rs: a SHA-256 content-addressed store
that writes bytes to ${data_dir}/blobs/<cid> with a sibling <cid>.meta
JSON file (mime, filename, size, created_at, optional tiny thumbnail).

BlobStore::put is idempotent, max 64 MiB per blob, and issues HMAC-SHA256
capability tokens scoped to (cid, peer_pubkey_hex, expiry_epoch). Tokens
are verified in constant time and rejected on expiry. This is the
foundation piece for the mesh ContentRef typed envelope — the /blob/<cid>
HTTP route and ContentRef variant will land in a follow-up increment
once the HMAC key is plumbed from node identity.

No consumer yet, so the module compiles with dead_code warnings; these
will clear when the HTTP handler and ApiHandler state wiring land next.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-04-13 08:29:44 -04:00
co-authored by Claude Opus 4.6
parent de1b25cc78
commit 77eb1b907b
2 changed files with 168 additions and 0 deletions
+1
View File
@@ -11,6 +11,7 @@ mod auth;
mod backup;
mod constants;
mod bitcoin_rpc;
mod blobs;
mod config;
mod content_server;
mod crash_recovery;