CryptMsgVerifyCountersignatureEncodedEx-Funktion (wincrypt.h)
Die Funktion CryptMsgVerifyCountersignatureEncodedEx überprüft, ob der pbSignerInfoCounterSignature-Parameter den verschlüsseltenHash des Felds encryptedDigest der pbSignerInfo-Parameterstruktur enthält. Der Signierer kann eine CERT_PUBLIC_KEY_INFO-Struktur , ein Zertifikatkontext oder ein Kettenkontext sein.
Syntax
BOOL CryptMsgVerifyCountersignatureEncodedEx(
[in, optional] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwEncodingType,
[in] PBYTE pbSignerInfo,
[in] DWORD cbSignerInfo,
[in] PBYTE pbSignerInfoCountersignature,
[in] DWORD cbSignerInfoCountersignature,
[in] DWORD dwSignerType,
[in] void *pvSigner,
DWORD dwFlags,
void *pvExtra
);
Parameter
[in, optional] 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
Der verwendete Codierungstyp. 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
Die Anzahl des codierten BLOB in Bytes für den Signierer des Inhalts.
[in] pbSignerInfoCountersignature
Ein Zeiger auf das codierte BLOB, das die Gegenzeicheninformationen enthält.
[in] cbSignerInfoCountersignature
Die Anzahl des codierten BLOB für den Gegenzeichen der Nachricht in Bytes.
[in] dwSignerType
Die Struktur, die die Signiererinformationen enthält. Die folgende Tabelle zeigt die vordefinierten Werte und die angegebenen Strukturen.
Wert | Bedeutung |
---|---|
|
pvSigner ist ein Zeiger auf eine CERT_PUBLIC_KEY_INFO Struktur. |
|
pvSigner ist ein Zeiger auf eine CERT_CONTEXT Struktur. |
|
pvSigner ist ein Zeiger auf eine CERT_CHAIN_CONTEXT Struktur. |
[in] pvSigner
Ein Zeiger auf eine CERT_PUBLIC_KEY_INFO-Struktur , einen Zertifikatkontext oder einen Kettenkontext, abhängig vom Wert von dwSignerType.
dwFlags
Flags, die das Funktionsverhalten ändern. Dies kann null oder der folgende Wert sein.
Wert | Bedeutung |
---|---|
|
Führt nach erfolgreicher Signaturüberprüfung eine starke Signaturprüfung durch. Legen Sie den parameter pvExtra so fest, dass er auf eine CERT_STRONG_SIGN_PARA-Struktur verweist, die die Parameter enthält, die zum Überprüfen der Signaturstärke erforderlich sind..
Windows 8 und Windows Server 2012: Die Unterstützung für dieses Flag beginnt. |
pvExtra
Wenn Sie den dwFlags-Parameter auf CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG festlegen, legen Sie diesen Parameter (pvExtra) so fest, dass er auf eine CERT_STRONG_SIGN_PARA Struktur verweist, die die Parameter enthält, die zum Überprüfen der Signaturstärke verwendet werden.
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.
Die folgenden Fehlercodes werden am häufigsten von der GetLastError-Funktion zurückgegeben.
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 |