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
| InputFile | O PDF assinado |
|---|---|
| Password | A palavra-passe para o abrir, ou uma cadeia vazia |
| OutputFile | O PDF aumentado a escrever |
| FieldName | Um campo de assinatura a processar ou uma cadeia vazia para processar todas as assinaturas numa única revisão |
| Options | Uma 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
| 1 | A promoção foi concluída com êxito |
|---|---|
| 2 | Não foi possível ler o ficheiro de entrada |
| 3 | Não foi possível analisar o PDF de entrada |
| 10 | Não foi possível escrever a saída |
| 11 | Não foi possível adicionar o arquivo de segurança do documento |
| 20 | Esse campo de assinatura não existe |
| 21 | Nenhuma 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