EricGetHandleToCertificate

Function EricGetHandleToCertificate 

Source
pub unsafe extern "C" fn EricGetHandleToCertificate(
    hToken: *mut EricZertifikatHandle,
    iInfoPinSupport: *mut u32,
    pathToKeystore: *const byteChar,
) -> c_int
Expand description

@brief Für das übergebene Zertifikat in @c pathToKeystore wird das Handle @c hToken und die unterstützten PIN-Werte @c iInfoPinSupport zurückgeliefert.

Die ERiC API benötigt Zertifikat-Handles typischerweise bei kryptografischen Operationen.

Zertifikat-Handles sollten möglichst frühzeitig, d.h. wenn sie nicht mehr benötigt werden, mit EricCloseHandleToCertificate() freigegeben werden, spätestens jedoch zum Programmende bzw. vor dem Entladen der ericapi Bibliothek.

@param[out] hToken @parblock Handle zu einem der folgenden Zertifikate: @mAbsatz - Portalzertifikat - clientseitig erzeugtes Zertifikat - Ad Hoc-Zertifikat für den neuen Personalausweis @endparblock @param[out] iInfoPinSupport @parblock Wird in @c iInfoPinSupport ein Zeiger ungleich NULL übergeben und die Funktion mit ::ERIC_OK beendet, dann enthält @c iInfoPinSupport einen vorzeichenlosen Integer-Wert.

         In diesem Wert ist kodiert abgelegt, ob eine PIN-Eingabe
         erforderlich ist und welche PIN-Statusinformationen
         unterstützt werden.

         Die kodierten Werte (nachfolgend in hexadezimaler Form angegeben)
         können durch ein binäres ODER kombiniert werden und bedeuten im
         Einzelnen: @mAbsatz
         - \c 0x00: Keine PIN-Angabe erforderlich, kein PIN-Status unterstützt.
         - \c 0x01: PIN-Angabe für Signatur erforderlich.
         - \c 0x02: PIN-Angabe für Entschlüsselung erforderlich.
         - \c 0x04: PIN-Angabe für Verschlüsselung des Zertifikats erforderlich.
         - \c 0x08: reserviert (wird derzeit nicht verwendet)
         - \c 0x10: PIN-Status "Pin Ok" wird unterstützt.
         - \c 0x20: PIN-Status "Der letzte Versuch der Pin-Eingabe schlug fehl" wird unterstützt.
         - \c 0x40: PIN-Status "Beim nächsten fehlerhaften Versuch wird die Pin gesperrt" wird unterstützt.
         - \c 0x80: PIN-Status "Pin ist gesperrt" wird unterstützt.

         Falls vom Aufrufer NULL übergeben wird, gibt die Funktion nichts zurück.
 @endparblock

