Function eric_bindings::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. \n 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 Handle zu einem der folgenden Zertifikate: - Portalzertifikat - clientseitig erzeugtes Zertifikat - Ad Hoc-Zertifikat für den neuen Personalausweis @param[out] iInfoPinSupport 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: - 0x00: Keine PIN-Angabe erforderlich, kein PIN-Status unterstützt. - 0x01: PIN-Angabe für Signatur erforderlich. - 0x02: PIN-Angabe für Entschlüsselung erforderlich. - 0x04: PIN-Angabe für Verschlüsselung des Zertifikats erforderlich. - 0x08: reserviert (wird derzeit nicht verwendet) - 0x10: PIN-Status “Pin Ok” wird unterstützt. - 0x20: PIN-Status “Der letzte Versuch der Pin-Eingabe schlug fehl” wird unterstützt. - 0x40: PIN-Status “Beim nächsten fehlerhaften Versuch wird die Pin gesperrt” wird unterstützt. - 0x80: PIN-Status “Pin ist gesperrt” wird unterstützt. \n Falls vom Aufrufer NULL übergeben wird, gibt die Funktion nichts zurück. @param[in] pathToKeystore 1. Clientseitig erzeugtes Zertifikat:
Pfad 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:
Pfad 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:
Pfad zur Treiberdatei, siehe (1). Bitte beachten, dass der Treiber betriebssystemabhängig sein kann. Weitere Informationen in der Anleitung zum Sicherheitsstick oder unter https://www.sicherheitsstick.de . 4. Signaturkarte:
Pfad zur Treiberdatei, welcher einen Zugriff auf die Signaturkarte ermöglicht, siehe (1). Weitere Informationen in der Anleitung zur Signaturkarte. 5. Neuer Personalausweis (nPA):
URL 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 Zu den verfügbaren Testmerkern siehe ERiC-Entwicklerhandbuch.pdf, Kap. “Test Unterstützung bei der ERiC-Anbindung”. \n\b Wichtig: Das Ad Hoc-Zertifikat, das in diesem Fall für den neuen Personalausweis erzeugt wird, ist nur 24 Stunden gültig.

       (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
       LoadLibrary() oder unter Linux und macOS der Dokumentation der
       dlopen() 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 Entwicklerhandbuch 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 \n\n Nur bei Verwendung des neuen Personalausweises: - ::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()