# HG changeset patch # User Ka-Hing Cheung # Date 1206342869 0 # Node ID 217fffe3f46f250434a4f79e59ef7e79c202029d # Parent 06f195789c3ef430163d795e58f947f609dc4f7d Patch from ccpaging to clean up some QQ stuff. I removed the now commented out qq_crypt() instead of, well, comment it out. diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/buddy_info.c --- a/libpurple/protocols/qq/buddy_info.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/buddy_info.c Mon Mar 24 07:14:29 2008 +0000 @@ -541,7 +541,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { data[len] = '\0'; if (qd->uid == atoi((gchar *) data)) { /* return should be my uid */ purple_debug(PURPLE_DEBUG_INFO, "QQ", "Update info ACK OK\n"); @@ -718,7 +718,7 @@ data = g_newa(guint8, len); info = NULL; - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { if (NULL == (segments = split_data(data, len, "\x1e", QQ_CONTACT_FIELDS))) return; @@ -828,7 +828,7 @@ decr_len = buf_len; decr_buf = g_new0(guint8, buf_len); - if (!qq_crypt(DECRYPT, buf, buf_len, qd->session_key, decr_buf, &decr_len)) { + if (!qq_decrypt(buf, buf_len, qd->session_key, decr_buf, &decr_len)) { purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Couldn't decrypt get level packet\n"); } diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/buddy_list.c --- a/libpurple/protocols/qq/buddy_list.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/buddy_list.c Mon Mar 24 07:14:29 2008 +0000 @@ -166,7 +166,7 @@ purple_debug(PURPLE_DEBUG_INFO, "QQ", "processing get_buddies_online_reply\n"); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { _qq_show_packet("Get buddies online reply packet", data, len); @@ -262,7 +262,7 @@ data = g_newa(guint8, len); cursor = data; - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { read_packet_w(data, &cursor, len, &position); /* the following data is buddy list in this packet */ i = 0; @@ -356,7 +356,7 @@ data = g_newa(guint8, len); cursor = data; - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { read_packet_b(data, &cursor, len, &sub_cmd); g_return_if_fail(sub_cmd == 0x01); read_packet_b(data, &cursor, len, &reply_code); diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/buddy_opt.c --- a/libpurple/protocols/qq/buddy_opt.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/buddy_opt.c Mon Mar 24 07:14:29 2008 +0000 @@ -267,7 +267,7 @@ data = g_newa(guint8, len); cursor = data; - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { read_packet_b(data, &cursor, len, &reply); if (reply != QQ_ADD_BUDDY_AUTH_REPLY_OK) { purple_debug(PURPLE_DEBUG_WARNING, "QQ", "Add buddy with auth request failed\n"); @@ -297,7 +297,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { cursor = data; read_packet_b(data, &cursor, len, &reply); if (reply != QQ_REMOVE_BUDDY_REPLY_OK) { @@ -326,7 +326,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { cursor = data; read_packet_b(data, &cursor, len, &reply); if (reply != QQ_REMOVE_SELF_REPLY_OK) @@ -381,7 +381,7 @@ data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { if (NULL == (segments = split_data(data, len, "\x1f", 2))) return; uid = segments[0]; diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/buddy_status.c --- a/libpurple/protocols/qq/buddy_status.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/buddy_status.c Mon Mar 24 07:14:29 2008 +0000 @@ -195,7 +195,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { cursor = data; read_packet_b(data, &cursor, len, &reply); if (reply != QQ_CHANGE_ONLINE_STATUS_REPLY_OK) { @@ -232,7 +232,7 @@ data = g_newa(guint8, len); cursor = data; - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { s = g_new0(qq_buddy_status, 1); bytes = 0; /* 000-030: qq_buddy_status */ diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/crypt.c --- a/libpurple/protocols/qq/crypt.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/crypt.c Mon Mar 24 07:14:29 2008 +0000 @@ -99,7 +99,7 @@ *is_header = 0; /* and exit header */ } /* encrypt_block */ -static void qq_encrypt(const guint8 *const instr, gint instrlen, +void qq_encrypt(const guint8 *const instr, gint instrlen, const guint8 *const key, guint8 *outstr, gint *outstrlen_ptr) { @@ -211,7 +211,7 @@ } /* return 0 if failed, 1 otherwise */ -static gint qq_decrypt(const guint8 *const instr, gint instrlen, +gint qq_decrypt(const guint8 *const instr, gint instrlen, const guint8 *const key, guint8 *outstr, gint *outstrlen_ptr) { @@ -296,19 +296,3 @@ } return 1; } - -/* return 1 is succeed, otherwise return 0 */ -gint qq_crypt(gint flag, - const guint8 *const instr, gint instrlen, - const guint8 *const key, - guint8 *outstr, gint *outstrlen_ptr) -{ - if (flag == DECRYPT) - return qq_decrypt(instr, instrlen, key, outstr, outstrlen_ptr); - else if (flag == ENCRYPT) - qq_encrypt(instr, instrlen, key, outstr, outstrlen_ptr); - else - return 0; - - return 1; -} diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/crypt.h --- a/libpurple/protocols/qq/crypt.h Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/crypt.h Mon Mar 24 07:14:29 2008 +0000 @@ -27,12 +27,12 @@ #include -#define DECRYPT 0x00 -#define ENCRYPT 0x01 - -gint qq_crypt(gint flag, - const guint8 *const instr, gint instrlen, - const guint8 *const key, - guint8 *outstr, gint *outstrlen_ptr); - +void qq_encrypt(const guint8 *const instr, gint instrlen, + const guint8 *const key, + guint8 *outstr, gint *outstrlen_ptr); + +gint qq_decrypt(const guint8 *const instr, gint instrlen, + const guint8 *const key, + guint8 *outstr, gint *outstrlen_ptr); + #endif diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/file_trans.c --- a/libpurple/protocols/qq/file_trans.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/file_trans.c Mon Mar 24 07:14:29 2008 +0000 @@ -357,7 +357,7 @@ g_free(hex_dump); encrypted_len = bytes + 16; encrypted_data = g_newa(guint8, encrypted_len); - qq_crypt(ENCRYPT, raw_data, bytes, info->file_session_key, encrypted_data, &encrypted_len); + qq_encrypt(raw_data, bytes, info->file_session_key, encrypted_data, &encrypted_len); /*debug: try to decrypt it */ /* if (QQ_DEBUG) { @@ -368,7 +368,7 @@ g_free(hex_dump); buf = g_newa(guint8, MAX_PACKET_SIZE); buflen = encrypted_len; - if (qq_crypt(DECRYPT, encrypted_data, encrypted_len, info->file_session_key, buf, &buflen)) { + if (qq_decrypt(encrypted_data, encrypted_len, info->file_session_key, buf, &buflen)) { purple_debug(PURPLE_DEBUG_INFO, "QQ", "decrypt success\n"); if (buflen == bytes && memcmp(raw_data, buf, buflen) == 0) purple_debug(PURPLE_DEBUG_INFO, "QQ", "checksum ok\n"); @@ -534,7 +534,7 @@ decrypted_data = g_newa(guint8, len); decrypted_len = len; - if (qq_crypt(DECRYPT, cursor, len - (cursor - data), qd->session_md5, decrypted_data, &decrypted_len)) { + if (qq_decrypt(cursor, len - (cursor - data), qd->session_md5, decrypted_data, &decrypted_len)) { gchar *hex_dump; cursor = decrypted_data + 16; /* skip md5 section */ read_packet_w(decrypted_data, &cursor, decrypted_len, &packet_type); diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/group_network.c --- a/libpurple/protocols/qq/group_network.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/group_network.c Mon Mar 24 07:14:29 2008 +0000 @@ -149,7 +149,7 @@ return; } - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { if (len <= 2) { purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Group cmd reply is too short, only %d bytes\n", len); return; diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/im.c --- a/libpurple/protocols/qq/im.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/im.c Mon Mar 24 07:14:29 2008 +0000 @@ -568,7 +568,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { cursor = data; read_packet_b(data, &cursor, len, &reply); if (reply != QQ_SEND_IM_REPLY_OK) { @@ -597,7 +597,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { if (len < 16) { /* we need to ack with the first 16 bytes */ purple_debug(PURPLE_DEBUG_ERROR, "QQ", "IM is too short\n"); return; diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/keep_alive.c --- a/libpurple/protocols/qq/keep_alive.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/keep_alive.c Mon Mar 24 07:14:29 2008 +0000 @@ -77,7 +77,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { /* the last one is 60, don't know what it is */ if (NULL == (segments = split_data(data, len, "\x1f", 6))) return; diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/login_logout.c --- a/libpurple/protocols/qq/login_logout.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/login_logout.c Mon Mar 24 07:14:29 2008 +0000 @@ -336,7 +336,7 @@ /* now generate the encrypted data * 000-015 use pwkey as key to encrypt empty string */ - qq_crypt(ENCRYPT, (guint8 *) "", 0, qd->pwkey, raw_data, &encrypted_len); + qq_encrypt((guint8 *) "", 0, qd->pwkey, raw_data, &encrypted_len); /* 016-016 */ raw_data[16] = 0x00; /* 017-020, used to be IP, now zero */ @@ -362,7 +362,7 @@ /* all zero left */ memset(raw_data+pos, 0, QQ_LOGIN_DATA_LENGTH - pos); - qq_crypt(ENCRYPT, raw_data, QQ_LOGIN_DATA_LENGTH, qd->inikey, encrypted_data, &encrypted_len); + qq_encrypt(raw_data, QQ_LOGIN_DATA_LENGTH, qd->inikey, encrypted_data, &encrypted_len); cursor = buf; bytes = 0; @@ -437,7 +437,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->pwkey, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->pwkey, data, &len)) { /* should be able to decrypt with pwkey */ purple_debug(PURPLE_DEBUG_INFO, "QQ", "Decrypt login reply packet with pwkey, %d bytes\n", len); if (data[0] == QQ_LOGIN_REPLY_OK) { @@ -448,7 +448,7 @@ } } else { /* decrypt with pwkey error */ len = buf_len; /* reset len, decrypt will fail if len is too short */ - if (qq_crypt(DECRYPT, buf, buf_len, qd->inikey, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->inikey, data, &len)) { /* decrypt ok with inipwd, it might be password error */ purple_debug(PURPLE_DEBUG_WARNING, "QQ", "Decrypt login reply packet with inikey, %d bytes\n", len); diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/recv_core.c --- a/libpurple/protocols/qq/recv_core.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/recv_core.c Mon Mar 24 07:14:29 2008 +0000 @@ -91,7 +91,7 @@ msg_utf8 = NULL; _qq_show_packet("Processing unknown packet", buf, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { gchar *hex_dump = hex_dump_to_str(data, len); purple_debug(PURPLE_DEBUG_WARNING, "QQ", ">>> [%d] %s, %d bytes -> [default] decrypt and dump\n%s", diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/send_core.c --- a/libpurple/protocols/qq/send_core.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/send_core.c Mon Mar 24 07:14:29 2008 +0000 @@ -132,7 +132,7 @@ cursor = buf; bytes_written = 0; - qq_crypt(ENCRYPT, data, len, qd->session_key, encrypted_data, &encrypted_len); + qq_encrypt(data, len, qd->session_key, encrypted_data, &encrypted_len); seq_ret = seq; if (_create_packet_head_seq(buf, &cursor, gc, cmd, is_auto_seq, &seq_ret) >= 0) { diff -r 06f195789c3e -r 217fffe3f46f libpurple/protocols/qq/sys_msg.c --- a/libpurple/protocols/qq/sys_msg.c Fri Mar 21 21:11:07 2008 +0000 +++ b/libpurple/protocols/qq/sys_msg.c Mon Mar 24 07:14:29 2008 +0000 @@ -288,7 +288,7 @@ len = buf_len; data = g_newa(guint8, len); - if (qq_crypt(DECRYPT, buf, buf_len, qd->session_key, data, &len)) { + if (qq_decrypt(buf, buf_len, qd->session_key, data, &len)) { if (NULL == (segments = split_data(data, len, "\x1f", 4))) return; code = segments[0];