Signatures numériques PAdES
★ Pro — Commercial License Required
Les niveaux de signature PAdES B-T, B-LT et B-LTA nécessitent le package Pro.
TCPDF-Next Pro implémente le pipeline PAdES complet (ETSI EN 319 142) en utilisant CertificateInfo, DigitalSigner, ByteRangeCalculator et SignatureAppearance.
Niveaux de signature
| Niveau | Valeur d'énumération | Ce qu'il ajoute |
|---|---|---|
| B-B | SignatureLevel::PAdES_B_B | Signature CMS avec certificat de signature |
| B-T | SignatureLevel::PAdES_B_T | Horodatage de signature RFC 3161 |
| B-LT | SignatureLevel::PAdES_B_LT | Données de révocation (OCSP + CRL) via DSS |
| B-LTA | SignatureLevel::PAdES_B_LTA | Horodatage de document pour validité indéfinie |
CertificateInfo
Charge et analyse les certificats X.509 et clés privées depuis fichiers PEM ou PKCS#12.
php
use Yeeefang\TcpdfNext\Pro\Security\Signature\CertificateInfo;
// Depuis fichiers PEM
$cert = CertificateInfo::fromPem('/certs/signing.pem', '/certs/signing.key', 'pw');
$cert->chain(['/certs/intermediate.pem', '/certs/root.pem']);
// Depuis PKCS#12 (chaîne extraite automatiquement)
$cert = CertificateInfo::fromPkcs12('/certs/signing.p12', 'p12-password');
// Inspecter les détails du certificat
echo $cert->subjectCN(); // "John Doe"
echo $cert->issuerCN(); // "Acme Intermediate CA"
echo $cert->validFrom(); // DateTimeImmutable
echo $cert->ocspResponderUrl(); // "https://ocsp.acme.com"DigitalSigner
Génère le conteneur de signature CMS/PKCS#7 et orchestre l'intégration d'horodatage et LTV.
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Pro\Security\Signature\DigitalSigner;
use Yeeefang\TcpdfNext\Pro\Security\Timestamp\TsaClient;
use Yeeefang\TcpdfNext\Contracts\Enums\SignatureLevel;
$pdf = Document::create()->addPage()->text('Contract document.');
$cert = CertificateInfo::fromPkcs12('/certs/signer.p12', 'pw');
$tsa = new TsaClient('https://tsa.example.com/timestamp');
$signer = new DigitalSigner($cert);
$signer->level(SignatureLevel::PAdES_B_LTA);
$signer->timestampAuthority($tsa);
$signer->reason('Document approval');
$signer->location('Taipei, Taiwan');
$signer->sign($pdf);
$pdf->save('/output/signed.pdf');Aux niveaux B-LT et B-LTA, LtvManager est invoqué en interne pour récupérer les réponses OCSP et CRL et construire le dictionnaire DSS.
ByteRangeCalculator
Gère le placeholder de signature et calcule les plages d'octets. Géré en interne par DigitalSigner ; utilisation directe pour scénarios avancés.
SignatureAppearance
Contrôle la représentation visible de la signature sur la page. Les signatures sont invisibles par défaut.
php
use Yeeefang\TcpdfNext\Pro\Security\Signature\SignatureAppearance;
$appearance = SignatureAppearance::create()
->page(1)
->position(x: 20.0, y: 250.0, width: 80.0, height: 30.0)
->text("Digitally signed by John Doe\nDate: 2026-02-16")
->image('/images/handwritten-signature.png')
->imagePosition('left') // 'left', 'right', 'top', 'bottom', 'background'
->fontSize(8);
$signer->appearance($appearance);
$signer->sign($pdf);Exemple B-LTA complet
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Pro\Security\Signature\{DigitalSigner, CertificateInfo, SignatureAppearance};
use Yeeefang\TcpdfNext\Pro\Security\Timestamp\TsaClient;
use Yeeefang\TcpdfNext\Contracts\Enums\SignatureLevel;
$pdf = Document::create()
->addPage()
->font('Helvetica', size: 14, style: 'B')
->text('Purchase Agreement')
->font('Helvetica', size: 11)
->text('This agreement is entered into on February 16, 2026...');
$cert = CertificateInfo::fromPkcs12('/certs/legal.p12', 'passphrase');
$tsa = new TsaClient('https://tsa.example.com/timestamp');
$signer = new DigitalSigner($cert);
$signer->level(SignatureLevel::PAdES_B_LTA);
$signer->timestampAuthority($tsa);
$signer->appearance(
SignatureAppearance::create()
->page(1)
->position(x: 20.0, y: 250.0, width: 80.0, height: 25.0)
->text("Signed by Legal Dept.\n2026-02-16")
);
$signer->reason('Purchase agreement execution');
$signer->location('Taipei, Taiwan');
$signer->sign($pdf);
$pdf->save('/contracts/purchase-agreement-signed.pdf');Prochaines étapes
- Validation à long terme -- DSS, OCSP, CRL et horodatages d'archivage.
- Intégration HSM -- Signer avec modules de sécurité matériel via PKCS#11.
- Aperçu du package Pro -- Liste complète des modules et informations de licence.