119 return self.mechs; |
119 return self.mechs; |
120 end |
120 end |
121 |
121 |
122 -- select a mechanism to use |
122 -- select a mechanism to use |
123 function method:select(mechanism) |
123 function method:select(mechanism) |
124 self.mechanism = mechanism; |
124 if not self.selected and self.mechs[mechanism] then |
125 return self:mechanisms()[mechanism]; |
125 self.selected = mechanism; |
|
126 return true; |
|
127 end |
126 end |
128 end |
127 |
129 |
128 -- feed new messages to process into the library |
130 -- feed new messages to process into the library |
129 function method:process(message) |
131 function method:process(message) |
130 local err; |
132 local err; |
131 local data; |
133 local data; |
132 |
134 |
133 if not self.first_step_done then |
135 if not self.first_step_done then |
134 err, data = cyrussasl.server_start(self.cyrus, self.mechanism, message or "") |
136 err, data = cyrussasl.server_start(self.cyrus, self.selected, message or "") |
135 self.first_step_done = true; |
137 self.first_step_done = true; |
136 else |
138 else |
137 err, data = cyrussasl.server_step(self.cyrus, message or "") |
139 err, data = cyrussasl.server_step(self.cyrus, message or "") |
138 end |
140 end |
139 |
141 |