Firme Digitali (HasSecurity)
Il trait HasSecurity fornisce setSignature() per firme digitali conformi PAdES. TCPDF-Next supporta quattro livelli firma — da base (B-B) ad archivio (B-LTA) — tramite PadesOrchestrator, TsaClient e moduli LTV. Tutti i metodi firma restituiscono static per concatenazione.
Riferimento Rapido
| Classe / Enum | Scopo |
|---|---|
CertificateInfo | Carica certificati firma (PEM o PKCS#12) |
SignatureLevel | Enum: PAdES_B_B, PAdES_B_T, PAdES_B_LT, PAdES_B_LTA |
TsaClient | Client autorità timestamp RFC 3161 |
SignatureAppearance | Widget firma visibile o invisibile |
OcspClient | Controllo revoca online RFC 6960 |
CrlFetcher | Fetch punto distribuzione CRL RFC 5280 |
Livelli Firma
| Livello | Cosa Include | Validità |
|---|---|---|
| B-B (Base) | Firma + certificato firma | Valida mentre certificato non è revocato |
| B-T (Timestamp) | B-B + timestamp RFC 3161 | Prova firma esisteva prima di un punto nel tempo |
| B-LT (Long-Term) | B-T + DSS con risposte OCSP/CRL | Verificabile dopo scadenza certificato |
| B-LTA (Archivio) | B-LT + timestamp documento + loop archivio | Verificabile indefinitamente |
Ciclo Vita Firma PAdES
Caricamento Certificati
Da File PEM
php
use Yeeefang\TcpdfNext\Security\Signature\CertificateInfo;
$cert = CertificateInfo::fromFiles(
certPath: '/path/to/certificate.pem',
keyPath: '/path/to/private-key.pem',
password: 'key-password',
extraCerts: '/path/to/ca-chain.pem', // certificati intermedi opzionali
);Da PKCS#12 (.p12 / .pfx)
php
use Yeeefang\TcpdfNext\Security\Signature\CertificateInfo;
$cert = CertificateInfo::fromPkcs12(
p12Path: '/path/to/certificate.p12',
password: 'pkcs12-password',
);Esempi Firma
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Security\Signature\CertificateInfo;
use Yeeefang\TcpdfNext\Contracts\SignatureLevel;
use Yeeefang\TcpdfNext\Security\Timestamp\TsaClient;
$cert = CertificateInfo::fromFiles(
certPath: '/path/to/certificate.pem',
keyPath: '/path/to/private-key.pem',
password: 'key-password',
);
// PAdES B-B (Base) — solo firma
$pdf = Document::create()
->setSignature($cert, SignatureLevel::PAdES_B_B)
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Signed document (B-B)')
->save('signed-bb.pdf');
// PAdES B-T (Timestamp) — firma + timestamp
$tsa = new TsaClient('https://freetsa.org/tsr');
$pdf = Document::create()
->setSignature($cert, SignatureLevel::PAdES_B_T, $tsa)
->addPage()
->cell(0, 10, 'Signed + timestamped')
->save('signed-bt.pdf');