2017-02-24 3 views
0

Ich habe OpenSSL 1.0.2j verwendet, um eine Desktop-E-Mail-Client-Anwendung ohne Probleme zu entwickeln. Ich habe den Code von meinem Desktop auf ein WinCE 5.0-Gerät .NET CF 2.0 kopiert. Die Verbindung SSL_connect() schlägt immer mit dem Wert 5 (SSL_ERROR_SYSCALL) fehl. Ein Aufruf von CE GetLastError() an gibt mir einen Fehler 10038 (WSAENOTSOCK Socket-Operation auf Nicht-Socket). Haben Sie Vorschläge? Was könnte dieses Problem verursachen?SSL_connect() fehlgeschlagen auf WinCE 5.0

Vielen Dank im Voraus

Hier ist der Code:

 SSL_library_init() 
     OPENSSL_add_all_algorithms_noconf() 
     Dim sslCtx As IntPtr = SSL_CTX_new(SSLv23_client_method()) 
     Dim ssl_socket As IntPtr = SSL_new(sslCtx) 
     Dim sbioPtr As IntPtr = BIO_new_socket(mySocket.Handle, 0) 
     SSL_set_bio(ssl_socket, sbioPtr, sbioPtr) 

     Dim connOK As Integer = SSL_connect(ssl_socket) 
     If connOK = 1 Then 
      ..... 
     Else 
      MsgBox("OpenSSL's SSL_connect() failed") 
      Dim errcode As Integer = SSL_get_error(ssl_socket, connOK) 
       MsgBox("SSL Error: " + errcode.ToString) 
      If errcode = 5 Then 
       MsgBox("GLE = " + Runtime.InteropServices.Marshal.GetLastWin32Error.ToString) 
      End If 
     End If 
     mySocket.Close() 
    Else 
     MsgBox("Socket's connect() failed") 
    End If 
+0

Die Fehler ist bei SSL_set_bio (ssl_socket, sbioPtr, sbioPtr). a) fehlender Code, b) verwendeter .net-Wrapper c) SSL für WinCE neu kompiliert? Sie können nicht den gleichen Code für Desktop und WinCE verwenden (außer für einfache Dinge). – josef

+0

Danke! Ich habe OpenSSL für den Plattform-Desktop und das winCE-Gerät neu kompiliert. –

Antwort

0

Sockel des Griffs create Compact auf WinCE mit immer größeren Wert hat als Int (max Wert erwartet auf 'BIO_new_socket')

Verwandte Themen