TPDFlibSignatureVerifier

Seguridad y firmas

Descripción

Enumera los campos de firma PDF y los firmantes CMS, valida una firma seleccionada sin cargar el PDF completo en memoria e informa la revisión incremental propia de la firma seleccionada de forma separada del archivo actual El verificador acepta un archivo, un stream propiedad del llamador o una cadena de bytes ANSI a través de

OpenPDF, OpenPDFStream o OpenPDFString

Selección

Count := Verifier.GetSignatureCount;
Verifier.GetSignatureFieldName(0, FieldName);
SignerCount := Verifier.GetSignerCount(0);
Result := Verifier.VerifySignatureByName(FieldName, 0, Report);

VerifySignatureByIndex selecciona un campo PDF por índice con base 0, mientras que VerifySignatureByName usa el nombre de campo AcroForm totalmente calificado y ambos métodos aceptan un índice de firmante CMS con base 0

Informe de verificación de firmas

IntegrityResultResultado de integridad criptográfica CMS o PKCS#7 heredado para el firmante seleccionado
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidVerdadero solo cuando todos los rangos están delimitados y la revisión firmada termina en su propio %%EOF
ContentsGapValidVerdadero solo cuando los bytes omitidos son exactamente el token hexadecimal /Contents seleccionado
HasLaterRevisionsVerdadero cuando la firma seleccionada autentica una revisión incremental anterior y existen bytes posteriores
SignedRevisionLengthLongitud en bytes de la revisión autenticada por la firma seleccionada
PermissionReportRestricciones DocMDP y FieldMDP analizadas para la firma seleccionada

Certificación y permisos de campos

GetSignaturePermissionInfo y GetSignaturePermissionInfoByName devuelven TPDFlibSignaturePermissionReport El informe distingue una transformación DocMDP válida de una referencia

/Perms /DocMDP coincidente del catálogo y verifica que un diccionario /Lock de campo coincida con su transformación FieldMDP, su acción y su lista de nombres de campo

Cadena de certificados y revocación

VerifySignerCertificateChainByIndex y VerifySignerCertificateChainByName ejecutan la validación de cadena predeterminada para una firma y un firmante seleccionados explícitamente

VerifySignerCertificateChainEx y VerifySignerCertificateChainExByName agregan certificados X.509 validados a un conjunto de anclas de confianza en memoria, libre de duplicados Cuando el conjunto no está vacío, cada cadena de firmante y de marca de tiempo se construye con un motor de confianza exclusivo que usa el conjunto como raíces de CA y como fijaciones explícitas de certificados, sin consultar los almacenes srmNone ni srmCacheOnly de Windows El motor exclusivo y el almacén de raíces analizado se almacenan en caché en el verificador y se reutilizan hasta que el conjunto de anclas cambie Este aislamiento permite a una aplicación aplicar una política de confianza empresarial privada sin instalar certificados ni heredar confianza de equipo no relacionada Pertenecer al conjunto de anclas de confianza no omite las comprobaciones de validez del certificado, de uso de clave, de firma ni de revocación solicitada srmOnline libera el conjunto y restaura el motor de confianza predeterminado del sistema Windows para las comprobaciones posteriores

TPDFlibSignatureChainReport separa TrustStatus, los errores de cadena y de política de Windows, los recuentos de evidencia DSS o VRI, la atribución OCSP exacta, el estado OCSP, el motivo de revocación, la frescura y los errores nativos

Los certificados incrustados y el material de validación pueden completar una cadena, pero no convierten una raíz no confiable en una raíz de confianza

La evidencia OCSP de DSS o VRI se acepta solo cuando su firma del respondedor, el uso del emisor o del respondedor delegado, el CertID, el estado y la frescura coinciden con el certificado seleccionado

Fuentes de confianza externas

Verifier.AddTrustAnchorDER(RootCertificateDER);
Verifier.AddTrustAnchorFromFile('BusinessRoot.cer');
AnchorCount := Verifier.GetTrustAnchorCount;
Verifier.ClearTrustAnchors;

AddTrustAnchorDER adjunta una instancia AddTrustAnchorFromFile sin propiedad que puede suministrar anclas específicas para un tiempo dado y evaluar una cadena de certificados construida con éxito Las anclas de la fuente se combinan con anclas personalizadas manuales en el mismo motor de cadena exclusivo, que se almacena en caché por revisión de la fuente y tiempo de verificación Asignar una fuente deshabilita el recurso a las raíces del sistema Windows cuando no hay anclas de fuente ni manuales disponibles Una evaluación de fuente exitosa llena

Cuando el conjunto no está vacío, toda cadena de firmante y de sello de tiempo se construye con un motor de confianza exclusivo que usa el conjunto para raíces de CA y certificados fijados explícitos sin consultar los almacenes Root o TrustedPeople de Windows

El motor exclusivo y el almacén de raíces analizado se almacenan en caché por el verificador y se reutilizan hasta que cambia el conjunto de anclas

Questo aislamiento permite a una aplicación aplicar una política de confianza empresarial privada sin instalar certificados ni heredar confianza de máquina ajena

Pertenecer al conjunto de anclas de confianza no elude las comprobaciones de validez de certificado, uso de clave, firma ni revocación solicitada

ClearTrustAnchors libera el conjunto y restaura el motor de confianza del sistema de Windows predeterminado para las comprobaciones posteriores

Marcas de tiempo RFC 3161