@param[in] pathToKeystore @parblock Folgende Zertifikatstypen werden unterstützt: @mAbsatz 1. Clientseitig erzeugtes Zertifikat: @mLBPfad zum Verzeichnis, in dem sich die Zertifikats-Datei (.cer) und die Datei mit dem privaten Schlüssel (.p12) befinden. Diese Kryptomittel wurden mit EricCreateKey() erzeugt. Der Pfad zum Verzeichnis ist bei clientseitig erzeugten Zertifikaten relativ zum aktuellen Arbeitsverzeichnis oder absolut anzugeben. 2. Software-Portalzertifikat: @mLBPfad zur Software-Zertifikatsdatei (i.d.R. mit der Endung .pfx). Der Pfad zur Datei ist bei Software-Zertifikaten relativ zum aktuellen Arbeitsverzeichnis oder absolut anzugeben. 3. Sicherheitsstick: @mLBPfad zur Treiberdatei, siehe (1). Bitte beachten, dass der Treiber betriebssystemabhängig sein kann. Weitere Informationen in der Anleitung zum Sicherheitsstick oder unter \linkExt{https://www.sicherheitsstick.de,https://www.sicherheitsstick.de}. 4. Signaturkarte: @mLBPfad zur Treiberdatei, welcher einen Zugriff auf die Signaturkarte ermöglicht, siehe (1). Weitere Informationen in der Anleitung zur Signaturkarte. 5. Neuer Personalausweis (nPA): @mLBURL des eID-Clients wie zum Beispiel der AusweisApp 2 In den meisten Fällen lautet diese URL: http://127.0.0.1:24727/eID-Client Optional kann auf die folgende Weise noch ein Testmerker angehängt werden: http://127.0.0.1:24727/eID-Client?testmerker=520000000. @mLBZu den verfügbaren Testmerkern siehe @typeDokumentation{ERiC-Entwicklerhandbuch.pdf}, Kap. “Test Unterstützung bei der ERiC-Anbindung”.

           <b>Wichtig:</b> Das Ad Hoc-Zertifikat, das in diesem Fall für den neuen
                    Personalausweis erzeugt wird, ist nur 24 Stunden gültig.
 @endparblock

 (1) Bei Sicherheitssticks und Signaturkarten ist bei der Angabe
 des Treibers der Suchmechanismus nach dynamischen Modulen des
 jeweiligen Betriebssystems zu berücksichtigen. Weitere
 Informationen sind z.B. unter Windows der Dokumentation der
 <tt>LoadLibrary()</tt> oder unter Linux und macOS der Dokumentation der
 <tt>dlopen()</tt> zu entnehmen.

 Pfade müssen auf Windows in der für Datei-Funktionen benutzten ANSI-Codepage,
 auf Linux, AIX und Linux Power in der für das Dateisystem benutzten Locale
 und auf macOS in der "decomposed form" von UTF-8 übergeben werden.
 Bitte weitere Betriebssystemspezifika bzgl. nicht erlaubter Zeichen in
 Pfaden und Pfadtrennzeichen beachten.

 Für Details zu Pfaden im ERiC siehe @typeDokumentation{ERiC-Entwicklerhandbuch.pdf}, Kapitel
 "Übergabe von Pfaden an ERiC API-Funktionen".

@return - ::ERIC_OK - ::ERIC_GLOBAL_NULL_PARAMETER - ::ERIC_GLOBAL_NICHT_GENUEGEND_ARBEITSSPEICHER - ::ERIC_GLOBAL_UNKNOWN - ::ERIC_CRYPT_NICHT_UNTERSTUETZTES_PSE_FORMAT - ::ERIC_CRYPT_E_MAX_SESSION - ::ERIC_CRYPT_E_PSE_PATH - ::ERIC_CRYPT_E_BUSY - ::ERIC_CRYPT_E_P11_SLOT_EMPTY - ::ERIC_CRYPT_E_NO_SIG_ENC_KEY - ::ERIC_CRYPT_E_LOAD_DLL - ::ERIC_CRYPT_E_NO_SERVICE - ::ERIC_CRYPT_E_ESICL_EXCEPTION @note Die folgenden Rückgabewerte gelten nur bei Verwendung des neuen Personalausweises. @return - ::ERIC_TRANSFER_EID_CLIENTFEHLER - ::ERIC_TRANSFER_EID_FEHLENDEFELDER - ::ERIC_TRANSFER_EID_IDENTIFIKATIONABGEBROCHEN - ::ERIC_TRANSFER_EID_NPABLOCKIERT - ::ERIC_TRANSFER_EID_IDNRNICHTEINDEUTIG - ::ERIC_TRANSFER_EID_KEINCLIENT - ::ERIC_TRANSFER_EID_KEINKONTO - ::ERIC_TRANSFER_EID_SERVERFEHLER - ::ERIC_TRANSFER_ERR_CONNECTSERVER - ::ERIC_TRANSFER_ERR_NORESPONSE - ::ERIC_TRANSFER_ERR_PROXYAUTH - ::ERIC_TRANSFER_ERR_PROXYCONNECT - ::ERIC_TRANSFER_ERR_SEND - ::ERIC_TRANSFER_ERR_SEND_INIT - ::ERIC_TRANSFER_ERR_TIMEOUT

@see - EricCloseHandleToCertificate() - EricGetPinStatus()