Kryptografische Dienstanbieterkontexte

Die erste CryptoAPI-Funktion , die von einer Anwendung aufgerufen wird, die kryptografische APIs verwendet, ist die CryptAcquireContext-Funktion . Diese Funktion gibt ein Handle an einen bestimmten CSP zurück, der die Spezifikation eines bestimmten Schlüsselcontainers innerhalb des CSP enthält. Dieser Schlüsselcontainer ist entweder ein speziell angeforderter Schlüsselcontainer oder der Standardschlüsselcontainer für den aktuell angemeldeten Benutzer.

CryptAcquireContext kann auch einen neuen Schlüsselcontainer erstellen. Weitere Informationen finden Sie unter Beispiel-C-Programm: Erstellen eines Schlüsselcontainers und Generieren von Schlüsseln und Beispiel-C-Programm: Verwenden von CryptAcquireContext.

Ein Kryptografiedienstanbieter (Cryptographic Service Provider , CSP) verfügt sowohl über einen Namen als auch über einen Typ. Beispielsweise lautet der Name einer der csPs, die derzeit mit dem Betriebssystem ausgeliefert werden, Microsoft Base Cryptographic Provider. Es handelt sich um einen PROV_RSA_FULL Typanbieter. Der Name jedes Anbieters ist eindeutig; der Anbietertyp ist nicht.

Wenn eine Anwendung CryptAcquireContext aufruft, um ein CSP-Handle abzurufen, gibt sie einen Anbietertyp und optional einen Anbieternamen an. Wenn sowohl ein Typ als auch ein Name angegeben sind, lädt die Funktion den CSP mit dem entsprechenden Anbietertyp und Anbieternamen. Die Funktion gibt das Handle des CSP zurück, das Sowohl Zugriff auf den CSP als auch auf einen Schlüsselcontainer innerhalb des CSP bietet.

Wenn eine Anwendung CryptAcquireContext aufruft und einen Anbietertyp, aber keinen Anbieternamen angibt, sucht die Funktion nach einem benannten Anbieter und überprüft zunächst eine Liste der dem angemeldeten Benutzer zugeordneten Standardanbieter und, falls dies fehlschlägt, aus einer Liste der dem Computer zugeordneten Standardanbieter. Nachdem der Anbietername ermittelt wurde, sucht die CryptAcquireContext-Funktion nach dem CSP für diesen Anbieter, lädt ihn und gibt sein Handle zurück.

Wenn Sie die Verwendung eines CSP-Handles abgeschlossen haben, geben Sie es frei, indem Sie die CryptReleaseContext-Funktion aufrufen.