Firmar un PDF con una firma baseline PAdES (receta trasladada)
Esta receta se trasladó
Sección titulada «Esta receta se trasladó»La guía de firma que antes contenía esta página ha sido reemplazada. Usar en su lugar la receta canónica:
Por qué cambió esta página (fe de erratas)
Sección titulada «Por qué cambió esta página (fe de erratas)»Una versión anterior de esta página afirmaba que la ruta de alto nivel Document::setSignature() → save() no estaba conectada y que lanzaba NotImplementedException. Eso ya no es cierto. La ruta de alto nivel ahora genera una firma real.
Document::setSignature($cert, SignatureLevel::PAdES_B_B)->save() (y los equivalentes output() / getPdfData()) escriben un campo /Sig con un /ByteRange y un objeto CMS SignedData codificado en DER en la entrada Contents del diccionario de firma: la estructura que ISO 32000-2 §12.8 especifica para el subfiltro ETSI.CAdES.detached SubFilter. El resultado es verificable por CMS: un verificador CMS/PKCS#7 estándar lo analiza y lo verifica.
- B-B —el nivel Core— se produce directamente mediante esta ruta.
- B-T añade un signature-time-stamp RFC 3161 al pasar un
TsaClienten la misma llamada. - B-LT / B-LTA son accesibles mediante la misma ruta de alto nivel (
setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save()) cuando los paquetes Pro y Enterprise están instalados; sin ellos, la llamada falla de forma segura (fail-closed) en lugar de escribir una revisión a largo plazo parcial. Los documentos cifrados también fallan de forma segura (fail-closed) para B-LT/B-LTA.
La ruta de nivel más bajo NextPDF\Security\Signature\DigitalSigner sigue siendo compatible y es la que la receta canónica siguiente recorre de principio a fin; la ruta de alto nivel es una capa ligera de conveniencia sobre el mismo motor de firma. El conjunto de pruebas de integración ejercita ambas rutas y produce un objeto CMS real y analizable.
Advertencia U-1 (alcance de la afirmación). «verificable por CMS» significa que el objeto producido es un
SignedDataCMS bien formado conforme a RFC 5652 e ISO 32000-2 §12.8 — no es una afirmación de conformidad con el perfil baseline de ETSI EN 319 142-1, ni de validez legal. La parte del estándar relativa a los niveles baseline no está en el corpus de verificación; el requisito designature-time-stampde B-T se comprobó respecto de ETSI EN 319 122-1 §5.3 con RFC 3161, RFC 5652, RFC 5816 e ISO 32000-2 §12.8. B-LT/B-LTA producen la estructura de validación a largo plazo (un DSS más una revisión DocTimeStamp); no se publicitan como probadas en cuanto a conformidad con el perfil. La conformidad y la validez legal las determina un validador independiente.
Qué se mantuvo sin cambios
Sección titulada «Qué se mantuvo sin cambios»Los hechos estructurales que la página anterior afirmaba sobre el artefacto en disco siguen siendo correctos. La receta de reemplazo los reafirma con evidencias:
- El valor de la firma se almacena en la entrada
Contentsdel diccionario de firma (ISO 32000-2 §12.8.1). - El resumen (digest) se calcula sobre el
ByteRangey excluye el propio valor de la firma (ISO 32000-2 §12.8.1).
Esta página no afirma que ninguna firma resultante sea legalmente válida. Eso depende del certificado, de su ancla de confianza y de la política del verificador, todo lo cual queda fuera de esta biblioteca.