Consistência do algoritmo de digest CMS

O HotPDF diagnostica identificadores de algoritmo CMS inconsistentes antes de ler intervalos assinados do documento, calcular o hash do conteúdo, construir caminhos de certificado ou invocar um provedor de assinatura

Verificações de consistência

O SignerInfo.digestAlgorithm atual deve estar presente no conjunto SignedData.digestAlgorithms que o envolve, enquanto algoritmos extras não relacionados permanecem permitidos para contêineres interoperáveis de múltiplos signatários

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

Quando o atributo assinado CMSAlgorithmProtection da RFC 6211 está presente, ele deve ocorrer uma vez com um único valor, e seus valores protegidos de digest e assinatura AlgorithmIdentifier devem corresponder aos campos reais de SignerInfo

Parâmetros ausentes e NULL DER comparam como equivalentes para identificadores de algoritmo sem parâmetros; outros parâmetros comparam exatamente para que mecanismos de assinatura parametrizados não possam ser normalizados silenciosamente

Resultado legível por máquina

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

A verificação retorna 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 registra o OID do digest do signatário e THPDFSignatureInfo.DigestConsistencyIssue seleciona uma das seguintes causas

Objetos de signatário JSON expõem as mesmas informações como digestAlgorithmOID e digestConsistencyIssue com os valores signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch ou algorithmProtectionSignatureMismatch

Carimbos de tempo e precedência

Carimbos de tempo de documento RFC 3161 e tokens de carimbo de tempo de assinatura não assinados usam as mesmas verificações, e seu valor THPDFTimestampInfo.DigestConsistencyIssue identifica um contêiner CMS aninhado inconsistente

Erros estruturais ainda falham como CMS malformado, digests de signatário desconhecidos permanecem não suportados, e o primeiro problema de consistência determinístico é retido na ordem de contêiner, proteção de algoritmo e, então, mecanismo de assinatura

Veja provedores de assinatura modernos e THotPDF.VerifyLoadedSignatureWithOptions para os contratos de verificação de provedor e de documento carregado