我在使用 Libstrophe 时遇到了一些问题。我能够让它在 linux (fedora) 中工作,但似乎 Windows 不会那么容易。
运行 basic.exe 我有以下输出(服务器是 dukgo.com):
TLSS DEBUG QuerySecurityPackageInfo() success
TLSS DEBUG AcquireCredentialsHandle() success
conn DEBUG SENT: <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
xmpp DEBUG RECV: <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
xmpp DEBUG handle proceedtls called for proceed
xmpp DEBUG proceeding with TLS
TLSS DEBUG QuerySecurityPackageInfo() success
TLSS DEBUG AcquireCredentialsHandle() success
xmpp DEBUG Couldn't start TLS! error -2146893018
conn DEBUG SENT: </stream:stream>
xmpp DEBUG Socket closed by remote host.
xmpp DEBUG Closing socket.
DEBUG: disconnected
event DEBUG Stopping event loop.
event DEBUG Event loop completed.
问题似乎出在 src\tls_schannel.c:331
ret = tls->sft->InitializeSecurityContextA(&(tls->hcred), &(tls->hctxt), name,
ctxtreq, 0, 0, &sbdin, 0,
&(tls->hctxt), &sbdout,
&ctxtattr, NULL);
}
if (ret == SEC_E_OK) {
ret 值为 -2146893018 而不是 SEC_E_OK。我看到一些关于这个问题的帖子,我改用 OpenSLL 但没有用,仍然无法正常工作。同样在那些情况下,提到了 DecryptMessage(),到目前为止,我从未到达过那行代码。DecryptMessage 返回 SEC_E_UNSUPPORTED_FUNCTION
如果有人对此有任何想法,我将非常感激,我已经尝试解决这个问题一个多星期了,但仍然没有。
谢谢,费德里科。
pd.:我有类似“警告 LNK4006:__NULL_IMPORT_DESCRIPTOR 已在 libeay32MTd.lib(LIBEAY32.dll) 中定义;第二个定义被忽略”之类的警告,我认为 openssl 无论如何都在工作