CryptMsgVerifyCountersignatureEncoded-Funktion (wincrypt.h)
Die Funktion CryptMsgVerifyCountersignatureEncoded überprüft eine Gegensignatur in Bezug auf die SignerInfo-Struktur (gemäß PKCS #7).
Syntax
BOOL CryptMsgVerifyCountersignatureEncoded(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwEncodingType,
[in] PBYTE pbSignerInfo,
[in] DWORD cbSignerInfo,
[in] PBYTE pbSignerInfoCountersignature,
[in] DWORD cbSignerInfoCountersignature,
[in] PCERT_INFO pciCountersigner
);
Parameter
[in] hCryptProv
Dieser Parameter wird nicht verwendet und sollte auf NULL festgelegt werden.
Windows Server 2003 und Windows XP: NULL oder das Handle des Kryptografieanbieters , der zum Hashen des Felds encryptedDigest von pbSignerInfo verwendet werden soll. Der Datentyp dieses Parameters ist HCRYPTPROV.
Wenn es keinen starken Grund für die Übergabe eines bestimmten Kryptografieanbieters in hCryptProv gibt, übergeben Sie NULL , um die Verwendung des Standard-RSA- oder DSS-Anbieters zu verursachen.
[in] dwEncodingType
Gibt den verwendeten Codierungstyp an. Derzeit werden nur X509_ASN_ENCODING und PKCS_7_ASN_ENCODING verwendet. Es können jedoch in Zukunft weitere Codierungstypen hinzugefügt werden. Verwenden Sie für einen der aktuellen Codierungstypen Folgendes:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.
[in] pbSignerInfo
Ein Zeiger auf das codierte BLOB , das den Signierer des Inhalts einer Nachricht enthält, die gegensigniert werden soll.
[in] cbSignerInfo
Anzahl des codierten BLOB für den Signierer des Inhalts in Bytes.
[in] pbSignerInfoCountersignature
Ein Zeiger auf das codierte BLOB, das die Gegenzeicheninformationen enthält.
[in] cbSignerInfoCountersignature
Anzahl des codierten BLOB für den Gegenzeichen der Nachricht in Bytes.
[in] pciCountersigner
Ein Zeiger auf eine CERT_INFO , die den Aussteller und die Seriennummer des Gegenzeichens enthält. Weitere Informationen finden Sie in den Hinweisen.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert nonzero (TRUE).
Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE). Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.
In der folgenden Tabelle sind die Fehlercodes aufgeführt, die am häufigsten von der GetLastError-Funktion zurückgegeben werden.
Rückgabecode | Beschreibung |
---|---|
|
Die Nachricht enthält kein erwartetes authentifizierte Attribut. |
|
Der Hashwert ist nicht korrekt. |
|
Die Nachricht ist nicht wie erwartet codiert. |
|
Der kryptografische Algorithmus ist unbekannt. |
|
Mindestens ein Argument ist ungültig. |
|
Der Arbeitsspeicher ist nicht mehr vorhanden. |
Möglicherweise werden weitergegebene Fehler aus den folgenden Funktionen zurückgegeben.
Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise einen ASN.1-Codierungs-/Decodierungsfehler ( Abstract Syntax Notation One ) zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1 Encoding/Decoding Return Values.Hinweise
Die Überprüfung des Gegensigners erfolgt mithilfe der PKCS #7 SIGNERINFO-Struktur . Die Signatur muss den verschlüsselten Hash des Felds encryptedDigest von pbSignerInfo enthalten.
Der Aussteller und die Seriennummer des Countersigners müssen mit den Gegenzeicheninformationen aus pbSignerInfoCountersignature übereinstimmen. Die einzigen Felder, auf die von pciCountersigner verwiesen wird, sind SerialNumber, Issuer und SubjectPublicKeyInfo. SubjectPublicKeyInfo wird verwendet, um auf den öffentlichen Schlüssel zuzugreifen, der dann verwendet wird, um den Hash aus dem pciCountersigner zu verschlüsseln, um ihn mit dem Hash aus pbSignerInfo zu vergleichen.
Beispiele
Ein Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel C-Programm: Codieren und Decodieren einer CounterSigned-Nachricht.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | wincrypt.h |
Bibliothek | Crypt32.lib |
DLL | Crypt32.dll |