If we are server, our encryption key is client's decryption key and vice-versa.
authorPawel Jakub Dawidek <pawel@dawidek.net>
Sun, 15 Jan 2012 19:52:27 +0000 (20:52 +0100)
committerPawel Jakub Dawidek <pawel@dawidek.net>
Mon, 16 Jan 2012 14:55:06 +0000 (15:55 +0100)
libfreerdp-core/security.c

index 77879da..0b17d7d 100644 (file)
@@ -347,8 +347,17 @@ boolean security_establish_keys(uint8* client_random, rdpRdp* rdp)
 
        memcpy(rdp->sign_key, session_key_blob, 16);
 
-       security_md5_16_32_32(&session_key_blob[16], client_random, server_random, rdp->decrypt_key);
-       security_md5_16_32_32(&session_key_blob[32], client_random, server_random, rdp->encrypt_key);
+       if (rdp->settings->server_mode) {
+               security_md5_16_32_32(&session_key_blob[16], client_random,
+                   server_random, rdp->encrypt_key);
+               security_md5_16_32_32(&session_key_blob[32], client_random,
+                   server_random, rdp->decrypt_key);
+       } else {
+               security_md5_16_32_32(&session_key_blob[16], client_random,
+                   server_random, rdp->decrypt_key);
+               security_md5_16_32_32(&session_key_blob[32], client_random,
+                   server_random, rdp->encrypt_key);
+       }
 
        if (settings->encryption_method == 1) /* 40 and 56 bit */
        {