83 #if defined(USE_KERBEROS5) 86 Curl_auth_gssapi_cleanup(&conn->krb5);
93 Curl_auth_ntlm_cleanup(&conn->ntlm);
97 #if !defined(USE_KERBEROS5) && !defined(USE_NTLM) 133 return mechtable[
i].bit;
149 unsigned int mechbit;
160 if(!strncmp(value,
"*", len))
164 if(mechbit && mechlen == len)
198 #if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS) 200 static const char *
const names[]={
221 if(sasl->
state != newstate)
222 infof(conn->
data,
"SASL %p state change from %s to %s\n",
223 (
void *)sasl, names[sasl->
state], names[newstate]);
228 sasl->
state = newstate;
259 unsigned int enabledmechs;
260 const char *mech = NULL;
268 #if defined(USE_KERBEROS5) 291 #if defined(USE_KERBEROS5) 301 result = Curl_auth_create_gssapi_user_message(data, conn->
user,
312 #ifndef CURL_DISABLE_CRYPTO_AUTH 327 if((enabledmechs &
SASL_MECH_NTLM) && Curl_auth_is_ntlm_supported()) {
334 result = Curl_auth_create_ntlm_type1_message(data,
336 &conn->ntlm, &resp, &len);
384 if(!result && mech) {
394 state(sasl, conn, resp ? state2 : state1);
418 #if !defined(CURL_DISABLE_CRYPTO_AUTH) 422 #if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) 427 #if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) || \ 450 switch(sasl->
state) {
470 #ifndef CURL_DISABLE_CRYPTO_AUTH 476 conn->
passwd, &resp, &len);
497 result = Curl_auth_create_ntlm_type1_message(data,
499 &conn->ntlm, &resp, &len);
505 result = Curl_auth_decode_ntlm_type2_message(data, serverdata,
508 result = Curl_auth_create_ntlm_type3_message(data, conn->
user,
509 conn->
passwd, &conn->ntlm,
514 #if defined(USE_KERBEROS5) 516 result = Curl_auth_create_gssapi_user_message(data, conn->
user,
530 result = Curl_auth_create_gssapi_user_message(data, NULL, NULL,
533 serverdata, &conn->krb5,
539 result = Curl_auth_create_gssapi_security_message(data, serverdata,
546 result = Curl_auth_create_gssapi_security_message(data, serverdata,
599 newstate = sasl->
state;
602 failf(data,
"Unsupported SASL authentication mechanism");
625 state(sasl, conn, newstate);
#define SASL_MECH_STRING_GSSAPI
void Curl_sasl_cleanup(struct connectdata *conn, unsigned int authused)
#define SASL_MECH_XOAUTH2
#define SASL_MECH_STRING_XOAUTH2
CURLcode Curl_auth_create_login_message(struct Curl_easy *data, const char *valuep, char **outptr, size_t *outlen)
void(* getmessage)(char *buffer, char **outptr)
CURLcode Curl_auth_decode_cram_md5_message(const char *chlg64, char **outptr, size_t *outlen)
UNITTEST_START char * ptr
bool Curl_auth_user_contains_domain(const char *user)
#define SASL_MECH_EXTERNAL
#define SASL_MECH_OAUTHBEARER
CURLcode Curl_auth_create_cram_md5_message(struct Curl_easy *data, const char *chlg, const char *userp, const char *passwdp, char **outptr, size_t *outlen)
static const struct @9 mechtable[]
void Curl_sasl_init(struct SASL *sasl, const struct SASLproto *params)
#define SASL_AUTH_DEFAULT
CURLcode Curl_auth_create_external_message(struct Curl_easy *data, const char *user, char **outptr, size_t *outlen)
CURLcode Curl_auth_create_oauth_bearer_message(struct Curl_easy *data, const char *user, const char *host, const long port, const char *bearer, char **outptr, size_t *outlen)
UNITTEST_START int result
CURLcode Curl_sasl_start(struct SASL *sasl, struct connectdata *conn, bool force_ir, saslprogress *progress)
#define SASL_MECH_STRING_LOGIN
#define SASL_MECH_DIGEST_MD5
struct proxy_info http_proxy
#define SASL_MECH_STRING_DIGEST_MD5
struct connectdata * easy_conn
CURLcode Curl_auth_create_digest_md5_message(struct Curl_easy *data, const char *chlg64, const char *userp, const char *passwdp, const char *service, char **outptr, size_t *outlen)
#define SASL_MECH_STRING_NTLM
#define SASL_MECH_STRING_EXTERNAL
#define SASL_MECH_STRING_CRAM_MD5
CURLcode Curl_sasl_continue(struct SASL *sasl, struct connectdata *conn, int code, saslprogress *progress)
bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn)
unsigned int Curl_sasl_decode_mech(const char *ptr, size_t maxlen, size_t *len)
#define SASL_MECH_STRING_PLAIN
bool Curl_auth_is_digest_supported(void)
static unsigned short port
#define SASL_MECH_CRAM_MD5
CURLcode(* sendauth)(struct connectdata *conn, const char *mech, const char *ir)
const struct SASLproto * params
CURLcode Curl_auth_create_plain_message(struct Curl_easy *data, const char *userp, const char *passwdp, char **outptr, size_t *outlen)
UNITTEST_START int * value
CURLcode Curl_sasl_parse_url_auth_option(struct SASL *sasl, const char *value, size_t len)
#define SASL_MECH_STRING_OAUTHBEARER
CURLcode(* sendcont)(struct connectdata *conn, const char *contauth)
static void state(struct SASL *sasl, struct connectdata *conn, saslstate newstate)