CryptSetProvParam-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollten mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Releases entfernen.
 
Die CryptSetProvParam-Funktion passt die Vorgänge eines Kryptografiedienstanbieters (CSP ) an. Diese Funktion wird häufig verwendet, um eine Sicherheitsbeschreibung für den Schlüsselcontainer festzulegen, der einem CSP zugeordnet ist, um den Zugriff auf die privaten Schlüssel in diesem Schlüsselcontainer zu steuern.

Syntax

BOOL CryptSetProvParam(
  [in] HCRYPTPROV hProv,
  [in] DWORD      dwParam,
  [in] const BYTE *pbData,
  [in] DWORD      dwFlags
);

Parameter

[in] hProv

Der Handle eines CSP, für den Werte festgelegt werden sollen. Dieses Handle muss bereits mit der Funktion CryptAcquireContext erstellt worden sein.

[in] dwParam

Gibt den festzulegenden Parameter an. Dies kann einer der folgenden Werte sein.

Wert Bedeutung
PP_CLIENT_HWND
1 (0x1)
Legen Sie das Fensterhandle fest, das der Anbieter als übergeordnetes Element aller dialogfelder verwendet, die er erstellt. pbData enthält einen Zeiger auf einen HWND , der das übergeordnete Fensterhandle enthält.

Dieser Parameter muss vor dem Aufrufen von CryptAcquireContext festgelegt werden, da viele CSPs eine Benutzeroberfläche anzeigen, wenn CryptAcquireContext aufgerufen wird. Sie können NULL für den hProv-Parameter übergeben, um dieses Fensterhandle für alle kryptografischen Kontexte festzulegen, die später in diesem Prozess abgerufen werden.

PP_DELETEKEY
24 (0x18)
Löschen Sie den kurzlebigen Schlüssel, der einem Hash-, Verschlüsselungs- oder Überprüfungskontext zugeordnet ist. Dadurch werden Arbeitsspeicher freigegeben und registrierungseinstellungen gelöscht, die dem Schlüssel zugeordnet sind.
PP_KEYEXCHANGE_ALG
Diese Konstante wird nicht verwendet.
PP_KEYEXCHANGE_PIN
32 (0x20)
Gibt an, dass die Schlüsselaustausch-PIN in pbData enthalten ist. Die PIN wird als NULL-beendete ASCII-Zeichenfolge dargestellt.
PP_KEYEXCHANGE_KEYSIZE
Diese Konstante wird nicht verwendet.
PP_KEYSET_SEC_DESCR
8 (0x8)
Legt die Sicherheitsbeschreibung für den Schlüsselspeichercontainer fest. Der pbData-Parameter ist die Adresse einer SECURITY_DESCRIPTOR-Struktur , die die neue Sicherheitsbeschreibung für den Schlüsselspeichercontainer enthält.
PP_PIN_PROMPT_STRING
44 (0x2C)
Legt eine alternative Eingabeaufforderungszeichenfolge fest, die dem Benutzer angezeigt wird, wenn die PIN des Benutzers angefordert wird. Der pbData-Parameter ist ein Zeiger auf eine Unicode-Zeichenfolge mit Null-Endung.
PP_ROOT_CERTSTORE
46 (0x2E)
Legt den Stammzertifikatspeicher für die smarte Karte fest. Der Anbieter kopiert die Stammzertifikate aus diesem Speicher auf den smarten Karte.

Der pbData-Parameter ist eine HCERTSTORE-Variable , die das Handle des neuen Zertifikatspeichers enthält. Der Anbieter kopiert die Zertifikate während dieses Aufrufs aus dem Speicher, sodass es sicher ist, diesen Speicher zu schließen, nachdem diese Funktion aufgerufen wurde.

Windows XP und Windows Server 2003: Dieser Parameter wird nicht unterstützt.

PP_SIGNATURE_ALG
Diese Konstante wird nicht verwendet.
PP_SIGNATURE_PIN
33 (0x21)
Gibt die Signatur-PIN an. Der pbData-Parameter ist eine ASCII-Zeichenfolge mit Null-Beendigung, die die PIN darstellt.
PP_SIGNATURE_KEYSIZE
Diese Konstante wird nicht verwendet.
PP_UI_PROMPT
21 (0x15)
Legt bei einem Anbieter für intelligente Karte die Suchzeichenfolge fest, die dem Benutzer als Aufforderung zum Einfügen des intelligenten Karte angezeigt wird. Diese Zeichenfolge wird als lpstrSearchDesc-Member der OPENCARDNAME_EX-Struktur übergeben, die an die SCardUIDlgSelectCard-Funktion übergeben wird. Diese Zeichenfolge wird für die Lebensdauer des aufrufenden Prozesses verwendet.

Der pbData-Parameter ist ein Zeiger auf eine Unicode-Zeichenfolge mit Null-Endung.

