Firmare un PDF con una firma PAdES baseline (ricetta spostata)
Questa ricetta è stata spostata
Sezione intitolata “Questa ricetta è stata spostata”La procedura dettagliata di firma contenuta in precedenza in questa pagina è stata sostituita. Usare al suo posto la ricetta canonica:
Perché questa pagina è cambiata (errata corrige)
Sezione intitolata “Perché questa pagina è cambiata (errata corrige)”Una versione precedente di questa pagina affermava che il punto di ingresso di alto livello Document::setSignature() → save() non era collegato e che generava NotImplementedException. Questo non è più vero. Il punto di ingresso di alto livello ora produce una firma reale.
Document::setSignature($cert, SignatureLevel::PAdES_B_B)->save() (e gli equivalenti output() / getPdfData()) scrive un campo /Sig con un /ByteRange e, nella voce Contents del dizionario della firma, un oggetto CMS SignedData codificato in DER: la struttura che ISO 32000-2 §12.8 specifica per il SubFilter ETSI.CAdES.detached. Il risultato è verificabile come CMS: un verificatore CMS/PKCS#7 standard può analizzarlo e verificarlo.
- B-B — il livello Core — viene prodotto direttamente tramite questo punto di ingresso.
- B-T aggiunge una marca temporale RFC 3161 signature-time-stamp passando un
TsaClientnella stessa chiamata. - B-LT / B-LTA sono raggiungibili tramite lo stesso punto di ingresso di alto livello (
setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save()) quando sono installati i pacchetti Pro e Enterprise; in loro assenza la chiamata fallisce in modo sicuro (fail-closed) anziché scrivere una revisione a lungo termine parziale. Anche per i documenti cifrati l’operazione fallisce in modo sicuro (fail-closed) per B-LT/B-LTA.
Il percorso di livello inferiore NextPDF\Security\Signature\DigitalSigner è ancora supportato ed è quello illustrato dall’inizio alla fine nella ricetta canonica; il punto di ingresso di alto livello è un livello di comodità sottile sopra lo stesso motore di firma. La suite di integrazione copre entrambi i percorsi e produce un oggetto CMS reale e analizzabile.
Avvertenza U-1 (ambito dell’affermazione). «verificabile come CMS» significa che l’oggetto generato è un CMS
SignedDataben formato secondo RFC 5652 e ISO 32000-2 §12.8 — non costituisce un’attestazione di conformità al profilo baseline ETSI EN 319 142-1, né di validità legale. La sezione di tale standard relativa ai livelli baseline non è presente nel corpus di verifica; il requisito B-T disignature-time-stampè stato verificato rispetto a ETSI EN 319 122-1 §5.3 con RFC 3161, RFC 5652, RFC 5816 e ISO 32000-2 §12.8. B-LT/B-LTA generano la struttura di convalida a lungo termine (un dizionario DSS più una revisione DocTimeStamp); non sono dichiarati come testati per la conformità al profilo. La determinazione della conformità e della validità legale spetta a un validatore indipendente.
Ciò che è rimasto invariato
Sezione intitolata “Ciò che è rimasto invariato”I fatti strutturali che la vecchia pagina affermava sull’artefatto scritto su disco restano corretti. La ricetta sostitutiva li riprende, insieme alle relative evidenze:
- Il valore della firma è memorizzato nella voce
Contentsdel dizionario della firma (ISO 32000-2 §12.8.1). - Il digest è calcolato sul
ByteRangeed esclude il valore stesso della firma (ISO 32000-2 §12.8.1).
Questa pagina non afferma che una qualsiasi firma risultante sia legalmente valida. Ciò dipende dal certificato, dalla sua ancora di fiducia e dai criteri del verificatore, tutti elementi che esulano da questa libreria.