Lines Matching +full:cancel +full:- +full:in +full:- +full:progress
10 * This software is licensed as described in the file COPYING, which
21 * SPDX-License-Identifier: curl
23 * RFC2195 CRAM-MD5 authentication
25 * RFC2831 DIGEST-MD5 authentication
28 * RFC5802 SCRAM-SHA-1 authentication
29 * RFC7677 SCRAM-SHA-256 authentication
32 * Draft LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
55 /* The last 3 #include files should be in this order */
68 { "CRAM-MD5", 8, SASL_MECH_CRAM_MD5 },
69 { "DIGEST-MD5", 10, SASL_MECH_DIGEST_MD5 },
75 { "SCRAM-SHA-1", 11, SASL_MECH_SCRAM_SHA_1 },
76 { "SCRAM-SHA-256",13, SASL_MECH_SCRAM_SHA_256 },
88 * conn [in] - The connection data.
89 * authused [in] - The authentication mechanism used.
99 Curl_auth_cleanup_gssapi(&conn->krb5); in Curl_sasl_cleanup()
106 Curl_auth_gsasl_cleanup(&conn->gsasl); in Curl_sasl_cleanup()
113 Curl_auth_cleanup_ntlm(&conn->ntlm); in Curl_sasl_cleanup()
125 * ptr [in] - The mechanism string.
126 * maxlen [in] - Maximum mechanism string length.
127 * len [out] - If not NULL, effective name length.
147 if(!ISUPPER(c) && !ISDIGIT(c) && c != '-' && c != '_') in Curl_sasl_decode_mech()
169 if(sasl->resetprefs) { in Curl_sasl_parse_url_auth_option()
170 sasl->resetprefs = FALSE; in Curl_sasl_parse_url_auth_option()
171 sasl->prefmech = SASL_AUTH_NONE; in Curl_sasl_parse_url_auth_option()
175 sasl->prefmech = SASL_AUTH_DEFAULT; in Curl_sasl_parse_url_auth_option()
179 sasl->prefmech |= mechbit; in Curl_sasl_parse_url_auth_option()
195 unsigned long auth = data->set.httpauth; in Curl_sasl_init()
197 sasl->params = params; /* Set protocol dependent parameters */ in Curl_sasl_init()
198 sasl->state = SASL_STOP; /* Not yet running */ in Curl_sasl_init()
199 sasl->curmech = NULL; /* No mechanism yet. */ in Curl_sasl_init()
200 sasl->authmechs = SASL_AUTH_NONE; /* No known authentication mechanism yet */ in Curl_sasl_init()
201 sasl->prefmech = params->defmechs; /* Default preferred mechanisms */ in Curl_sasl_init()
202 sasl->authused = SASL_AUTH_NONE; /* The authentication mechanism used */ in Curl_sasl_init()
203 sasl->resetprefs = TRUE; /* Reset prefmech upon AUTH parsing. */ in Curl_sasl_init()
204 sasl->mutual_auth = FALSE; /* No mutual authentication (GSSAPI only) */ in Curl_sasl_init()
205 sasl->force_ir = FALSE; /* Respect external option */ in Curl_sasl_init()
224 sasl->prefmech = mechs; in Curl_sasl_init()
255 "CANCEL", in sasl_state()
260 if(sasl->state != newstate) in sasl_state()
262 (void *)sasl, names[sasl->state], names[newstate]); in sasl_state()
267 sasl->state = newstate; in sasl_state()
278 result = sasl->params->getmessage(data, out); in get_server_message()
279 if(!result && (sasl->params->flags & SASL_FLAG_BASE64)) { in get_server_message()
301 if(sasl->params->flags & SASL_FLAG_BASE64) { in build_message()
328 if(data->state.aptr.user) in Curl_sasl_can_authenticate()
332 if(sasl->authmechs & sasl->prefmech & SASL_MECH_EXTERNAL) in Curl_sasl_can_authenticate()
344 bool force_ir, saslprogress *progress) in Curl_sasl_start() argument
347 struct connectdata *conn = data->conn; in Curl_sasl_start()
356 const char *service = data->set.str[STRING_SERVICE_NAME] ? in Curl_sasl_start()
357 data->set.str[STRING_SERVICE_NAME] : in Curl_sasl_start()
358 sasl->params->service; in Curl_sasl_start()
360 const char *oauth_bearer = data->set.str[STRING_BEARER]; in Curl_sasl_start()
366 sasl->force_ir = force_ir; /* Latch for future use */ in Curl_sasl_start()
367 sasl->authused = 0; /* No mechanism used yet */ in Curl_sasl_start()
368 enabledmechs = sasl->authmechs & sasl->prefmech; in Curl_sasl_start()
369 *progress = SASL_IDLE; in Curl_sasl_start()
373 if((enabledmechs & SASL_MECH_EXTERNAL) && !conn->passwd[0]) { in Curl_sasl_start()
376 sasl->authused = SASL_MECH_EXTERNAL; in Curl_sasl_start()
378 if(force_ir || data->set.sasl_ir) in Curl_sasl_start()
379 Curl_auth_create_external_message(conn->user, &resp); in Curl_sasl_start()
381 else if(data->state.aptr.user) { in Curl_sasl_start()
384 Curl_auth_user_contains_domain(conn->user)) { in Curl_sasl_start()
385 sasl->mutual_auth = FALSE; in Curl_sasl_start()
389 sasl->authused = SASL_MECH_GSSAPI; in Curl_sasl_start()
391 if(force_ir || data->set.sasl_ir) in Curl_sasl_start()
392 result = Curl_auth_create_gssapi_user_message(data, conn->user, in Curl_sasl_start()
393 conn->passwd, in Curl_sasl_start()
395 conn->host.name, in Curl_sasl_start()
396 sasl->mutual_auth, in Curl_sasl_start()
397 NULL, &conn->krb5, in Curl_sasl_start()
405 &conn->gsasl)) { in Curl_sasl_start()
407 sasl->authused = SASL_MECH_SCRAM_SHA_256; in Curl_sasl_start()
411 result = Curl_auth_gsasl_start(data, conn->user, in Curl_sasl_start()
412 conn->passwd, &conn->gsasl); in Curl_sasl_start()
413 if(result == CURLE_OK && (force_ir || data->set.sasl_ir)) in Curl_sasl_start()
414 result = Curl_auth_gsasl_token(data, &nullmsg, &conn->gsasl, &resp); in Curl_sasl_start()
418 &conn->gsasl)) { in Curl_sasl_start()
420 sasl->authused = SASL_MECH_SCRAM_SHA_1; in Curl_sasl_start()
424 result = Curl_auth_gsasl_start(data, conn->user, in Curl_sasl_start()
425 conn->passwd, &conn->gsasl); in Curl_sasl_start()
426 if(result == CURLE_OK && (force_ir || data->set.sasl_ir)) in Curl_sasl_start()
427 result = Curl_auth_gsasl_token(data, &nullmsg, &conn->gsasl, &resp); in Curl_sasl_start()
436 sasl->authused = SASL_MECH_DIGEST_MD5; in Curl_sasl_start()
441 sasl->authused = SASL_MECH_CRAM_MD5; in Curl_sasl_start()
450 sasl->authused = SASL_MECH_NTLM; in Curl_sasl_start()
452 if(force_ir || data->set.sasl_ir) in Curl_sasl_start()
454 conn->user, conn->passwd, in Curl_sasl_start()
457 &conn->ntlm, &resp); in Curl_sasl_start()
465 sasl->authused = SASL_MECH_OAUTHBEARER; in Curl_sasl_start()
467 if(force_ir || data->set.sasl_ir) in Curl_sasl_start()
468 result = Curl_auth_create_oauth_bearer_message(conn->user, in Curl_sasl_start()
477 sasl->authused = SASL_MECH_XOAUTH2; in Curl_sasl_start()
479 if(force_ir || data->set.sasl_ir) in Curl_sasl_start()
480 result = Curl_auth_create_xoauth_bearer_message(conn->user, in Curl_sasl_start()
487 sasl->authused = SASL_MECH_PLAIN; in Curl_sasl_start()
489 if(force_ir || data->set.sasl_ir) in Curl_sasl_start()
490 result = Curl_auth_create_plain_message(conn->sasl_authzid, in Curl_sasl_start()
491 conn->user, conn->passwd, in Curl_sasl_start()
498 sasl->authused = SASL_MECH_LOGIN; in Curl_sasl_start()
500 if(force_ir || data->set.sasl_ir) in Curl_sasl_start()
501 Curl_auth_create_login_message(conn->user, &resp); in Curl_sasl_start()
506 sasl->curmech = mech; in Curl_sasl_start()
510 if(sasl->params->maxirlen && in Curl_sasl_start()
511 strlen(mech) + Curl_bufref_len(&resp) > sasl->params->maxirlen) in Curl_sasl_start()
515 result = sasl->params->sendauth(data, mech, &resp); in Curl_sasl_start()
518 *progress = SASL_INPROGRESS; in Curl_sasl_start()
533 int code, saslprogress *progress) in Curl_sasl_continue() argument
536 struct connectdata *conn = data->conn; in Curl_sasl_continue()
543 const char *service = data->set.str[STRING_SERVICE_NAME] ? in Curl_sasl_continue()
544 data->set.str[STRING_SERVICE_NAME] : in Curl_sasl_continue()
545 sasl->params->service; in Curl_sasl_continue()
547 const char *oauth_bearer = data->set.str[STRING_BEARER]; in Curl_sasl_continue()
553 *progress = SASL_INPROGRESS; in Curl_sasl_continue()
555 if(sasl->state == SASL_FINAL) { in Curl_sasl_continue()
556 if(code != sasl->params->finalcode) in Curl_sasl_continue()
558 *progress = SASL_DONE; in Curl_sasl_continue()
563 if(sasl->state != SASL_CANCEL && sasl->state != SASL_OAUTH2_RESP && in Curl_sasl_continue()
564 code != sasl->params->contcode) { in Curl_sasl_continue()
565 *progress = SASL_DONE; in Curl_sasl_continue()
570 switch(sasl->state) { in Curl_sasl_continue()
572 *progress = SASL_DONE; in Curl_sasl_continue()
575 result = Curl_auth_create_plain_message(conn->sasl_authzid, in Curl_sasl_continue()
576 conn->user, conn->passwd, &resp); in Curl_sasl_continue()
579 Curl_auth_create_login_message(conn->user, &resp); in Curl_sasl_continue()
583 Curl_auth_create_login_message(conn->passwd, &resp); in Curl_sasl_continue()
586 Curl_auth_create_external_message(conn->user, &resp); in Curl_sasl_continue()
592 result = Curl_auth_gsasl_token(data, &serverdata, &conn->gsasl, &resp); in Curl_sasl_continue()
601 result = Curl_auth_create_cram_md5_message(&serverdata, conn->user, in Curl_sasl_continue()
602 conn->passwd, &resp); in Curl_sasl_continue()
608 conn->user, conn->passwd, in Curl_sasl_continue()
610 if(!result && (sasl->params->flags & SASL_FLAG_BASE64)) in Curl_sasl_continue()
620 /* Create the type-1 message */ in Curl_sasl_continue()
622 conn->user, conn->passwd, in Curl_sasl_continue()
624 &conn->ntlm, &resp); in Curl_sasl_continue()
628 /* Decode the type-2 message */ in Curl_sasl_continue()
632 &conn->ntlm); in Curl_sasl_continue()
634 result = Curl_auth_create_ntlm_type3_message(data, conn->user, in Curl_sasl_continue()
635 conn->passwd, &conn->ntlm, in Curl_sasl_continue()
642 result = Curl_auth_create_gssapi_user_message(data, conn->user, in Curl_sasl_continue()
643 conn->passwd, in Curl_sasl_continue()
645 conn->host.name, in Curl_sasl_continue()
646 sasl->mutual_auth, NULL, in Curl_sasl_continue()
647 &conn->krb5, in Curl_sasl_continue()
654 if(sasl->mutual_auth) { in Curl_sasl_continue()
659 sasl->mutual_auth, in Curl_sasl_continue()
661 &conn->krb5, in Curl_sasl_continue()
668 conn->sasl_authzid, in Curl_sasl_continue()
670 &conn->krb5, in Curl_sasl_continue()
679 conn->sasl_authzid, in Curl_sasl_continue()
681 &conn->krb5, in Curl_sasl_continue()
688 if(sasl->authused == SASL_MECH_OAUTHBEARER) { in Curl_sasl_continue()
689 result = Curl_auth_create_oauth_bearer_message(conn->user, in Curl_sasl_continue()
699 result = Curl_auth_create_xoauth_bearer_message(conn->user, in Curl_sasl_continue()
706 if(code == sasl->params->finalcode) { in Curl_sasl_continue()
708 *progress = SASL_DONE; in Curl_sasl_continue()
712 else if(code == sasl->params->contcode) { in Curl_sasl_continue()
718 *progress = SASL_DONE; in Curl_sasl_continue()
725 sasl->authmechs ^= sasl->authused; in Curl_sasl_continue()
728 return Curl_sasl_start(sasl, data, sasl->force_ir, progress); in Curl_sasl_continue()
739 /* Cancel dialog */ in Curl_sasl_continue()
740 result = sasl->params->cancelauth(data, sasl->curmech); in Curl_sasl_continue()
746 result = sasl->params->contauth(data, sasl->curmech, &resp); in Curl_sasl_continue()
750 *progress = SASL_DONE; in Curl_sasl_continue()