libfreerdp-core: make NLA use transport abstraction layer

This commit is contained in:
Marc-André Moreau 2012-11-14 21:30:21 -05:00
parent f19f3a6024
commit b70bfc1579
3 changed files with 19 additions and 19 deletions

View File

@ -134,8 +134,8 @@ int credssp_ntlm_client_init(rdpCredssp* credssp)
(char*) credssp->identity.User, (char*) credssp->identity.Domain, (char*) credssp->identity.Password);
#endif
sspi_SecBufferAlloc(&credssp->PublicKey, credssp->TlsIn->PublicKeyLength);
CopyMemory(credssp->PublicKey.pvBuffer, credssp->TlsIn->PublicKey, credssp->TlsIn->PublicKeyLength);
sspi_SecBufferAlloc(&credssp->PublicKey, credssp->transport->TlsIn->PublicKeyLength);
CopyMemory(credssp->PublicKey.pvBuffer, credssp->transport->TlsIn->PublicKey, credssp->transport->TlsIn->PublicKeyLength);
length = sizeof(TERMSRV_SPN_PREFIX) + strlen(settings->ServerHostname);
@ -165,8 +165,8 @@ int credssp_ntlm_server_init(rdpCredssp* credssp)
rdpSettings* settings = credssp->settings;
instance = (freerdp*) settings->instance;
sspi_SecBufferAlloc(&credssp->PublicKey, credssp->TlsIn->PublicKeyLength);
CopyMemory(credssp->PublicKey.pvBuffer, credssp->TlsIn->PublicKey, credssp->TlsIn->PublicKeyLength);
sspi_SecBufferAlloc(&credssp->PublicKey, credssp->transport->TlsIn->PublicKeyLength);
CopyMemory(credssp->PublicKey.pvBuffer, credssp->transport->TlsIn->PublicKey, credssp->transport->TlsIn->PublicKeyLength);
return 1;
}
@ -1128,7 +1128,7 @@ void credssp_send(rdpCredssp* credssp)
ber_write_octet_string(s, credssp->pubKeyAuth.pvBuffer, length);
}
tls_write(credssp->TlsOut, s->data, stream_get_length(s));
transport_write(credssp->transport, s);
stream_free(s);
}
@ -1147,7 +1147,7 @@ int credssp_recv(rdpCredssp* credssp)
s = stream_new(4096);
status = tls_read_all(credssp->TlsIn, s->p, stream_get_left(s));
status = transport_read(credssp->transport, s);
s->size = status;
if (status < 0)
@ -1231,7 +1231,7 @@ void credssp_buffer_free(rdpCredssp* credssp)
* @return new CredSSP state machine.
*/
rdpCredssp* credssp_new(freerdp* instance, rdpTls* TlsIn, rdpTls* TlsOut, rdpSettings* settings)
rdpCredssp* credssp_new(freerdp* instance, rdpTransport* transport, rdpSettings* settings)
{
rdpCredssp* credssp;
@ -1248,8 +1248,7 @@ rdpCredssp* credssp_new(freerdp* instance, rdpTls* TlsIn, rdpTls* TlsOut, rdpSet
credssp->instance = instance;
credssp->settings = settings;
credssp->server = settings->ServerMode;
credssp->TlsIn = TlsIn;
credssp->TlsOut = TlsOut;
credssp->transport = transport;
credssp->send_seq_num = 0;
credssp->recv_seq_num = 0;
ZeroMemory(&credssp->negoToken, sizeof(SecBuffer));

View File

@ -17,8 +17,8 @@
* limitations under the License.
*/
#ifndef FREERDP_SSPI_CREDSSP_H
#define FREERDP_SSPI_CREDSSP_H
#ifndef FREERDP_CORE_CREDSSP_H
#define FREERDP_CORE_CREDSSP_H
typedef struct rdp_credssp rdpCredssp;
@ -33,17 +33,18 @@ typedef struct rdp_credssp rdpCredssp;
#include <freerdp/crypto/der.h>
#include <freerdp/crypto/crypto.h>
#include "transport.h"
struct rdp_credssp
{
BOOL server;
rdpTls* TlsIn;
rdpTls* TlsOut;
int send_seq_num;
int recv_seq_num;
freerdp* instance;
CtxtHandle context;
LPTSTR SspiModule;
rdpSettings* settings;
rdpTransport* transport;
SecBuffer negoToken;
SecBuffer pubKeyAuth;
SecBuffer authInfo;
@ -56,9 +57,9 @@ struct rdp_credssp
SecPkgContext_Sizes ContextSizes;
};
FREERDP_API int credssp_authenticate(rdpCredssp* credssp);
int credssp_authenticate(rdpCredssp* credssp);
FREERDP_API rdpCredssp* credssp_new(freerdp* instance, rdpTls* TlsIn, rdpTls* TlsOut, rdpSettings* settings);
FREERDP_API void credssp_free(rdpCredssp* credssp);
rdpCredssp* credssp_new(freerdp* instance, rdpTransport* transport, rdpSettings* settings);
void credssp_free(rdpCredssp* credssp);
#endif /* FREERDP_SSPI_CREDSSP_H */
#endif /* FREERDP_CORE_CREDSSP_H */

View File

@ -130,7 +130,7 @@ BOOL transport_connect_nla(rdpTransport* transport)
instance = (freerdp*) settings->instance;
if (transport->credssp == NULL)
transport->credssp = credssp_new(instance, transport->TlsIn, transport->TlsOut, settings);
transport->credssp = credssp_new(instance, transport, settings);
if (credssp_authenticate(transport->credssp) < 0)
{
@ -252,7 +252,7 @@ BOOL transport_accept_nla(rdpTransport* transport)
instance = (freerdp*) settings->instance;
if (transport->credssp == NULL)
transport->credssp = credssp_new(instance, transport->TlsIn, transport->TlsOut, settings);
transport->credssp = credssp_new(instance, transport, settings);
if (credssp_authenticate(transport->credssp) < 0)
{