2 rdesktop: A Remote Desktop Protocol client.
3 RDP licensing negotiation
4 Copyright (C) Matthew Chapman 1999-2002
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #include <openssl/rc4.h>
25 extern char g_username[16];
26 extern char hostname[16];
28 static uint8 g_licence_key[16];
29 static uint8 g_licence_sign_key[16];
31 BOOL g_licence_issued = False;
33 /* Generate a session key and RC4 keys, given client and server randoms */
35 licence_generate_keys(uint8 * client_key, uint8 * server_key, uint8 * client_rsa)
37 uint8 session_key[48];
40 /* Generate session key - two rounds of sec_hash_48 */
41 sec_hash_48(temp_hash, client_rsa, client_key, server_key, 65);
42 sec_hash_48(session_key, temp_hash, server_key, client_key, 65);
44 /* Store first 16 bytes of session key, for generating signatures */
45 memcpy(g_licence_sign_key, session_key, 16);
47 /* Generate RC4 key */
48 sec_hash_16(g_licence_key, &session_key[16], client_key, server_key);
53 printf("g_license_key:\n");
54 for (i = 0; i < 16; ++i)
55 printf(" 0x%02x", g_licence_key[i]);
58 printf("g_license_sign_key:\n");
59 for (i = 0; i < 16; ++i)
60 printf(" 0x%02x", g_licence_sign_key[i]);