Consistência do Algoritmo de Digest CMS

O HotPDF diagnostica identificadores de algoritmo CMS inconsistentes antes de ler intervalos assinados do documento, calcular hashes, construir caminhos de certificados ou invocar um provedor de assinaturas

Verificações de consistência

O SignerInfo.digestAlgorithm atual tem de estar presente no conjunto SignedData.digestAlgorithms circundante, enquanto algoritmos extra não relacionados continuam permitidos para contentores interoperáveis com múltiplos assinantes

Os OIDs de assinatura RSA PKCS#1 v1.5 e ECDSA específicos do digest, e o hash explícito nos parâmetros RSA-PSS, têm de selecionar o mesmo digest que SignerInfo.digestAlgorithm

Quando o atributo assinado CMSAlgorithmProtection do RFC 6211 está presente, tem de ocorrer uma única vez com um valor, e os seus valores protegidos de AlgorithmIdentifier de digest e assinatura têm de corresponder aos campos reais de SignerInfo

Parâmetros ausentes e DER NULL comparam como equivalentes para identificadores de algoritmo sem parâmetros; os restantes parâmetros comparam exatamente, para que mecanismos de assinatura parametrizados não possam ser normalizados em silêncio

Resultado legível por máquina

HPDFParseCMSSignature preserva os metadados analisados com sucesso, mas define THPDFSignatureInfo.Status como svDigestAlgorithmMismatch quando uma verificação de consistência falha

A verificação devolve svDigestAlgorithmMismatch, os relatórios de validação usam vfcDigestAlgorithmMismatch e o JSON emite digestAlgorithmMismatch sem colapsar a condição em CMS malformado, algoritmo não suportado ou incompatibilidade de digest de conteúdo

THPDFSignatureInfo.DigestAlgorithmOID regista o OID do digest do assinante e THPDFSignatureInfo.DigestConsistencyIssue seleciona uma das causas seguintes

Os objetos JSON de assinante expõem a mesma informação como digestAlgorithmOID e digestConsistencyIssue com os valores signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch ou algorithmProtectionSignatureMismatch

Timestamps e precedência

Os timestamps de documento RFC 3161 e os tokens de timestamp de assinatura não assinados usam as mesmas verificações, e o respetivo valor THPDFTimestampInfo.DigestConsistencyIssue identifica um contentor CMS aninhado inconsistente

Erros estruturais continuam a falhar como CMS malformado, digests de assinante desconhecidos continuam não suportados, e a primeira questão de consistência determinística é retida pela ordem contentor, proteção de algoritmo e depois mecanismo de assinatura

Consulte provedores de assinatura modernos e THotPDF.VerifyLoadedSignatureWithOptions para os contratos de verificação com provedor e de documentos carregados