Client use this snac to login to server
(md5 login sequence). Server should reply via
SNAC(17,03), containing BOS address/cookie or
errorcode. Password hash creating:
You'll need password, authkey from SNAC(17,07) and RFC 1321 md5 routines:
#define AIM_MD5_STRING "AOL Instant Messenger (SM)"
/* calculate md5-hash to send to server */
md5_init(&state);
md5_append(&state, (const md5_byte_t *)authkey, strlen(authkey));
md5_append(&state, (const md5_byte_t *)passwd, strlen(passwd));
md5_append(&state, (const md5_byte_t *)AIM_MD5_STRING, strlen(AIM_MD5_STRING));
md5_finish(&state, (md5_byte_t *)auth_hash);
/* Now we ready send to server auth_hash array (16 bytes long) */
00 17 |
|
word |
|
SNAC family |
00 02 |
|
word |
|
SNAC subtype |
00 00 |
|
word |
|
SNAC flags |
xx xx xx xx |
|
dword |
|
SNAC request-id |
|
|
|
00 01 |
|
word |
|
TLV.Type(0x01) - screen name |
xx xx |
|
word |
|
TLV.Length |
|
|
|
| |
|
|
|
00 03 |
|
word |
|
TLV.Type(0x03) - client id string |
xx xx |
|
word |
|
TLV.Length |
|
xx .. |
|
string |
|
Client id string (name, version) |
|
|
| |
|
|
|
00 25 |
|
word |
|
TLV.Type(0x25) - password md5 hash |
00 10 |
|
word |
|
TLV.Length |
|
xx xx xx xx
xx xx xx xx
xx xx xx xx
xx xx xx xx
|
|
array |
|
password md5 hash |
|
|
| |
|
|
|
00 16 |
|
word |
|
TLV.Type(0x16) - client id |
00 02 |
|
word |
|
TLV.Length |
|
xx xx |
|
word |
|
Client id number |
|
|
| |
|
|
|
00 17 |
|
word |
|
TLV.Type(0x17) - client major version |
00 02 |
|
word |
|
TLV.Length |
|
xx xx |
|
word |
|
Client major version |
|
|
| |
|
|
|
00 18 |
|
word |
|
TLV.Type(0x18) - client minor version |
00 02 |
|
word |
|
TLV.Length |
|
xx xx |
|
word |
|
Client minor version |
|
|
| |
|
|
|
00 19 |
|
word |
|
TLV.Type(0x19) - client lesser version |
00 02 |
|
word |
|
TLV.Length |
|
xx xx |
|
word |
|
Client lesser version |
|
|
| |
|
|
|
00 1A |
|
word |
|
TLV.Type(0x1A) - client build number |
00 02 |
|
word |
|
TLV.Length |
|
xx xx |
|
word |
|
Client build number |
|
|
| |
|
|
|
00 14 |
|
word |
|
TLV.Type(0x14) - distribution number |
00 04 |
|
word |
|
TLV.Length |
|
xx xx xx xx |
|
dword |
|
Distribution number |
|
|
| |
|
|
|
00 0F |
|
word |
|
TLV.Type(0x0F) - client language (2 symbols) |
xx xx |
|
word |
|
TLV.Length |
|
xx .. |
|
string |
|
Client language |
|
|
| |
|
|
|
00 0E |
|
word |
|
TLV.Type(0x0E) - client country (2 symbols) |
xx xx |
|
word |
|
TLV.Length |
|
xx .. |
|
string |
|
Client country |
|
|
| |
|
|
|
00 0F |
|
word |
|
TLV.Type(0x4A) - SSI use flag |
00 01 |
|
word |
|
TLV.Length |
|
xx |
|
char |
|
SSI flag: 1 - SSI only, 0 - family 0x03 |
|
|
| |
|
|
|
|