ApplyPAdESLongTermValidation

Firmas digitales

Descripción

Promueve un PDF ya firmado a PAdES-B-LT en una sola llamada 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 ampliado 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)Consulte el respondedor OCSP de cada vínculo
PADES_LTV_FETCH_CRL (4)Recurra a la CRL cuando OCSP no devuelva nada
PADES_LTV_FOLLOW_AIA (8)Sigue las direcciones del emisor para completar la ruta
PADES_LTV_SKIP_EXISTING (16)No vuelva a agregar 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 agregar el almacén de seguridad de documentos
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 de certificados del firmante se construye desde el CMS propio de la firma, y los emisores restantes se siguen mediante las direcciones caIssuers que nombran los certificados cuando se establece PADES_LTV_FOLLOW_AIA. Se recopila revocación para cada vínculo —primero OCSP y luego una CRL— y, junto con los certificados, se escribe en el almacén de seguridad del documento mediante una única actualización incremental

El material idéntico a algo ya preparado se escribe una vez y es referenciado por cada firma que lo necesita, por lo que una autoridad certificadora compartida en la ruta o entre firmas no aparece dos veces. Una entrada VRI solo se escribe cuando tiene un certificado al que apuntar, por lo que nunca se genera una entrada vacía

Un respondedor inaccesible no hace que falle la llamada: la promoción continúa con lo que se haya obtenido, y GetPAdESLTVCertificateCount, GetPAdESLTVCRLCount, GetPAdESLTVOCSPCount y GetPAdESLTVError informan qué se obtuvo y por qué faltó algo

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