comparison libpurple/protocols/oscar/family_auth.c @ 27429:74e487f82f39

Oh, we don't need a special ui_info field for the AIM clientstring because we can just concat the name and version. And set the distids for libpurple, Pidgin and Finch AOL would like Adium to use 1551 (0x060f)
author Mark Doliner <mark@kingant.net>
date Wed, 08 Jul 2009 20:44:16 +0000
parents 5048054d319a
children 26ce61fc9556
comparison
equal deleted inserted replaced
27428:5048054d319a 27429:74e487f82f39
127 { 127 {
128 FlapFrame *frame; 128 FlapFrame *frame;
129 GSList *tlvlist = NULL; 129 GSList *tlvlist = NULL;
130 int passwdlen; 130 int passwdlen;
131 guint8 *password_encoded; 131 guint8 *password_encoded;
132 const char *clientstring;
133 guint32 distrib; 132 guint32 distrib;
134 133
135 passwdlen = strlen(password); 134 passwdlen = strlen(password);
136 password_encoded = (guint8 *)g_malloc(passwdlen+1); 135 password_encoded = (guint8 *)g_malloc(passwdlen+1);
137 if (passwdlen > MAXICQPASSLEN) 136 if (passwdlen > MAXICQPASSLEN)
139 138
140 frame = flap_frame_new(od, 0x01, 1152); 139 frame = flap_frame_new(od, 0x01, 1152);
141 140
142 aim_encode_password(password, password_encoded); 141 aim_encode_password(password, password_encoded);
143 142
144 clientstring = oscar_get_ui_info_string(
145 od->icq ? "prpl-icq-clientstring" : "prpl-aim-clientstring",
146 ci->clientstring);
147 distrib = oscar_get_ui_info_int( 143 distrib = oscar_get_ui_info_int(
148 od->icq ? "prpl-icq-distid" : "prpl-aim-distid", 144 od->icq ? "prpl-icq-distid" : "prpl-aim-distid",
149 ci->distrib); 145 ci->distrib);
150 146
151 byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */ 147 byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */
152 aim_tlvlist_add_str(&tlvlist, 0x0001, sn); 148 aim_tlvlist_add_str(&tlvlist, 0x0001, sn);
153 aim_tlvlist_add_raw(&tlvlist, 0x0002, passwdlen, password_encoded); 149 aim_tlvlist_add_raw(&tlvlist, 0x0002, passwdlen, password_encoded);
154 150
155 if (clientstring) 151 if (ci->clientstring != NULL)
152 aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring);
153 else {
154 gchar *clientstring = oscar_get_clientstring();
156 aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring); 155 aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring);
156 g_free(clientstring);
157 }
157 aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid); 158 aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid);
158 aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major); 159 aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major);
159 aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor); 160 aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor);
160 aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point); 161 aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point);
161 aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build); 162 aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build);
217 FlapFrame *frame; 218 FlapFrame *frame;
218 GSList *tlvlist = NULL; 219 GSList *tlvlist = NULL;
219 guint8 digest[16]; 220 guint8 digest[16];
220 aim_snacid_t snacid; 221 aim_snacid_t snacid;
221 size_t password_len; 222 size_t password_len;
222 const char *clientstring;
223 guint32 distrib; 223 guint32 distrib;
224 224
225 if (!ci || !sn || !password) 225 if (!ci || !sn || !password)
226 return -EINVAL; 226 return -EINVAL;
227 227
245 else if (truncate_pass && password_len > 8) 245 else if (truncate_pass && password_len > 8)
246 password_len = 8; 246 password_len = 8;
247 247
248 aim_encode_password_md5(password, password_len, key, digest); 248 aim_encode_password_md5(password, password_len, key, digest);
249 249
250 clientstring = oscar_get_ui_info_string(
251 od->icq ? "prpl-icq-clientstring" : "prpl-aim-clientstring",
252 ci->clientstring);
253 distrib = oscar_get_ui_info_int( 250 distrib = oscar_get_ui_info_int(
254 od->icq ? "prpl-icq-distid" : "prpl-aim-distid", 251 od->icq ? "prpl-icq-distid" : "prpl-aim-distid",
255 ci->distrib); 252 ci->distrib);
256 253
257 aim_tlvlist_add_raw(&tlvlist, 0x0025, 16, digest); 254 aim_tlvlist_add_raw(&tlvlist, 0x0025, 16, digest);
258 255
259 #ifndef USE_OLD_MD5 256 #ifndef USE_OLD_MD5
260 aim_tlvlist_add_noval(&tlvlist, 0x004c); 257 aim_tlvlist_add_noval(&tlvlist, 0x004c);
261 #endif 258 #endif
262 259
263 if (clientstring) 260 if (ci->clientstring != NULL)
261 aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring);
262 else {
263 gchar *clientstring = oscar_get_clientstring();
264 aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring); 264 aim_tlvlist_add_str(&tlvlist, 0x0003, clientstring);
265 g_free(clientstring);
266 }
265 aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid); 267 aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid);
266 aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major); 268 aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major);
267 aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor); 269 aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor);
268 aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point); 270 aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point);
269 aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build); 271 aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build);