Skip to content

feat(signing): Mode 2 Ed25519 manifest signer (optional extra) - #269

Open
Demiladepy wants to merge 1 commit into
backblaze-labs:mainfrom
Demiladepy:feat/mode2-ed25519-signer
Open

feat(signing): Mode 2 Ed25519 manifest signer (optional extra)#269
Demiladepy wants to merge 1 commit into
backblaze-labs:mainfrom
Demiladepy:feat/mode2-ed25519-signer

Conversation

@Demiladepy

Copy link
Copy Markdown

Summary

Implements Trust Mode 2 — authenticated integrity from docs/features/trust-modes.md.

Mode 1 proves an asset's bytes are intact; it doesn't prove who produced it. This PR adds optional Ed25519 manifest signing to genblaze_core.signing, so a pipeline can prove a manifest was produced by a trusted key. It complements v0.6.0's verify --fetch (bytes unchanged) with an authorship guarantee — together they close the full provenance chain that EU AI Act Article 50 transparency calls for.

Shipped behind an optional [signing] extra, so core stays dependency-light and existing behavior is unchanged.

Changes

  • libs/core/genblaze_core/signing/base.pySignatureBundle + verification interface
  • libs/core/genblaze_core/signing/ed25519.pyEd25519Signer, canonical-JSON signing, verify_signature_bundle
  • libs/core/genblaze_core/signing/__init__.py — lazy exports
  • libs/core/genblaze_core/__init__.py — surface the signing module
  • libs/core/pyproject.toml — optional [signing] extra (cryptography)
  • libs/core/tests/unit/test_ed25519_signing.py — sign/verify + tamper-detection tests
  • docs/features/trust-modes.md — document Mode 2

Test plan

  • make test passes (unit tests for sign/verify + tamper detection added)
  • make lint passes
  • Docs updated — trust-modes.md describes Mode 2

Related

Reference consumer: ATTEST, an EU AI Act Article 50 compliance gateway built on Genblaze + Backblaze B2 (Backblaze Generative Media Hackathon). Signs every generated asset's manifest with Ed25519 and exposes a public verifier.

Co-authored-by: Cursor <cursoragent@cursor.com>
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