TPDFlibSignatureVerifier

Sicurezza e firme

Descrizione

Enumera i campi firma PDF e i firmatari CMS, convalida una firma selezionata senza caricare l'intero PDF in memoria e riporta la revisione incrementale della firma selezionata separatamente dal file corrente Il verificatore accetta un file, uno stream di proprietà del chiamante o una stringa di byte ANSI tramite

OpenPDF, OpenPDFStream o OpenPDFString

Selezione

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

VerifySignatureByIndex seleziona un campo PDF tramite un indice a base zero, mentre VerifySignatureByName usa il nome completo del campo AcroForm ed entrambi i metodi accettano un indice del firmatario CMS a base zero

Report di verifica della firma

IntegrityResultRisultato di integrità crittografica CMS o PKCS#7 legacy per il firmatario selezionato
CoverageStatusscInvalid, scSignedRevision, or scWholeDocument
ByteRangeValidTrue solo quando tutti gli intervalli sono delimitati e la revisione firmata termina con il proprio %%EOF
ContentsGapValidTrue solo quando i byte omessi sono esattamente il token esadecimale /Contents selezionato
HasLaterRevisionsTrue quando la firma selezionata autentica una revisione incrementale precedente ed esistono byte successivi
SignedRevisionLengthLunghezza in byte della revisione autenticata dalla firma selezionata
PermissionReportVincoli DocMDP e FieldMDP analizzati per la firma selezionata

Certificazione e permessi dei campi

GetSignaturePermissionInfo e GetSignaturePermissionInfoByName restituiscono TPDFlibSignaturePermissionReport Il report distingue una trasformazione DocMDP valida da un riferimento

/Perms /DocMDP corrispondente nel catalogo e verifica che un dizionario /Lock di campo corrisponda alla propria trasformazione, azione ed elenco di nomi di campo FieldMDP

Catena di certificati e revoca

VerifySignerCertificateChainByIndex e VerifySignerCertificateChainByName eseguono la validazione predefinita della catena per una firma e un firmatario selezionati esplicitamente

VerifySignerCertificateChainEx e VerifySignerCertificateChainExByName aggiungono certificati X.509 convalidati a un insieme in memoria di trust anchor privo di duplicati Quando l'insieme non è vuoto, ogni catena di firmatario e di timestamp viene costruita con un motore di attendibilità esclusivo che usa l'insieme per le radici CA e per i pin di certificato espliciti, senza consultare gli archivi Windows srmNone o srmCacheOnly Il motore esclusivo e l'archivio radice analizzato vengono memorizzati nella cache dal verificatore e riutilizzati finché l'insieme di trust anchor non cambia Questo isolamento consente a un'applicazione di applicare una politica di attendibilità aziendale privata senza installare certificati né ereditare trust di macchina non correlati L'appartenenza all'insieme di trust anchor non aggira i controlli di validità del certificato, di uso della chiave, di firma o di revoca richiesti srmOnline rilascia l'insieme e ripristina il motore di attendibilità predefinito del sistema Windows per i controlli successivi

TPDFlibSignatureChainReport separa TrustStatus, gli errori di catena e di policy di Windows, i conteggi di evidenza DSS o VRI, l'attribuzione OCSP esatta, lo stato OCSP, il motivo di revoca, la freschezza e gli errori nativi

I certificati incorporati e il materiale di validazione possono completare una catena, ma non convertono una radice non attendibile in una radice attendibile

L'evidenza OCSP di DSS o VRI viene accettata solo quando la sua firma del responder, l'uso dell'issuer o del responder delegato, il CertID, lo stato e la freschezza coincidono col certificato selezionato

Fonti di attendibilità esterne

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

AddTrustAnchorDER collega un AddTrustAnchorFromFile non proprietario, in grado di fornire anchor legati a un momento specifico e di valutare una catena di certificati costruita con successo Gli anchor della sorgente vengono combinati con gli anchor personalizzati manuali nello stesso motore di catena esclusivo, che viene memorizzato nella cache per revisione della sorgente e momento di verifica L'assegnazione di una sorgente disabilita il fallback alle radici di sistema Windows quando non è disponibile alcun anchor della sorgente o manuale Una valutazione della sorgente andata a buon fine popola

Quando il set non è vuoto, ogni catena di firmatario e di timestamp viene costruita con un motore di attendibilità esclusivo che usa il set per radici CA e certificati bloccati espliciti senza consultare gli store Root o TrustedPeople di Windows

Il motore esclusivo e l'archivio radici analizzato vengono memorizzati in cache dal verificatore e riusati finché il set di ancoraggi cambia

Questo isolamento permette a un'applicazione di applicare una politica di attendibilità aziendale privata senza installare certificati né ereditare attendibilità di macchina altrui

L'appartenenza agli ancoraggi di attendibilità non aggira i controlli di validità del certificato, uso della chiave, firma o revoca richiesta

ClearTrustAnchors rilascia il set e ripristina il motore di attendibilità di sistema Windows predefinito per i controlli successivi

Timestamp RFC 3161

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

SetTrustSource (indice della firma) e TPDFlibSignatureTrustSource (nome del campo) convalidano un timestamp del documento rispetto ai dati ByteRange della firma

