PLVerifyModernDetachedCMS

Kryptographie, digitale Signaturen

Beschreibung

Verifiziert einen Signer eines modernen Detached CMS gegen die ursprünglichen Datenbytes

Der Verifizierer parst das SignedData, prüft den Message-Digest der signierten Attribute gegen die Daten und validiert dann die rohe Signatur mit dem Public-Key des Signer-Zertifikats: Pure-Pascal-Ed25519, ECDSA über die Kurvenparameter oder RSA PKCS#1 und PSS über CNG

Syntax

Delphi

Function PLVerifyModernDetachedCMS(Const CMSBytes, Data: AnsiString;
  SignerIndex: Integer; Out SignerCount: Integer;
  Out NativeError: Cardinal): Integer;

Parameter

CMSBytesDER-kodiertes Detached-CMS-SignedData
DataDie ursprünglich abgedeckten Bytes, dieselbe Eingabe, die zur Signaturzeit gedigestet wurde
SignerIndexNullbasierter, zu verifizierender Signer
SignerCountErhält die Anzahl der im CMS gefundenen Signer
NativeErrorErhält eine grobe Fehlerklasse, 13 für fehlerhafte Eingabe, 50 für Digest-Ärger oder den CNG-Status des gescheiterten Primitivs

Rückgabewerte

0Das CMS parst, aber sein Signaturalgorithmus ist nicht im modernen Satz, dieser Verifizierer ist also nicht zuständig
1Der Signer wurde erfolgreich verifiziert
2Ein Parse-, Digest- oder Primitivschritt ist fehlgeschlagen; NativeError trägt den Grund

Anmerkungen

Der Message-Digest-Vergleich läuft zeitkonstant, und die PSS-Parameter müssen denselben Digest benennen wie die SignerInfo, ganz nach RFC 4056; Ergebnis 0 sagt dem Aufrufer, das Blob stattdessen dem Plattform-Verifizierer zu übergeben

Siehe auch

PLBuildModernDetachedCMS, PLIsModernDetachedCMS, PLCertificateSubjectAndIssuer