curl: added basic SASL XOAUTH2 support

Added the ability to specify an XOAUTH2 bearer token [RFC6750] via the
--bearer option.

Example usage:
  curl --url "imaps://imap.gmail.com:993/INBOX/;UID=1" --ssl-reqd
  --bearer ya29.AHES6Z...OMfsHYI --user username@example.com
This commit is contained in:
Kyle L. Huff 2013-08-25 13:18:59 -04:00 committed by Steve Holme
parent 84789e12fb
commit e7dcc454c6
4 changed files with 15 additions and 3 deletions

View file

@ -75,6 +75,7 @@ static const struct LongShort aliases[]= {
{"*", "url", TRUE},
{"*a", "random-file", TRUE},
{"*b", "egd-file", TRUE},
{"*B", "bearer", TRUE},
{"*c", "connect-timeout", TRUE},
{"*d", "ciphers", TRUE},
{"*e", "disable-epsv", FALSE},
@ -498,6 +499,9 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
case 'b': /* egd-file */
GetStr(&config->egd_file, nextarg);
break;
case 'B': /* XOAUTH2 Bearer */
GetStr(&config->xoauth2_bearer, nextarg);
break;
case 'c': /* connect-timeout */
err = str2udouble(&config->connecttimeout, nextarg);
if(err)
@ -1632,9 +1636,11 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
/* user:password */
GetStr(&config->userpwd, nextarg);
cleanarg(nextarg);
err = checkpasswd("host", &config->userpwd);
if(err)
return err;
if(!config->xoauth2_bearer) {
err = checkpasswd("host", &config->userpwd);
if(err)
return err;
}
break;
case 'U':
/* Proxy user:password */