ApplyPAdESLongTermValidation

Firmas digitales

Descripción

Promueve en una sola llamada un PDF ya firmado a PAdES-B-LT y escribe el resultado en un archivo

Sintaxis

Delphi

Function TPDFlib.ApplyPAdESLongTermValidation(Const InputFile, Password, OutputFile, FieldName: WideString; Options: Integer): Integer;

Parámetros

InputFileEl PDF firmado
PasswordLa contraseña para abrirlo, o una cadena vacía
OutputFileEl PDF aumentado que se escribirá
FieldNameUn campo de firma que se procesará o una cadena vacía para procesar todas las firmas en una revisión
OptionsUna máscara de bits PADES_LTV_*; 0 selecciona PADES_LTV_DEFAULT

Opciones

PADES_LTV_WRITE_VRI (1)Escribe una entrada VRI para cada firma
PADES_LTV_FETCH_OCSP (2)Consulta al respondedor OCSP de cada enlace
PADES_LTV_FETCH_CRL (4)Recurre a la CRL cuando OCSP no devolvió nada
PADES_LTV_FOLLOW_AIA (8)Sigue las direcciones de emisores para completar la ruta
PADES_LTV_SKIP_EXISTING (16)No vuelva a añadir material cuyos bytes ya estén preparados
PADES_LTV_SKIP_ROOT_REVOCATION (32)No solicite el estado de una raíz autoemitida
PADES_LTV_DEFAULT (63)Todo lo anterior; se selecciona cuando Options es 0

Valores devueltos

1La promoción se completó correctamente
2No se pudo leer el archivo de entrada
3No se pudo analizar el PDF de entrada
10No se pudo escribir la salida
11No se pudo añadir el almacén de seguridad del documento
20No existe ese campo de firma
21Ninguna firma procesada contenía un certificado legible

GetPAdESLTVError contiene el motivo de cualquier valor distinto de 1

Observaciones

La ruta se crea desde el CMS de la firma y sigue caIssuers si PADES_LTV_FOLLOW_AIA. Recopila OCSP y luego CRL por enlace y escribe certificados y revocación en DSS mediante una actualización

El material idéntico se escribe una vez y lo referencian todas las firmas. Solo se escribe VRI si tiene certificado, evitando entradas vacías

Un respondedor inaccesible no hace que falle la llamada: la promoción continúa con todo lo recopilado, y GetPAdESLTVCertificateCount, GetPAdESLTVCRLCount, GetPAdESLTVOCSPCount y GetPAdESLTVError indican qué se obtuvo y por qué faltan otros elementos

Ejemplo

PDF.SetTimeStampOptions(2, 1, 1, 15000, '');
if PDF.ApplyPAdESLongTermValidation('signed.pdf', '', 'signed-lt.pdf', '', 0)<> 1 then
  ShowMessage(PDF.GetPAdESLTVError);

Véase también

ApplyPAdESLongTermValidationToStream, GetSignatureCertificateChainLength, AddPAdESDSSOCSPFromCertificates