]> andersk Git - libfaim.git/blame - aim_auth.c
Initial revision
[libfaim.git] / aim_auth.c
CommitLineData
9de3ca7e 1/*
2 aim_auth.c
3
4 Deals with the authorizer.
5
6 */
7
8#include "aim.h"
9
10/* this just pushes the passed cookie onto the passed connection -- NO SNAC! */
11int aim_auth_sendcookie(struct aim_conn_t *conn, char *chipsahoy)
12{
13 struct command_tx_struct newpacket;
14 int curbyte=0;
15
16 newpacket.lock = 1;
17
18 if (conn==NULL)
19 newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_AUTH);
20 else
21 newpacket.conn = conn;
22
23 newpacket.type = 0x0001; /* channel 1 (no SNACs, you know) */
24
25 newpacket.commandlen = 4 + 2 + 2 + 0x100;
26 newpacket.data = (char *) calloc(1, newpacket.commandlen);
27
28 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0000);
29 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0001);
30 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0006);
31 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0100);
32 memcpy(&(newpacket.data[curbyte]), chipsahoy, 0x100);
33
34 aim_tx_enqueue(&newpacket);
35
36 return 0;
37}
38
39u_long aim_auth_clientready(struct aim_conn_t *conn)
40{
41 struct command_tx_struct newpacket;
42 int curbyte = 0;
43
44 newpacket.lock = 1;
45
46 if (conn==NULL)
47 newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_AUTH);
48 else
49 newpacket.conn = conn;
50
51 newpacket.type = 0x0002;
52
53 newpacket.commandlen = 26;
54 newpacket.data = (char *) malloc(newpacket.commandlen);
55
56 curbyte += aim_putsnac(newpacket.data+curbyte, 0x0001, 0x0002, 0x0000, aim_snac_nextid);
57 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0001);
58 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0002);
59 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0001);
60 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0013);
61 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0007);
62 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0001);
63 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0001);
64 curbyte += aimutil_put16(newpacket.data+curbyte, 0x0001);
65
66 aim_tx_enqueue(&newpacket);
67
68 {
69 struct aim_snac_t snac;
70
71 snac.id = aim_snac_nextid;
72 snac.family = 0x0001;
73 snac.type = 0x0004;
74 snac.flags = 0x0000;
75
76 snac.data = NULL;
77
78 aim_newsnac(&snac);
79 }
80
81 return (aim_snac_nextid++);
82}
83
84u_long aim_auth_changepasswd(struct aim_conn_t *conn, char *new, char *current)
85{
86 struct command_tx_struct newpacket;
87 int i;
88
89 newpacket.lock = 1;
90
91 if (conn==NULL)
92 newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_AUTH);
93 else
94 newpacket.conn = conn;
95
96 newpacket.type = 0x0002;
97
98 newpacket.commandlen = 10 + 4 + strlen(current) + 4 + strlen(new);
99 newpacket.data = (char *) malloc(newpacket.commandlen);
100
101 aim_putsnac(newpacket.data, 0x0007, 0x0004, 0x0000, aim_snac_nextid);
102
103 /* current password TLV t(0002) */
104 i = 10;
105 newpacket.data[i++] = 0x00;
106 newpacket.data[i++] = 0x02;
107 newpacket.data[i++] = 0x00;
108 newpacket.data[i++] = strlen(current) & 0xff;
109 memcpy(&(newpacket.data[i]), current, strlen(current));
110 i += strlen(current);
111
112 /* new password TLV t(0012) */
113 newpacket.data[i++] = 0x00;
114 newpacket.data[i++] = 0x12;
115 newpacket.data[i++] = 0x00;
116 newpacket.data[i++] = strlen(new) & 0xff;
117 memcpy(&(newpacket.data[i]), new, strlen(new));
118 i+=strlen(new);
119
120 aim_tx_enqueue(&newpacket);
121
122 {
123 struct aim_snac_t snac;
124
125 snac.id = aim_snac_nextid;
126 snac.family = 0x0001;
127 snac.type = 0x0004;
128 snac.flags = 0x0000;
129
130 snac.data = NULL;
131
132 aim_newsnac(&snac);
133 }
134
135 return (aim_snac_nextid++);
136}
This page took 0.111917 seconds and 5 git commands to generate.