ApplyPAdESLongTermValidation

Assinaturas digitais

Descrição

Promove um PDF já assinado para PAdES-B-LT numa única chamada e escreve o resultado num ficheiro

Sintaxe

Delphi

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

Parâmetros

InputFileO PDF assinado
PasswordA palavra-passe para o abrir, ou uma cadeia vazia
OutputFileO PDF aumentado a escrever
FieldNameUm campo de assinatura a processar ou uma cadeia vazia para processar todas as assinaturas numa única revisão
OptionsUma máscara de bits PADES_LTV_*; 0 seleciona PADES_LTV_DEFAULT

Options

PADES_LTV_WRITE_VRI (1)Escrever uma entrada VRI para cada assinatura
PADES_LTV_FETCH_OCSP (2)Consultar o respondedor OCSP de cada ligação
PADES_LTV_FETCH_CRL (4)Recorrer à CRL quando o OCSP não devolveu qualquer resultado
PADES_LTV_FOLLOW_AIA (8)Seguir os endereços do emissor para completar o caminho
PADES_LTV_SKIP_EXISTING (16)Não voltar a adicionar material cujos bytes já estejam preparados
PADES_LTV_SKIP_ROOT_REVOCATION (32)Não solicite o estado de uma raiz autoemitida
PADES_LTV_DEFAULT (63)Todas as opções acima; selecionadas quando Options é 0

Valores devolvidos

1A promoção foi concluída com êxito
2Não foi possível ler o ficheiro de entrada
3Não foi possível analisar o PDF de entrada
10Não foi possível escrever a saída
11Não foi possível adicionar o arquivo de segurança do documento
20Esse campo de assinatura não existe
21Nenhuma assinatura processada continha um certificado legível

GetPAdESLTVError contém o motivo para qualquer valor diferente de 1

Observações

O caminho do certificado do signatário é construído a partir do CMS da própria assinatura, e os restantes emissores são seguidos através dos endereços caIssuers indicados pelos certificados quando PADES_LTV_FOLLOW_AIA está definido. A revogação é recolhida para cada ligação - primeiro OCSP, depois uma CRL - e, juntamente com os certificados, escrita no arquivo de segurança do documento através duma única atualização incremental

O material idêntico a algo já preparado é escrito uma única vez e referenciado por todas as assinaturas que dele necessitam, pelo que uma autoridade de certificação partilhada ao longo do caminho ou entre assinaturas não aparece duas vezes. Uma entrada VRI só é escrita quando tem um certificado para o qual apontar, pelo que nunca é produzida uma entrada vazia

Um respondente inacessível não faz a chamada falhar: a promoção prossegue com o que tiver sido recolhido, e GetPAdESLTVCertificateCount, GetPAdESLTVCRLCount, GetPAdESLTVOCSPCount e GetPAdESLTVError indicam o que foi obtido e por que motivo algo ficou em falta

Exemplo

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

Consulte também

ApplyPAdESLongTermValidationToStream, GetSignatureCertificateChainLength, AddPAdESDSSOCSPFromCertificates