Konsistenz des CMS-Digest-Algorithmus
HotPDF diagnostiziert inkonsistente CMS-Algorithmuskennungen, bevor signierte Dokumentbereiche gelesen, Inhalte gehasht, Zertifikatspfade aufgebaut oder ein Signatur-Provider aufgerufen werden
Konsistenzprüfungen
Der aktuelle SignerInfo.digestAlgorithm muss in der umschließenden SignedData.digestAlgorithms-Menge enthalten sein, während unabhängige zusätzliche Algorithmen für interoperable Container mit mehreren Signierern weiterhin erlaubt bleiben
Digest-spezifische RSA-PKCS#1-v1.5- und ECDSA-Signatur-OIDs sowie der explizite Hash in RSA-PSS-Parametern müssen denselben Digest wie SignerInfo.digestAlgorithm auswählen
Ist das signierte Attribut CMSAlgorithmProtection nach RFC 6211 vorhanden, muss es genau einmal mit einem Wert auftreten, und seine geschützten Digest- und Signatur-Werte AlgorithmIdentifier müssen mit den tatsächlichen SignerInfo-Feldern übereinstimmen
Fehlende und DER-NULL-Parameter gelten für parameterlose Algorithmuskennungen als gleichwertig; andere Parameter werden exakt verglichen, sodass parametrisierte Signaturmechanismen nicht still normalisiert werden können
Maschinenlesbares Ergebnis
HPDFParseCMSSignature bewahrt erfolgreich geparste Metadaten, setzt aber THPDFSignatureInfo.Status auf svDigestAlgorithmMismatch, wenn eine Konsistenzprüfung fehlschlägt
Die Verifikation liefert svDigestAlgorithmMismatch, Validierungsberichte verwenden vfcDigestAlgorithmMismatch, und JSON gibt digestAlgorithmMismatch aus, ohne den Zustand als fehlerhaftes CMS, nicht unterstützten Algorithmus oder inhaltsseitigen Digest-Konflikt einzustufen
THPDFSignatureInfo.DigestAlgorithmOID hält die Signierer-Digest-OID fest und THPDFSignatureInfo.DigestConsistencyIssue wählt eine der folgenden Ursachen aus
dciSignerDigestNotDeclared— der bekannte Signierer-Digest fehlt in der äußeren Digest-MengedciSignatureDigestMismatch— ein fester oder parametrisierter Signaturmechanismus wählt einen anderen DigestdciAlgorithmProtectionDigestMismatch— die geschützte Digest-Kennung weicht von der Signierer-Digest-Kennung abdciAlgorithmProtectionSignatureMismatch— die geschützte Signaturkennung weicht von der Signierer-Signaturkennung ab
JSON-Signiererobjekte stellen dieselben Informationen als digestAlgorithmOID und digestConsistencyIssue bereit, mit den Werten signerDigestNotDeclared, signatureDigestMismatch, algorithmProtectionDigestMismatch oder algorithmProtectionSignatureMismatch
Zeitstempel und Rangfolge
RFC-3161-Dokumentzeitstempel und unsignierte Signatur-Zeitstempel-Tokens unterliegen denselben Prüfungen, und ihr Wert THPDFTimestampInfo.DigestConsistencyIssue kennzeichnet einen inkonsistenten verschachtelten CMS-Container
Strukturfehler schlagen weiterhin als fehlerhaftes CMS fehl, unbekannte Signierer-Digests bleiben nicht unterstützt, und das erste deterministische Konsistenzproblem bleibt in der Reihenfolge Container, Algorithmus-Schutz und Signaturmechanismus erhalten
Siehe moderne Signatur-Provider und THotPDF.VerifyLoadedSignatureWithOptions für die Verifikationsverträge von Provider und geladenem Dokument