PP_USE_HARDWARE_RNG
38 (0x26)
Gibt an, dass der CSP ausschließlich den Hardware-Zufallszahlengenerator (RNG) verwenden muss. Wenn PP_USE_HARDWARE_RNG festgelegt ist, werden zufällige Werte ausschließlich aus der Hardware-RNG entnommen, und es werden keine anderen Quellen verwendet. Wenn ein Hardware-RNG vom CSP unterstützt wird und ausschließlich verwendet werden kann, ist die Funktion erfolgreich und gibt TRUE zurück. Andernfalls schlägt die Funktion fehl und gibt FALSE zurück. Der pbData-Parameter muss NULL sein, und dwFlags muss null sein, wenn dieser Wert verwendet wird.

Keiner der Microsoft-CSPs unterstützt derzeit die Verwendung eines Hardware-RNG.

PP_USER_CERTSTORE
42 (0x2A)
Gibt den Benutzerzertifikatspeicher für die intelligente Karte an. Dieser Zertifikatspeicher enthält alle Benutzerzertifikate, die auf dem intelligenten Karte gespeichert sind. Die Zertifikate in diesem Speicher werden mithilfe von PKCS_7_ASN_ENCODING- oder X509_ASN_ENCODING-Codierung codiert und sollten die CERT_KEY_PROV_INFO_PROP_ID-Eigenschaft enthalten.

Der pbData-Parameter ist eine HCERTSTORE-Variable , die das Handle eines In-Memory-Zertifikatspeichers empfängt. Wenn dieses Handle nicht mehr benötigt wird, muss es vom Aufrufer mithilfe der CertCloseStore-Funktion geschlossen werden.

Windows Server 2003 und Windows XP: Dieser Parameter wird nicht unterstützt.

PP_SECURE_KEYEXCHANGE_PIN
47 (0x2F)
Gibt an, dass eine verschlüsselte Schlüsselaustausch-PIN in pbData enthalten ist. Der pbData-Parameter enthält eine DATA_BLOB.
PP_SECURE_SIGNATURE_PIN
48 (0x30)
Gibt an, dass eine verschlüsselte Signatur-PIN in pbData enthalten ist. Der pbData-Parameter enthält eine DATA_BLOB.
PP_SMARTCARD_READER
43 (0x2B)
Gibt den Namen des Intelligenten Karte-Lesers an. Der pbData-Parameter ist die Adresse eines ANSI-Zeichenarrays, das eine NULL-beendete ANSI-Zeichenfolge enthält, die den Namen des Smart Karte-Reader enthält.

Windows Server 2003 und Windows XP: Dieser Parameter wird nicht unterstützt.

PP_SMARTCARD_GUID
45 (0x2D)
Gibt den Bezeichner des intelligenten Karte an. Der pbData-Parameter ist die Adresse einer GUID-Struktur, die den Bezeichner des smarten Karte enthält.

Windows Server 2003 und Windows XP: Dieser Parameter wird nicht unterstützt.

[in] pbData

Ein Zeiger auf einen Datenpuffer, der den Wert enthält, der als Anbieterparameter festgelegt werden soll. Die Form dieser Daten variiert je nach dwParam-Wert . Wenn dwParamPP_USE_HARDWARE_RNG enthält, muss dieser Parameter NULL sein.

[in] dwFlags

Wenn dwParamPP_KEYSET_SEC_DESCR enthält, enthält dwFlags die SECURITY_INFORMATION anwendbaren Bitflags, wie im Platform SDK definiert. Die Schlüsselcontainersicherheit wird mithilfe von SetFileSecurity und GetFileSecurity behandelt.

Diese Bitflags können mithilfe eines bitweisen OR-Vorgangs kombiniert werden. Weitere Informationen finden Sie unter CryptGetProvParam.

Wenn dwParamPP_USE_HARDWARE_RNG oder PP_DELETEKEY ist, muss dwFlags auf 0 festgelegt 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 von "NTE" vorangestellten Fehlercodes werden vom verwendeten CSP generiert. Zu den Fehlercodes zählen die folgenden.

Rückgabecode Beschreibung
ERROR_BUSY
Der CSP-Kontext wird derzeit von einem anderen Prozess verwendet.
ERROR_INVALID_HANDLE
Einer der Parameter gibt ein ungültiges Handle an.
ERROR_INVALID_PARAMETER
Einer der Parameter enthält einen ungültigen Wert. Dies ist in den meisten Fällen ein nicht gültiger Zeiger.
NTE_BAD_FLAGS
Der dwFlags-Parameter ist nonzero, oder der pbData-Puffer enthält einen ungültigen Wert.
NTE_BAD_TYPE
Der dwParam-Parameter gibt einen unbekannten Parameter an.
NTE_BAD_UID
Der CSP-Kontext, der beim Erstellen des hKey-Schlüssels angegeben wurde, kann nicht gefunden werden.
NTE_FAIL
Die Funktion ist auf unerwartete Weise fehlgeschlagen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

CryptAcquireContext

CryptGetProvParam

CryptSetKeyParam

Dienstanbieterfunktionen