Lines Matching refs:sasl
147 CURLcode Curl_sasl_parse_url_auth_option(struct SASL *sasl, in Curl_sasl_parse_url_auth_option() argument
157 if(sasl->resetprefs) { in Curl_sasl_parse_url_auth_option()
158 sasl->resetprefs = FALSE; in Curl_sasl_parse_url_auth_option()
159 sasl->prefmech = SASL_AUTH_NONE; in Curl_sasl_parse_url_auth_option()
163 sasl->prefmech = SASL_AUTH_DEFAULT; in Curl_sasl_parse_url_auth_option()
167 sasl->prefmech |= mechbit; in Curl_sasl_parse_url_auth_option()
180 void Curl_sasl_init(struct SASL *sasl, const struct SASLproto *params) in Curl_sasl_init() argument
182 sasl->params = params; /* Set protocol dependent parameters */ in Curl_sasl_init()
183 sasl->state = SASL_STOP; /* Not yet running */ in Curl_sasl_init()
184 sasl->authmechs = SASL_AUTH_NONE; /* No known authentication mechanism yet */ in Curl_sasl_init()
185 sasl->prefmech = SASL_AUTH_DEFAULT; /* Prefer all mechanisms */ in Curl_sasl_init()
186 sasl->authused = SASL_AUTH_NONE; /* No the authentication mechanism used */ in Curl_sasl_init()
187 sasl->resetprefs = TRUE; /* Reset prefmech upon AUTH parsing. */ in Curl_sasl_init()
188 sasl->mutual_auth = FALSE; /* No mutual authentication (GSSAPI only) */ in Curl_sasl_init()
189 sasl->force_ir = FALSE; /* Respect external option */ in Curl_sasl_init()
197 static void state(struct SASL *sasl, struct connectdata *conn, in state() argument
223 if(sasl->state != newstate) in state()
225 (void *)sasl, names[sasl->state], names[newstate]); in state()
230 sasl->state = newstate; in state()
238 bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn) in Curl_sasl_can_authenticate() argument
245 if(sasl->authmechs & sasl->prefmech & SASL_MECH_EXTERNAL) in Curl_sasl_can_authenticate()
256 CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn, in Curl_sasl_start() argument
270 sasl->params->service; in Curl_sasl_start()
273 sasl->force_ir = force_ir; /* Latch for future use */ in Curl_sasl_start()
274 sasl->authused = 0; /* No mechanism used yet */ in Curl_sasl_start()
275 enabledmechs = sasl->authmechs & sasl->prefmech; in Curl_sasl_start()
283 sasl->authused = SASL_MECH_EXTERNAL; in Curl_sasl_start()
292 sasl->mutual_auth = FALSE; /* TODO: Calculate mutual authentication */ in Curl_sasl_start()
296 sasl->authused = SASL_MECH_GSSAPI; in Curl_sasl_start()
304 sasl->mutual_auth, in Curl_sasl_start()
314 sasl->authused = SASL_MECH_DIGEST_MD5; in Curl_sasl_start()
319 sasl->authused = SASL_MECH_CRAM_MD5; in Curl_sasl_start()
328 sasl->authused = SASL_MECH_NTLM; in Curl_sasl_start()
340 sasl->authused = SASL_MECH_OAUTHBEARER; in Curl_sasl_start()
352 sasl->authused = SASL_MECH_XOAUTH2; in Curl_sasl_start()
364 sasl->authused = SASL_MECH_LOGIN; in Curl_sasl_start()
372 sasl->authused = SASL_MECH_PLAIN; in Curl_sasl_start()
381 if(resp && sasl->params->maxirlen && in Curl_sasl_start()
382 strlen(mech) + len > sasl->params->maxirlen) { in Curl_sasl_start()
387 result = sasl->params->sendauth(conn, mech, resp); in Curl_sasl_start()
390 state(sasl, conn, resp ? state2 : state1); in Curl_sasl_start()
404 CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn, in Curl_sasl_continue() argument
419 sasl->params->service; in Curl_sasl_continue()
425 if(sasl->state == SASL_FINAL) { in Curl_sasl_continue()
426 if(code != sasl->params->finalcode) in Curl_sasl_continue()
429 state(sasl, conn, SASL_STOP); in Curl_sasl_continue()
433 if(sasl->state != SASL_CANCEL && sasl->state != SASL_OAUTH2_RESP && in Curl_sasl_continue()
434 code != sasl->params->contcode) { in Curl_sasl_continue()
436 state(sasl, conn, SASL_STOP); in Curl_sasl_continue()
440 switch(sasl->state) { in Curl_sasl_continue()
462 sasl->params->getmessage(data->state.buffer, &serverdata); in Curl_sasl_continue()
470 sasl->params->getmessage(data->state.buffer, &serverdata); in Curl_sasl_continue()
493 sasl->params->getmessage(data->state.buffer, &serverdata); in Curl_sasl_continue()
509 sasl->mutual_auth, NULL, in Curl_sasl_continue()
515 sasl->params->getmessage(data->state.buffer, &serverdata); in Curl_sasl_continue()
516 if(sasl->mutual_auth) { in Curl_sasl_continue()
521 sasl->mutual_auth, in Curl_sasl_continue()
533 sasl->params->getmessage(data->state.buffer, &serverdata); in Curl_sasl_continue()
543 if(sasl->authused == SASL_MECH_OAUTHBEARER) { in Curl_sasl_continue()
562 if(code == sasl->params->finalcode) { in Curl_sasl_continue()
565 state(sasl, conn, SASL_STOP); in Curl_sasl_continue()
568 else if(code == sasl->params->contcode) { in Curl_sasl_continue()
578 state(sasl, conn, SASL_STOP); in Curl_sasl_continue()
584 sasl->authmechs ^= sasl->authused; in Curl_sasl_continue()
587 result = Curl_sasl_start(sasl, conn, sasl->force_ir, progress); in Curl_sasl_continue()
588 newstate = sasl->state; /* Use state from Curl_sasl_start() */ in Curl_sasl_continue()
599 result = sasl->params->sendcont(conn, "*"); in Curl_sasl_continue()
604 result = sasl->params->sendcont(conn, resp); in Curl_sasl_continue()
614 state(sasl, conn, newstate); in Curl_sasl_continue()