Le ancore dell'origine vengono combinate con le ancore personalizzate manuali nello stesso motore di catena esclusivo, memorizzato in cache per revisione dell'origine e tempo di verifica

Assegnare una origine disattiva il fallback alle radici di sistema di Windows quando non sono disponibili origine né ancoraggio manuale

Una valutazione dell'origine con successo riempie TPDFlibSignatureChainReport.QualificationReport senza indebolire i controlli di catena di certificati, uso, validità, firma o revoca

TPDFlibEUTSLTrustSource

Timestamp RFC 3161

VerifyDocumentTimeStamp e la famiglia VerifyDocumentTimeStampByName enumerano e convalidano gli attributi

GetSignatureTimeStampCount e VerifySignatureTimeStamp convalidano dapprima l'integrità della firma e la catena del firmatario al momento UTC richiesto Se la catena al momento richiesto non è valida, il verificatore convalida ogni timestamp della firma e ogni timestamp del documento la cui revisione firmata copre la firma obiettivo, ricava il primo momento di firma attendibile e l'ultimo momento di archiviazione dell'intero documento, e ripete la validazione della catena in quei momenti di controllo della prova di esistenza Un id-aa-signatureTimeStampToken pari a zero seleziona il momento UTC corrente, mentre un valore diverso da zero viene passato direttamente alla politica della catena di certificati come UTC signatureValue consente a un timestamp della firma attendibile o a un timestamp del documento che copre la firma di fornire il momento di controllo storico VerifySignatureTimeStamp e VerifySignatureTimeStampByName richiedono un timestamp del documento attendibile che copra l'intero documento corrente prima che il materiale DSS, VRI, CRL o OCSP attuale possa essere trattato come evidenza storica; in caso contrario il report restituisce

Ex Un timestamp fornisce un limite superiore al momento in cui i byte firmati esistevano, non un momento di firma dedotto, quindi un certificato del firmatario che risultava già non valido al momento di prova selezionato resta non valido VerifyDocumentTimeStampEx restituisce i report di catena richiesto ed effettivo, i migliori momenti di firma e di archiviazione, la sorgente di prova selezionata, i conteggi dei timestamp, lo stato dello scorrimento temporale e uno stato storico specifico VerifyDocumentTimeStampExByName esegue la post-elaborazione di un report di questo tipo, compilando VerifySignatureTimeStampExVerifySignatureTimeStampExByName

TPDFlibTimeStampVerificationReport

Validazione storica AdES

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

VerifyAdESHistorical e VerifyAdESHistoricalByName validano prima l'integrità della firma e la catena del firmatario all'ora UTC richiesta

Se la catena all'ora richiesta è invalida, il verificatore valida ogni timestamp di firma e ogni timestamp di documento la cui revisione firmata copre la firma bersaglio, deduce l'ora di firma attendibile più precoce e l'ora di archiviazione dell'intero documento più tarda, e ritenta la catena a quelle ore di controllo di prova di esistenza

Un ValidationTime zero seleziona l'ora UTC corrente, mentre un valore diverso da zero viene passato direttamente alla politica di catena di certificati come UTC

srmNone

srmCacheOnly e srmOnline richiedono un timestamp di documento attendibile che copra il documento corrente completo prima che il materiale DSS, VRI, CRL o OCSP corrente possa essere trattato come prova storica; altrimenti il report restituisce ahsEvidenceNotArchived

Un timestamp fornisce un limite superiore di quando esistevano i byte firmati, non un'ora di firma dedotta, così un certificato di firmatario già invalido all'ora di prova selezionata resta invalido

TPDFlibAdESHistoricalValidationReport restituisce report di catena richiesto ed effettivo, le migliori ore di firma e di archiviazione, la sorgente di prova selezionata, i conteggi di timestamp, lo stato di time-slide e uno stato storico specifico

DeriveBaselineProfileBaselineProfile

ahsValidAtRequestedTimeL'integrità e la catena sono valide senza scorrimento temporale
ahsValidAtProofTimeLa catena è valida a un momento di controllo derivato da un timestamp attendibile
ahsIntegrityInvalidIl timestamp della firma o del documento selezionato non supera la validazione di integrità o ByteRange
ahsNoTrustedProofNessun timestamp attendibile copre la revisione della firma selezionata
ahsEvidenceNotArchivedLa verifica della revoca era stata richiesta, ma nessun timestamp di archiviazione attendibile dell'intero documento sigilla il materiale di validazione
ahsHistoricalTrustInvalidEsistono momenti di prova attendibili, ma la catena del firmatario non è valida in ognuno dei momenti di controllo derivati

Metodi di compatibilità

VerifySignatureGetSignatureMetadataGetSignerCertificateVerifySignerCertificateChain

ByIndex, ByName, GetSignatureMetadataByIndex e GetSignatureMetadataByName restano disponibili e selezionano il campo 0 e il firmatario 0 I metodi GetSignerCertificateByIndex e GetSignerCertificateByName corrispondenti (

Vedere anche

TPDFlibEUTSLTrustSource, SetSignProcessDocMDP, SetSignProcessFieldLock, SetPAdESSignatureTimeStampToken