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
| IntegrityResult | Resultado criptográfico de integridade CMS ou PKCS#7 legado para o subscritor selecionado |
|---|---|
| CoverageStatus | scInvalid, scSignedRevision, or scWholeDocument |
| ByteRangeValid | True apenas quando todos os intervalos estão delimitados e a revisão assinada termina no respetivo %%EOF |
| ContentsGapValid | True apenas quando os bytes omitidos são exatamente o token hexadecimal /Contents selecionado |
| HasLaterRevisions | True quando a assinatura selecionada autentica uma revisão incremental anterior e existem bytes posteriores |
| SignedRevisionLength | Comprimento em bytes da revisão autenticada pela assinatura selecionada |
| PermissionReport | Restriçõ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
ahsValidAtRequestedTime | A integridade e a cadeia são válidas sem deslizamento temporal |
|---|---|
ahsValidAtProofTime | A cadeia é válida num momento de controlo derivado de um carimbo de data e hora fidedigno |
ahsIntegrityInvalid | O carimbo de data e hora da assinatura ou do documento selecionado falha a validação de integridade ou a validação de ByteRange |
ahsNoTrustedProof | Nenhum carimbo de data e hora fidedigno cobre a revisão da assinatura selecionada |
ahsEvidenceNotArchived | A 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 |
ahsHistoricalTrustInvalid | Existem 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