TPDFlibSignatureVerifier

Segurança e assinaturas

Descrição

Enumera campos de assinatura PDF e signatários CMS, valida uma assinatura selecionada sem carregar o PDF completo na memória e informa a revisão incremental da própria assinatura selecionada separadamente do arquivo atual O verificador aceita um arquivo, um stream de propriedade do chamador ou uma cadeia de bytes ANSI por meio de

OpenPDF, OpenPDFStream ou OpenPDFString

Seleção

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

VerifySignatureByIndex seleciona um campo PDF pelo índice com base em zero, enquanto VerifySignatureByName usa o nome de campo AcroForm totalmente qualificado, e ambos os métodos aceitam um índice de signatário CMS com base em zero

Relatório de verificação de assinatura

IntegrityResultResultado de integridade criptográfica CMS ou PKCS#7 legado para o signatário selecionado
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidVerdadeiro apenas quando todos os intervalos são limitados e a revisão assinada termina em seu próprio %%EOF
ContentsGapValidVerdadeiro apenas quando os bytes omitidos são exatamente o token hexadecimal /Contents selecionado
HasLaterRevisionsVerdadeiro quando a assinatura selecionada autentica uma revisão incremental anterior e existem bytes posteriores
SignedRevisionLengthComprimento em bytes da revisão autenticada pela assinatura selecionada
PermissionReportRestrições DocMDP e FieldMDP analisadas para a assinatura selecionada

Certificação e permissões de campos

GetSignaturePermissionInfo e GetSignaturePermissionInfoByName retornam TPDFlibSignaturePermissionReport

/Perms /DocMDP correspondente no catálogo e verifica se o dicionário /Lock de um campo corresponde à sua transformação FieldMDP, à ação e à lista de nomes de campos

Cadeia de certificados e revogação

VerifySignerCertificateChainByIndex e VerifySignerCertificateChainByName executam a validação de cadeia padrão para uma assinatura e um signatário explicitamente selecionados

VerifySignerCertificateChainEx e VerifySignerCertificateChainExByName aceitam srmNone, srmCacheOnly ou srmOnline, mais um horário de verificação opcional

TPDFlibSignatureChainReport separa TrustStatus, erros de cadeia e de política do Windows, contagens de evidências DSS ou VRI, atribuição exata de OCSP, status de OCSP, motivo de revogação, frescor e erros nativos

Certificados embutidos e material de validação podem completar uma cadeia, mas não convertem uma raiz não confiável em raiz confiável

Evidências OCSP de DSS ou VRI são aceitas apenas quando a assinatura do respondedor, o uso do emissor ou do respondedor delegado, o CertID, o status e o frescor correspondem ao certificado selecionado

Fontes de confiança externas

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

AddTrustAnchorDER e AddTrustAnchorFromFile adicionam certificados X.509 validados a um conjunto de âncoras de confiança em memória e sem duplicatas

Root sem enfraquecer as verificações de cadeia de certificados, uso, validade, assinatura ou revogação TrustedPeople implementa esse contrato para documentos LOTL da UE e TSL nacionais assinados

O motor exclusivo e o repositório de raízes analisado são colocados em cache pelo verificador e reutilizados até que o conjunto de âncoras mude

Este isolamento permite que uma aplicação aplique uma política de confiança de negócio privada sem instalar certificados nem herdar confiança de máquina não relacionada

A pertença ao conjunto de âncoras de confiança não contorna verificações de validade de certificado, uso de chave, assinatura ou revogação solicitada

ClearTrustAnchors libera o conjunto e restaura o motor de confiança padrão do sistema Windows para as verificações seguintes

Carimbos de data e hora RFC 3161

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

SetTrustSource (índice da assinatura) e TPDFlibSignatureTrustSource (nome do campo) validam um carimbo de data/hora do documento contra os dados ByteRange da assinatura

Âncoras da origem são combinadas com âncoras personalizadas manuais no mesmo motor de cadeias exclusivo, que é colocado em cache por revisão da origem e horário de verificação

Atribuir uma origem desabilita o retorno às raízes do sistema Windows quando nenhuma origem ou âncora manual está disponível

