Hi! I have some server and async. transport on WINSOCK. Send and receive do with next operations:
DWORD CSSLTLSLayer::Receive(IN OVERLAPPED *pOverlapped, IN WSABUF *pBuffer, OUT PDWORD pdwWasRecv) { DWORD dwRet = __super::Receive(pOverlapped, pBuffer, pdwWasRecv); BIO_write(m_pNetworkBIO, pBuffer->buf, *pdwWasRecv); BIO_flush(m_pNetworkBIO); size_t iBuffered = BIO_ctrl_pending(m_pSSLBIO); if (iBuffered <= 0){ return(WSA_IO_PENDING); } m_vcLayeredBuffer.clear(); m_vcLayeredBuffer.resize(iBuffered); iBuffered = BIO_read(m_pSSLBIO, &m_vcLayeredBuffer.front(), (int)iBuffered); pBuffer->buf = &m_vcLayeredBuffer.front(); pBuffer->len = (u_long)m_vcLayeredBuffer.size(); return(dwRet); } DWORD CSSLTLSLayer::Send(IN OVERLAPPED *pOverlapped, IN WSABUF *pBuffer, OUT PDWORD pdwWasSend) { size_t iBuffered = BIO_write(m_pSSLBIO, pBuffer->buf, pBuffer->len); BIO_flush(m_pSSLBIO); iBuffered = (int)BIO_ctrl_pending(m_pNetworkBIO); if (iBuffered <= 0){ return(WSA_IO_PENDING); } m_vcLayeredBuffer.clear(); m_vcLayeredBuffer.resize(iBuffered); iBuffered = BIO_read(m_pNetworkBIO, &m_vcLayeredBuffer.front(), (int)iBuffered); pBuffer->buf = &m_vcLayeredBuffer.front(); pBuffer->len = (u_long)m_vcLayeredBuffer.size(); return(__super::Send(pOverlapped, pBuffer, pdwWasSend)); } But i have a problem with handshake. How can i do SSL handshake using BIO and without SSL_accept or SSL_set_accept_state()+SSL_do_handshake. Thanks for support!;) -- Best regards, Vladimir Sabanov mailto:[EMAIL PROTECTED] Software Developer of ApriorIT - A PriorITy choice! ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED]