Coerenza degli Algoritmi di Digest CMS
HotPDF diagnostica identificatori di algoritmo CMS incoerenti prima di leggere gli intervalli firmati del documento, calcolare hash del contenuto, costruire percorsi di certificati o invocare un signature provider
Controlli di coerenza
Il SignerInfo.digestAlgorithm corrente deve essere presente nell'insieme SignedData.digestAlgorithms che lo contiene, mentre algoritmi extra non correlati restano permessi per contenitori multi-signer interoperabili
Gli OID di firma ECDSA e RSA PKCS#1 v1.5 specifici per digest e l'hash esplicito nei parametri RSA-PSS devono selezionare lo stesso digest di SignerInfo.digestAlgorithm
Quando è presente l'attributo firmato RFC 6211 CMSAlgorithmProtection, deve comparire una sola volta con un solo valore, e i suoi valori protetti di digest e firma AlgorithmIdentifier devono corrispondere ai campi effettivi di SignerInfo
Parametri assenti e DER NULL vengono confrontati come equivalenti per gli identificatori di algoritmo senza parametri; gli altri parametri si confrontano esattamente, così che i meccanismi di firma parametrizzati non possano essere normalizzati in silenzio
Risultato leggibile da macchina
HPDFParseCMSSignature conserva i metadati analizzati con successo ma imposta THPDFSignatureInfo.Status a svDigestAlgorithmMismatch quando un controllo di coerenza fallisce
La verifica restituisce svDigestAlgorithmMismatch, i rapporti di validazione usano vfcDigestAlgorithmMismatch e il JSON emette digestAlgorithmMismatch senza collassare la condizione in CMS malformato, algoritmo non supportato o mismatch del digest del contenuto
THPDFSignatureInfo.DigestAlgorithmOID registra l'OID del digest del firmatario e THPDFSignatureInfo.DigestConsistencyIssue seleziona una delle seguenti cause
dciSignerDigestNotDeclared— il digest noto del firmatario è assente dall'insieme di digest esternodciSignatureDigestMismatch— un meccanismo di firma fisso o parametrizzato seleziona un altro digestdciAlgorithmProtectionDigestMismatch— l'identificatore di digest protetto differisce dall'identificatore di digest del firmatariodciAlgorithmProtectionSignatureMismatch— l'identificatore di firma protetto differisce dall'identificatore di firma del firmatario
Gli oggetti firmatario JSON espongono le stesse informazioni come digestAlgorithmOID e digestConsistencyIssue con i valori signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch oppure algorithmProtectionSignatureMismatch
Timestamp e precedenza
I document timestamp RFC 3161 e i token di firma-timestamp non firmati applicano gli stessi controlli, e il loro valore THPDFTimestampInfo.DigestConsistencyIssue identifica un contenitore CMS annidato incoerente
Gli errori strutturali continuano a fallire come CMS malformato, i digest di firmatario sconosciuti restano non supportati, e il primo problema di coerenza deterministico viene mantenuto nell'ordine contenitore, algorithm-protection e poi meccanismo di firma
Vedere modern signature providers e THotPDF.VerifyLoadedSignatureWithOptions per i contratti di verifica di provider e documenti caricati