Mercurial > pidgin
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); |