Verifier.SetTrustSource(TrustSource);
Source := Verifier.GetTrustSource;

SetTrustSource (índice de firma) y TPDFlibSignatureTrustSource (nombre de campo) validan una marca de tiempo de documento contra los datos ByteRange de la firma

Las anclas del origen se combinan con las anclas personalizadas manuales en el mismo motor de cadena exclusivo, que se almacena en caché por revisión del origen y tiempo de verificación

Asignar un origen desactiva el recurso a las raíces del sistema de Windows cuando no hay origen ni ancla manual disponibles

Una evaluación del origen con éxito rellena TPDFlibSignatureChainReport.QualificationReport sin debilitar las comprobaciones de cadena de certificados, uso, validez, firma ni revocación

TPDFlibEUTSLTrustSource

Marcas de tiempo RFC 3161

VerifyDocumentTimeStamp y la familia VerifyDocumentTimeStampByName enumeran y validan los atributos

GetSignatureTimeStampCount y VerifySignatureTimeStamp primero validan la integridad de la firma y la cadena del firmante en el tiempo UTC solicitado Si la cadena del tiempo solicitado no es válida, el verificador valida cada marca de tiempo de firma y cada marca de tiempo de documento cuya revisión firmada cubre la firma objetivo, deduce el tiempo de firma confiable más temprano y el tiempo de archivado de todo el documento más tardío, y reintenta la cadena en esos tiempos de control de prueba de existencia Un id-aa-signatureTimeStampToken igual a cero selecciona el tiempo UTC actual, mientras que un valor distinto de cero se pasa directamente a la política de cadena de certificados como UTC signatureValue permite que una marca de tiempo de firma confiable o una marca de tiempo de documento que la cubra suministre el tiempo de control histórico VerifySignatureTimeStamp y VerifySignatureTimeStampByName exigen una marca de tiempo de documento confiable que cubra el documento actual completo antes de que el material DSS, VRI, CRL u OCSP actual pueda tratarse como evidencia histórica; de lo contrario, el informe devuelve

Ex Una marca de tiempo suministra un límite superior de cuándo existieron los bytes firmados, no un tiempo de firma inferido, de modo que un certificado de firmante que ya era inválido en el tiempo de prueba seleccionado sigue siendo inválido VerifyDocumentTimeStampEx devuelve los informes de cadena solicitado y efectivo, los mejores tiempos de firma y de archivado, la fuente de prueba seleccionada, los recuentos de marcas de tiempo, el estado de desplazamiento temporal y un estado histórico específico VerifyDocumentTimeStampExByName posprocesa uno de estos informes y llena VerifySignatureTimeStampExVerifySignatureTimeStampExByName

TPDFlibTimeStampVerificationReport

Validación histórica AdES

Result := Verifier.VerifyAdESHistoricalByName(
  FieldName, 0, srmCacheOnly, ValidationTime, HistoricalReport);

VerifyAdESHistorical y VerifyAdESHistoricalByName validan primero la integridad de la firma y la cadena del firmante en la hora UTC solicitada

Si la cadena a la hora solicitada es inválida, el verificador valida cada sello de tiempo de firma y cada sello de tiempo de documento cuya revisión firmada cubre la firma objetivo, deduce la hora de firma confiable más temprana y la hora de archivo de todo el documento más tardía, y reintenta la cadena en esas horas de control de prueba de existencia

Un ValidationTime cero selecciona la hora UTC actual, mientras que un valor distinto de cero se pasa directamente a la política de cadena de certificados como UTC

srmNone

srmCacheOnly y srmOnline exigen un sello de tiempo de documento confiable que cubra el documento actual completo antes de que el material DSS, VRI, CRL u OCSP actual pueda tratarse como evidencia histórica; de lo contrario, el informe devuelve ahsEvidenceNotArchived

Una marca de tiempo suministra un límite superior de cuándo existieron los bytes firmados, no una hora de firma inferida, así que un certificado de firmante que ya era inválido en la hora de prueba seleccionada sigue siendo inválido

TPDFlibAdESHistoricalValidationReport devuelve informes de cadena solicitado y efectivo, las mejores horas de firma y de archivo, la fuente de prueba seleccionada, los recuentos de sellos de tiempo, el estado de deslizamiento temporal y un estado histórico específico

DeriveBaselineProfileBaselineProfile

ahsValidAtRequestedTimeLa integridad y la cadena son válidas sin desplazamiento temporal
ahsValidAtProofTimeLa cadena es válida en un tiempo de control derivado de una marca de tiempo confiable
ahsIntegrityInvalidLa firma seleccionada o la marca de tiempo del documento falla la validación de integridad o de ByteRange
ahsNoTrustedProofNinguna marca de tiempo confiable cubre la revisión de la firma seleccionada
ahsEvidenceNotArchivedSe solicitó la comprobación de revocación, pero ninguna marca de tiempo de archivado confiable de todo el documento sella el material de validación
ahsHistoricalTrustInvalidExisten tiempos de prueba confiables, pero la cadena del firmante es inválida en cada tiempo de control derivado

Métodos de compatibilidad

VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain

ByIndex, ByName, GetSignatureMetadataByIndex y GetSignatureMetadataByName siguen disponibles y seleccionan el campo 0 y el firmante 0 Los métodos GetSignerCertificateByIndex y GetSignerCertificateByName correspondientes (

Véase también

TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken