2017-02-24 2 views
0

J'ai utilisé OpenSSL 1.0.2j pour développer une application client de messagerie de bureau sans problèmes . J'ai copié le code de mon bureau sur un appareil WinCE 5.0 .NET CF 2.0. La connexion SSL_connect() échoue toujours avec une valeur de 5 (SSL_ERROR_SYSCALL). Un appel à GetLastError() de CE sur me donne une erreur 10038 (opération WSAENOTSOCK Socket sur nonsocket). Avez-vous des suggestions? qu'est-ce qui pourrait causer ce problème?SSL_connect() échoue sur WinCE 5.0

Merci à l'avance

Voici le 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

Le L'erreur est sur SSL_set_bio (ssl_socket, sbioPtr, sbioPtr). a) code manquant, b) utilisé. wrapper net c) SSL recompilé pour WinCE? Vous ne pouvez pas utiliser le même code pour le bureau et WinCE (sauf pour les choses simples). – josef

+0

Merci! J'ai recompilé OpenSSL pour le bureau de plate-forme et le périphérique WinCE. –

Répondre

0

poignée de socket créée à l'aide CompactFramework sur WinCE a une valeur toujours supérieure à Int (valeur maximale attendue sur 'BIO_new_socket')