Uma avaliação de origem bem-sucedida popula TPDFlibSignatureChainReport.QualificationReport sem enfraquecer as verificações de cadeia de certificados, uso, validade, assinatura ou revogação

TPDFlibEUTSLTrustSource implementa este contrato para documentos LOTL da UE e TSL nacionais assinados

Carimbos de tempo RFC 3161

VerifyDocumentTimeStamp e a família VerifyDocumentTimeStampByName enumeram e validam atributos

GetSignatureTimeStampCount e a família VerifySignatureTimeStamp enumeram e validam atributos id-aa-signatureTimeStampToken contra o signatureValue do signatário CMS selecionado; VerifySignatureTimeStamp seleciona a assinatura por índice e VerifySignatureTimeStampByName por nome de campo

As variantes Ex (VerifyDocumentTimeStampEx, VerifyDocumentTimeStampExByName, VerifySignatureTimeStampEx, VerifySignatureTimeStampExByName) também aceitam modo de revogação, OID de política esperado e nonce esperado

TPDFlibTimeStampVerificationReport relata independentemente a validade da assinatura do token, a validade do message imprint, o EKU e a vinculação de nome da TSA, política, nonce, horário de geração, resultado da cadeia e status de confiança

Validação histórica AdES

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

VerifyAdESHistorical e VerifyAdESHistoricalByName primeiro validam a integridade da assinatura e a cadeia do signatário no horário UTC solicitado

Se a cadeia do horário solicitado for inválida, o verificador valida cada carimbo de tempo de assinatura e cada carimbo de tempo de documento cuja revisão assinada cubra a assinatura alvo, deriva o horário de assinatura confiável mais antigo e o horário de arquivamento mais tardio do documento inteiro e repete a cadeia nesses horários de controle de prova de existência

Um ValidationTime zero seleciona o horário UTC atual, enquanto um valor diferente de zero é passado diretamente à política de cadeia de certificados como UTC

srmNone permite que um carimbo de tempo de assinatura confiável ou um carimbo de tempo de documento cobertor forneça o horário de controle histórico

srmCacheOnly e srmOnline exigem um carimbo de tempo de documento confiável que cubra o documento atual completo antes de que material atual de DSS, VRI, CRL ou OCSP possa ser tratado como evidência histórica; caso contrário, o relatório retorna ahsEvidenceNotArchived

Um carimbo de tempo fornece um limite superior de quando os bytes assinados existiram, e não um horário de assinatura inferido, então um certificado de signatário que já era inválido no horário de prova selecionado permanece inválido

TPDFlibAdESHistoricalValidationReport retorna relatórios de cadeia solicitado e efetivo, os melhores horários de assinatura e de arquivamento, a origem de prova selecionada, contagens de carimbos de tempo, estado de deslize temporal e um status histórico específico

DeriveBaselineProfile pós-processa um desses relatórios, preenchendo BaselineProfile a partir do subfiltro de assinatura junto com as evidências de carimbo de tempo e DSS já coletadas no relatório

ahsValidAtRequestedTimeA integridade e a cadeia são válidas sem deslizamento temporal
ahsValidAtProofTimeA cadeia é válida em um horário de controle derivado de carimbo de data/hora confiável
ahsIntegrityInvalidO carimbo de tempo de assinatura ou de documento selecionado falha na validação de integridade ou de ByteRange
ahsNoTrustedProofNenhum carimbo de data/hora confiável cobre a revisão da assinatura selecionada
ahsEvidenceNotArchivedA verificação de revogação foi solicitada, mas nenhum carimbo de data/hora de arquivamento de todo o documento confiável sela o material de validação
ahsHistoricalTrustInvalidExistem horários de prova confiáveis, mas a cadeia do signatário é inválida em todos os horários de controle derivados

Métodos de compatibilidade

VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain

ByIndex, ByName, GetSignatureMetadataByIndex e GetSignatureMetadataByName permanecem disponíveis e selecionam o campo 0 e o signatário 0 Os métodos GetSignerCertificateByIndex e GetSignerCertificateByName correspondentes (

Veja também

TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken