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

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