CryptAcquireContext

Aus API-Wiki
Zur Navigation springenZur Suche springen

Die API-Funktion CryptAcquireContext stellt eine Verbindung zu einem Cryptographic Service Provider (CSP) her.

Declare Function CryptAcquireContext Lib "advapi32.dll" _
                 Alias "CryptAcquireContextA" ( _
                 ByRef phProv As Long, _
                 ByVal pszContainer As String, _
                 ByVal pszProvider As String, _
                 ByVal dwProvType As Long, _
                 ByVal dwFlags As Long) As Long


Parameter

phProv

[out] In diesem Long Wert wird das Handle zu dem geöffneten Provider Kontext gespeichert. Nach der Verwendung muss das Handle mittels CryptReleaseContext wieder freigegeben werden.

pszContainer

[in] Der Name des Schlüsselcontainers. In einem benannten Schlüsselcontainer gespeicherte Schlüssel sind permanent abgelegt, d.h. auch nach einem Reboot noch verfügbar. Wird für diesen Parameter NULL übergeben, so wird der Default Container des Providers verwendet. Zu Beachten ist hierbei, dass der Container Applikationsübergreifend verwendet wird, sich also mehrere Programme, vorallem bei gemeinsamer Nutzung des Default Containers in die Quere kommen können.
Auf, in einem Schlüsselcontainer abgelegte Schlüssel kann nur der erstellende Benutzer und Administratoren zugreifen.

pszProvider

[in] Der Name des gewünschten Cryptographic Service Providers. Die Provider "Microsoft Base Cryptographic Provider v1.0" und "Microsoft Enhanced Cryptographic Provider v1.0" werden meist zusammen mit dem Internetexplorer installiert, sollten also auf jedem System mit IE vorhanden sein.
Die auf einem System installierten Provider findet man bei Bedarf in der Registry unter HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider

dwProvType

[in] Der Typ des Providers. Mögliche Werte sind zum Beispiel PROV_RSA_FULL, PROV_RSA_AES oder PROV_RSA_SIG (siehe auch http://msdn2.microsoft.com/en-us/library/aa380244.aspx)

dwFlags

[in] Eine Kombination folgender Werte:
CRYPT_VERIFYCONTEXT es wird kein permanenter Schlüsselcontainer erstellt, pszContainer muss hierbei NULL sein.
CRYPT_NEWKEYSET es wird ein neuer Schlüsselcontainer erstellt.
CRYPT_MACHINE_KEYSET auf den Schlüsselcontainer kann auch vom SYSTEM Konto zugegriffen werden.
CRYPT_DELETEKEYSET der in pszContainer angegebene Container wird gelöscht, in phProv wird in diesem Fall nichts zurückgegeben.
CRYPT_SILENT Die Anzeige eines Benutzer Interfaces wird unterdrückt.
CRYPT_DEFAULT_CONTAINER_OPTIONAL nur in Verbindung mit SmartCard CSPs gültig.

Rückgabe(n)

Bei Erfolg wird ein Wert ungleich 0 zurückgegeben.

Beispiel

Private Const MS_DEF_PROV As String = _
                    "Microsoft Base Cryptographic Provider v1.0" & vbNullChar
Private Const MS_ENHANCED_PROV As String = _
                    "Microsoft Enhanced Cryptographic Provider v1.0" & vbNullChar

    'Provider Kontext anfordern:
    If CryptAcquireContext(hCryptProv, 0, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) = 0 Then
            
        'Enhanced Provider nicht verfügbar, probieren wir den Base Provider:
        If CryptAcquireContext(hCryptProv, 0, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) = 0 Then
            'auch kein Base Provider->fail
            Err.Raise Err.LastDllError, , "CryptAcquireContext Error"
        End If
            
    End If