|
@@ -121,10 +121,10 @@ Proxy-Authenticate: Digest realm="testrealm", nonce="1053604598"
|
|
|
|
|
|
*/
|
|
|
|
|
|
-CURLdigest Curl_input_digest(struct connectdata *conn,
|
|
|
- bool proxy,
|
|
|
- const char *header) /* rest of the *-authenticate:
|
|
|
- header */
|
|
|
+CURLcode Curl_input_digest(struct connectdata *conn,
|
|
|
+ bool proxy,
|
|
|
+ const char *header) /* rest of the *-authenticate:
|
|
|
+ header */
|
|
|
{
|
|
|
char *token = NULL;
|
|
|
char *tmp = NULL;
|
|
@@ -163,7 +163,7 @@ CURLdigest Curl_input_digest(struct connectdata *conn,
|
|
|
if(Curl_raw_equal(value, "nonce")) {
|
|
|
d->nonce = strdup(content);
|
|
|
if(!d->nonce)
|
|
|
- return CURLDIGEST_NOMEM;
|
|
|
+ return CURLE_OUT_OF_MEMORY;
|
|
|
}
|
|
|
else if(Curl_raw_equal(value, "stale")) {
|
|
|
if(Curl_raw_equal(content, "true")) {
|
|
@@ -174,12 +174,12 @@ CURLdigest Curl_input_digest(struct connectdata *conn,
|
|
|
else if(Curl_raw_equal(value, "realm")) {
|
|
|
d->realm = strdup(content);
|
|
|
if(!d->realm)
|
|
|
- return CURLDIGEST_NOMEM;
|
|
|
+ return CURLE_OUT_OF_MEMORY;
|
|
|
}
|
|
|
else if(Curl_raw_equal(value, "opaque")) {
|
|
|
d->opaque = strdup(content);
|
|
|
if(!d->opaque)
|
|
|
- return CURLDIGEST_NOMEM;
|
|
|
+ return CURLE_OUT_OF_MEMORY;
|
|
|
}
|
|
|
else if(Curl_raw_equal(value, "qop")) {
|
|
|
char *tok_buf;
|
|
@@ -187,7 +187,8 @@ CURLdigest Curl_input_digest(struct connectdata *conn,
|
|
|
clone of the buffer since strtok_r() ruins it */
|
|
|
tmp = strdup(content);
|
|
|
if(!tmp)
|
|
|
- return CURLDIGEST_NOMEM;
|
|
|
+ return CURLE_OUT_OF_MEMORY;
|
|
|
+
|
|
|
token = strtok_r(tmp, ",", &tok_buf);
|
|
|
while(token != NULL) {
|
|
|
if(Curl_raw_equal(token, "auth")) {
|
|
@@ -203,24 +204,25 @@ CURLdigest Curl_input_digest(struct connectdata *conn,
|
|
|
if(foundAuth) {
|
|
|
d->qop = strdup("auth");
|
|
|
if(!d->qop)
|
|
|
- return CURLDIGEST_NOMEM;
|
|
|
+ return CURLE_OUT_OF_MEMORY;
|
|
|
}
|
|
|
else if(foundAuthInt) {
|
|
|
d->qop = strdup("auth-int");
|
|
|
if(!d->qop)
|
|
|
- return CURLDIGEST_NOMEM;
|
|
|
+ return CURLE_OUT_OF_MEMORY;
|
|
|
}
|
|
|
}
|
|
|
else if(Curl_raw_equal(value, "algorithm")) {
|
|
|
d->algorithm = strdup(content);
|
|
|
if(!d->algorithm)
|
|
|
- return CURLDIGEST_NOMEM;
|
|
|
+ return CURLE_OUT_OF_MEMORY;
|
|
|
+
|
|
|
if(Curl_raw_equal(content, "MD5-sess"))
|
|
|
d->algo = CURLDIGESTALGO_MD5SESS;
|
|
|
else if(Curl_raw_equal(content, "MD5"))
|
|
|
d->algo = CURLDIGESTALGO_MD5;
|
|
|
else
|
|
|
- return CURLDIGEST_BADALGO;
|
|
|
+ return CURLE_BAD_CONTENT_ENCODING;
|
|
|
}
|
|
|
else {
|
|
|
/* unknown specifier, ignore it! */
|
|
@@ -240,17 +242,17 @@ CURLdigest Curl_input_digest(struct connectdata *conn,
|
|
|
'stale=true'. This means we provided bad credentials in the previous
|
|
|
request */
|
|
|
if(before && !d->stale)
|
|
|
- return CURLDIGEST_BAD;
|
|
|
+ return CURLE_BAD_CONTENT_ENCODING;
|
|
|
|
|
|
/* We got this header without a nonce, that's a bad Digest line! */
|
|
|
if(!d->nonce)
|
|
|
- return CURLDIGEST_BAD;
|
|
|
+ return CURLE_BAD_CONTENT_ENCODING;
|
|
|
}
|
|
|
else
|
|
|
/* else not a digest, get out */
|
|
|
- return CURLDIGEST_NONE;
|
|
|
+ return CURLE_BAD_CONTENT_ENCODING;
|
|
|
|
|
|
- return CURLDIGEST_FINE;
|
|
|
+ return CURLE_OK;
|
|
|
}
|
|
|
|
|
|
/* convert md5 chunk to RFC2617 (section 3.1.3) -suitable ascii string*/
|