TPDFlibSignatureVerifier

Segurança e assinaturas

Descrição

Enumera os campos de assinatura PDF e os subscritores CMS, valida uma assinatura selecionada sem carregar o PDF completo para a memória e comunica a revisão incremental da própria assinatura selecionada separadamente do ficheiro atual O verificador aceita um ficheiro, um fluxo pertencente ao autor da chamada ou uma cadeia de bytes ANSI através 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 por índice com base zero, enquanto VerifySignatureByName utiliza o nome totalmente qualificado do campo AcroForm e ambos os métodos aceitam um índice de subscritor CMS com base zero

Relatório de verificação de assinatura

IntegrityResultResultado criptográfico de integridade CMS ou PKCS#7 legado para o subscritor selecionado
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidTrue apenas quando todos os intervalos estão delimitados e a revisão assinada termina no respetivo %%EOF
ContentsGapValidTrue apenas quando os bytes omitidos são exatamente o token hexadecimal /Contents selecionado
HasLaterRevisionsTrue 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 processadas para a assinatura selecionada

Certificação e permissões de campos

GetSignaturePermissionInfo e GetSignaturePermissionInfoByName devolvem TPDFlibSignaturePermissionReport O relatório distingue uma transformação DocMDP válida de uma referência

/Perms /DocMDP correspondente no catálogo e verifica se um dicionário /Lock do campo corresponde à respetiva 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 predefinida para uma assinatura e um subscritor explicitamente selecionados

VerifySignerCertificateChainEx e VerifySignerCertificateChainExByName adicionam certificados X.509 validados a um conjunto de âncoras de confiança em memória, sem duplicados Quando o conjunto não está vazio, a cadeia de cada subscritor e de cada carimbo de data e hora é construída com um motor de confiança exclusivo que utiliza o conjunto para raízes de AC e pins de certificados explícitos, sem consultar os armazenamentos srmNone ou srmCacheOnly do Windows O motor exclusivo e o arquivo de raízes processado são mantidos em cache pelo verificador e reutilizados até o conjunto de âncoras mudar Este isolamento permite que uma aplicação aplique uma política de confiança empresarial 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 as verificações de validade do certificado, de utilização da chave, de assinatura nem as de revogação pedidas srmOnline liberta o conjunto e restaura o motor de confiança de sistema predefinido do Windows para as verificações seguintes

TPDFlibSignatureChainReportTrustStatus

Fontes de confiança externas

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

AddTrustAnchorDER anexa um AddTrustAnchorFromFile sem propriedade que pode fornecer âncoras específicas de tempo e avaliar uma cadeia de certificados construída com êxito As âncoras da origem são combinadas com âncoras personalizadas manuais no mesmo motor de cadeia exclusivo, que é mantido em cache por revisão da origem e tempo de verificação A atribuição de uma origem desativa o recurso às raízes de sistema do Windows quando não está disponível qualquer origem ou âncora manual Uma avaliação da origem com êxito preenche

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

ClearTrustAnchors

Selos de tempo RFC 3161

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

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

TPDFlibSignatureChainReport.QualificationReport

TPDFlibEUTSLTrustSource

VerifyDocumentTimeStamp e a família VerifyDocumentTimeStampByName enumeram e validam os atributos

GetSignatureTimeStampCount e VerifySignatureTimeStamp validam primeiro a integridade da assinatura e a cadeia do subscritor no momento UTC pedido Se a cadeia no momento pedido for inválida, o verificador valida todos os carimbos de data e hora de assinatura e todos os carimbos de data e hora do documento cuja revisão assinada abrange a assinatura alvo, deduz o momento de assinatura fidedigno mais antigo e o momento de arquivo mais recente do documento completo e volta a tentar a cadeia nesses momentos de controlo de prova de existência Um id-aa-signatureTimeStampToken zero seleciona o momento UTC atual, enquanto um valor diferente de zero é transmitido diretamente à política da cadeia de certificados como UTC signatureValue permite que um carimbo de data e hora de assinatura fidedigno, ou um carimbo de data e hora do documento que o abranja, forneça o momento de controlo histórico VerifySignatureTimeStamp e VerifySignatureTimeStampByName exigem um carimbo de data e hora do documento fidedigno que cubra o documento atual completo antes de o material DSS, VRI, CRL ou OCSP atual poder ser tratado como evidência histórica; caso contrário, o relatório devolve

Ex Um carimbo de data e hora fornece um limite superior para o momento em que os bytes assinados existiram, e não um tempo de assinatura inferido, pelo que um certificado de subscritor que já fosse inválido no momento de prova selecionado permanece inválido VerifyDocumentTimeStampEx devolve os relatórios de cadeia pedido e efetivo, os melhores momentos de assinatura e de arquivo, a origem de prova selecionada, as contagens de carimbos de data e hora, o estado de deslizamento temporal e um estado histórico específico VerifyDocumentTimeStampExByName pós-processa um desses relatórios, preenchendo VerifySignatureTimeStampExVerifySignatureTimeStampExByName

TPDFlibTimeStampVerificationReport

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

VerifyAdESHistoricalVerifyAdESHistoricalByName

ValidationTime

srmNone

srmCacheOnlysrmOnlineahsEvidenceNotArchived

TPDFlibAdESHistoricalValidationReport

DeriveBaselineProfileBaselineProfile

ahsValidAtRequestedTimeA integridade e a cadeia são válidas sem deslizamento temporal
ahsValidAtProofTimeA cadeia é válida num momento de controlo derivado de um carimbo de data e hora fidedigno
ahsIntegrityInvalidO carimbo de data e hora da assinatura ou do documento selecionado falha a validação de integridade ou a validação de ByteRange
ahsNoTrustedProofNenhum carimbo de data e hora fidedigno cobre a revisão da assinatura selecionada
ahsEvidenceNotArchivedA verificação de revogação foi pedida, mas nenhum carimbo de data e hora de arquivo do documento completo fidedigno sela o material de validação
ahsHistoricalTrustInvalidExistem momentos de prova fidedignos, mas a cadeia do subscritor é inválida em todos os momentos de controlo derivados

Métodos de compatibilidade

VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain

ByIndex, ByName, GetSignatureMetadataByIndex e GetSignatureMetadataByName continuam disponíveis e selecionam o campo 0 e o subscritor 0 Os métodos correspondentes GetSignerCertificateByIndex e GetSignerCertificateByName (

Consulte também

TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken