Vai al contenuto

La firma della modalità locale

POST https://api.kennmarq.com/v1/sign

In modalità locale la filigrana e le Content Credentials vengono create sulla tua macchina, e il file non la lascia mai. Arriva qui solo il suo manifest, per essere firmato con la nostra chiave e ricevere la marca temporale dal nostro server. L’SDK Python e i nodi ComfyUI fanno tutto questo per te; questa pagina serve a chi vuole implementarlo da sé.

Come funziona

  1. Crea il manifest e incorporalo con la libreria C2PA (c2pa-python 0.38.1), firmandolo con una catena di certificati usa e getta creata allo scopo. C2PA verifica ogni firma rispetto al suo certificato, quindi non può firmare con una chiave che non possiede.
  2. Inviaci il manifest store che ha incorporato: circa 13 KB di claim e asserzioni, mai pixel. Disattiva le miniature.
  3. Lo verifichiamo (vedi sotto), firmiamo lo stesso claim con la nostra chiave, apponiamo la marca temporale alla firma e ti rimandiamo lo store, della stessa dimensione, con la nostra firma al posto di quella usa e getta.
  4. Rimettilo nel file al posto del vecchio. L’hard binding del file esclude il manifest, quindi resta valido. Poi, prima di usare il file, leggilo con i nostri certificati radice (GET /v1/certificate): deve risultare Trusted, con una marca temporale convalidata.
curl
curl https://api.kennmarq.com/v1/sign \
  -H "Authorization: Bearer $KENNMARQ_API_KEY" \
  -H "Content-Type: application/c2pa" \
  --data-binary @manifest.c2pa -D - -o signed.c2pa

Cosa firmiamo e cosa no

Firmiamo solo ciò che conterrebbe una nostra marcatura nel cloud, così la nostra firma non può essere apposta ad altri claim:

Cosa deve contenere un manifest perché lo firmiamo
VerificaNel dettaglio
Ogni asserzione elencata nel claim è nel manifest, con l’hash che il claim le attribuiscee il manifest non ne contiene nessuna che il claim non elenchi
Solo le asserzioni che contiene una marcaturale azioni, l’hard binding, il soft binding della filigrana, il generatore, gli ingredienti: nessuna miniatura, che conterrebbe pixel
Un tipo di origine IAc2pa.created o c2pa.opened con trainedAlgorithmicMedia o compositeWithTrainedAlgorithmicMedia: firmiamo solo file creati con l’IA
Una filigrana è accompagnata dalla sua azionec2pa.watermarked.bound e un soft binding TrustMark, entrambi o nessuno dei due
Il nostro generatoreil claim indica Kennmarq.com come generatore, e il suo algoritmo di hash è SHA-256

Ogni manifest viene firmato una sola volta: creane uno nuovo per ogni file.

Risposta

200, application/c2pa: lo store firmato, con X-Mark-Id, X-Watermark-Id (quando il manifest ha una filigrana), X-Log-Index, X-Marks-Used, X-Marks-Limit e X-Request-Id. Ogni firma conta una marcatura.

  • La firma entra nel nostro registro di trasparenza come voce c2pa.local_signature. Il tuo file non lo vediamo mai, quindi la voce contiene il suo hard binding (l’hash nell’asserzione c2pa.hash.data del manifest) invece del suo SHA-256.
  • Con una filigrana, lo store firmato viene conservato come credenziale di provenienza durevole del file, senza hash del file: anche una copia i cui metadati sono stati rimossi rimanda a essa.
Le credenziali che il tuo file conteneva già viaggiano con il manifest come ingredienti, con le eventuali miniature che il loro firmatario vi ha inserito. Escludile se non devono arrivare a noi.

Errori

Errori di POST /v1/sign
StatoCodiceQuando
400invalid_requestNon è un manifest store C2PA, è un manifest già firmato oppure uno che non firmiamo; il messaggio indica quale verifica non è riuscita.
401missing_api_key, invalid_api_key, api_key_revokedVedi la pagina Autenticazione.
402quota_exceededLe marcature del mese sono esaurite.
403insufficient_scope, ip_not_allowedLa chiave non ha l’ambito sign, oppure l’indirizzo non è tra gli IP consentiti.
413payload_too_largeIl manifest store supera 1 MB.
415unsupported_media_typeIl body non è inviato come application/c2pa.
429rate_limitedTroppe chiamate in questo minuto; riprova dopo i secondi indicati da Retry-After.
502mark_failedNon è stato possibile creare e verificare la firma. Non viene addebitato nulla.
503marker_unavailable, tsa_unavailableIl servizio di firma o il server di marca temporale è momentaneamente non disponibile. Non viene addebitato nulla; riprova.

Il body degli errori segue il formato comune.