Mit dem Aufruf Extract_Conversation_Encryption_Level (CMECEL) erhält ein Programm die eingestellte Verschlüsselungsebene der Conversation.
Der Aufruf Extract_Conversation_Encryption_Level() ist im Zustand "Initialize", "Send" und "Receive" erlaubt.
UPIC-Local auf Unix-, Linux- und Windows-Systemen: Die Datenübertragung ist durch die Art der Übertragung selbst geschützt. Der Aufruf Extract_Conversation_Encryption_Level() wird nicht unterstützt.
Diese Funktion gehört zu den zusätzlichen Funktionen des Trägersystems UPIC; sie ist nicht Bestandteil der CPI-C-Schnittstelle.
CMECEL (conversation_ID, encryption_level, return_code)
Parameter
--> conversation_ID | Identifikation der Conversation |
<-- encryption_level | Folgende Werte können Sie erhalten: CM_ENC_LEVEL_NONE CM_ENC_LEVEL_3 CM_ENC_LEVEL_4 CM_ENC_LEVEL_5 Die Benutzerdaten werden verschlüsselt übertragen, zum Verschlüsseln wird der AES-Algorithmus benutzt. Für den Austausch des AES-Schlüssels wird ein ECDH-Algorithmus mit einer Schlüssellänge von 2048 bit verwendet. |
<-- return_code | Ergebnis des Funktionsaufrufs |
Ergebnis ( return_code )
CM_OK
Aufruf ok
CM_CALL_NOT_SUPPORTED
nur bei UPIC-Local auf Unix-, Linux- und Windows-Systemen
Die Funktion wird nicht unterstützt. Dieser Returncode zeigt dem Programm an, dass keine Verschlüsselung notwendig ist.
CM_PROGRAM_STATE_CHECK
Die Conversation ist im Zustand "Start" oder "Reset".
CM_PROGRAM_PARAMETER_CHECK
Der Wert der conversation_ID ist ungültig.
CM_PRODUCT_SPECIFIC_ERROR
Die UPIC-Instanz konnte nicht gefunden werden.
CM_ENCRYPTION_NOT_SUPPORTED
Für diese Conversation ist keine Verschlüsselung möglich, weil entweder
- die UTM-Partner-Anwendung keine Verschlüsselung will, da der UPIC-Client vertrauenswürdig (trusted) ist.
der UPIC-Client nicht verschlüsseln kann, weil die Verschlüsselungsfunktionalität nicht zur Verfügung steht.
Zustandsänderung
Der Aufruf ändert den Zustand der Conversation nicht.
Hinweis
CMECEL kann immer nur den aktuellen Wert der Verschlüsselungsebene liefern. Die Verschlüsselungsebene kann durch einen nachfolgenden CPI-C Aufruf immer geändert werden.
Werden nacheinander mehrere Conversations zur gleichen Partner-Anwendung aufgebaut (d.h. die Kommunikationsverbindung wird nicht jedesmal auf- und abgebaut), so kann das Ergebnis von CMECEL nach dem ersten CMINIT CM_OK, nach allen folgenden CMINIT-Aufrufen aber CM_ENCRYPTION_NOT_SUPPORTED sein. Die UPIC-Bibliothek baut erst nach dem ersten CMALLOC-Aufruf eine Verbindung zur Partner-Anwendung auf und legt damit die Möglichkeit für Verschlüsselung fest.
Verhalten im Fehlerfall
CM_CALL_NOT_SUPPORTED
Dieser Returncode gilt nur für Unix-, Linux- und Windows-Systeme.
Dies muss kein Fehler sein: Falls eine Anwendung sowohl für UPIC-L als auch für UPIC-R vorgesehen ist, bedeutet dieser Returncode lediglich, dass die Anwendung mit einer UPIC-L Bibliothek gebunden ist. In diesem Fall ist Verschlüsselung nicht nötig. Das Programm kann sich diesen Returncode conversation-spezifisch merken und auf weitere Aufrufe zur Verschlüsselung verzichten.
CM_PROGRAM_STATE_CHECK
Programm ändern.
CM_PROGRAM_PARAMETER_CHECK
Programm ändern.
CM_PRODUCT_SPECIFIC_ERROR
Das Betriebssystem kann nicht genügend Speicherplatz für interne Puffer bereitstellen. Überprüfen Sie Ihr Programm auf zu hohe Speicherplatzanforderung und starten Sie ggf. Ihr System neu.
CM_ENCRYPTION_NOT_SUPPORTED
Die Encryption-Voraussetzungen sind nicht erfüllt.
Dies muss kein Fehler sein: Falls eine UPIC-R Anwendung mit verschiedenen UTM-Partnern kommuniziert, von denen einige verschlüsseln können und andere nicht, bedeutet dieser Returncode lediglich, dass die Anwendung mit einer UTM-Anwendung kommuniziert, die nicht verschlüsseln kann oder will. In diesem Fall ist Verschlüsselung nicht möglich. Das Programm kann sich diesen Returncode conversation-spezifisch merken und auf weitere Aufrufe zur Verschlüsselung verzichten.
Extract_Conversation_Encryption_Level (unsigned char CM_PTR conversation_ID, CM_ENCRYPTION_LEVEL CM_PTR encryption_level, CM_RETURN_CODE CM_PTR return_code )