comparison libfaim/aim_auth.c @ 2:68b230f8da5f

[gaim-migrate @ 11] A few more commits :) committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Thu, 23 Mar 2000 03:16:06 +0000
parents
children 6ced2f1c8b24
comparison
equal deleted inserted replaced
1:2846a03bda67 2:68b230f8da5f
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! */
11 int 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
39 u_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
84 u_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 newpacket.data[0] = 0x00;
102 newpacket.data[1] = 0x07;
103
104 newpacket.data[2] = 0x00;
105 newpacket.data[3] = 0x04;
106
107 newpacket.data[4] = 0x00;
108 newpacket.data[5] = 0x00;
109
110 /* SNAC reqid */
111 newpacket.data[6] = (aim_snac_nextid >> 24) & 0xFF;
112 newpacket.data[7] = (aim_snac_nextid >> 16) & 0xFF;
113 newpacket.data[8] = (aim_snac_nextid >> 8) & 0xFF;
114 newpacket.data[9] = (aim_snac_nextid) & 0xFF;
115
116 /* current password TLV t(0002) */
117 i = 10;
118 newpacket.data[i++] = 0x00;
119 newpacket.data[i++] = 0x02;
120 newpacket.data[i++] = 0x00;
121 newpacket.data[i++] = strlen(current) & 0xff;
122 memcpy(&(newpacket.data[i]), current, strlen(current));
123 i += strlen(current);
124
125 /* new password TLV t(0012) */
126 newpacket.data[i++] = 0x00;
127 newpacket.data[i++] = 0x12;
128 newpacket.data[i++] = 0x00;
129 newpacket.data[i++] = strlen(new) & 0xff;
130 memcpy(&(newpacket.data[i]), new, strlen(new));
131 i+=strlen(new);
132
133 aim_tx_enqueue(&newpacket);
134
135 {
136 struct aim_snac_t snac;
137
138 snac.id = aim_snac_nextid;
139 snac.family = 0x0001;
140 snac.type = 0x0004;
141 snac.flags = 0x0000;
142
143 snac.data = NULL;
144
145 aim_newsnac(&snac);
146 }
147
148 return (aim_snac_nextid++);
149 }