WinCE 5.0上的SSL_connect()失败
问题描述:
我使用OpenSSL 1.0.2j来开发桌面电子邮件客户端应用程序,但没有 问题。我将代码从桌面复制到WinCE 5.0设备.NET CF 2.0。 连接SSL_connect()一直失败,值为5(SSL_ERROR_SYSCALL)。 对CE的GetLastError()的调用给我一个错误10038(WSAENOTSOCK套接字在非套接字上的操作)。 你有什么建议吗?什么可能导致这个问题?WinCE 5.0上的SSL_connect()失败
在此先感谢
下面的代码:
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
答
套接字句柄使用CompactFramework WinCE的创建一向重视比
的INT(预计 'BIO_new_socket' 最大值)更大错误在SSL_set_bio(ssl_socket,sbioPtr,sbioPtr)。 a)缺少代码,b)使用.net包装c)为WinCE重新编译SSL?你不能在桌面和WinCE上使用相同的代码(除了简单的东西)。 – josef
谢谢!我为平台桌面和winCE设备重新编译了OpenSSL。 –