Lines Matching refs:digest

35 #include "vauth/digest.h"
345 unsigned char digest[MD5_DIGEST_LEN];
402 Curl_MD5_final(ctxt, digest);
408 Curl_MD5_update(ctxt, (const unsigned char *) digest, MD5_DIGEST_LEN);
415 Curl_MD5_final(ctxt, digest);
419 msnprintf(&HA1_hex[2 * i], 3, "%02x", digest[i]);
439 Curl_MD5_final(ctxt, digest);
442 msnprintf(&HA2_hex[2 * i], 3, "%02x", digest[i]);
469 Curl_MD5_final(ctxt, digest);
472 msnprintf(&resp_hash_hex[2 * i], 3, "%02x", digest[i]);
476 "cnonce=\"%s\",nc=\"%s\",digest-uri=\"%s\",response=%s,"
498 * digest [in/out] - The digest data struct being used and modified.
503 struct digestdata *digest)
512 if(digest->nonce)
516 Curl_auth_digest_cleanup(digest);
529 free(digest->nonce);
530 digest->nonce = strdup(content);
531 if(!digest->nonce)
536 digest->stale = TRUE;
537 digest->nc = 1; /* we make a new nonce now */
541 free(digest->realm);
542 digest->realm = strdup(content);
543 if(!digest->realm)
547 free(digest->opaque);
548 digest->opaque = strdup(content);
549 if(!digest->opaque)
578 free(digest->qop);
579 digest->qop = strdup(DIGEST_QOP_VALUE_STRING_AUTH);
580 if(!digest->qop)
584 free(digest->qop);
585 digest->qop = strdup(DIGEST_QOP_VALUE_STRING_AUTH_INT);
586 if(!digest->qop)
591 free(digest->algorithm);
592 digest->algorithm = strdup(content);
593 if(!digest->algorithm)
597 digest->algo = ALGO_MD5SESS;
599 digest->algo = ALGO_MD5;
601 digest->algo = ALGO_SHA256;
603 digest->algo = ALGO_SHA256SESS;
605 digest->algo = ALGO_SHA512_256;
607 digest->algo = ALGO_SHA512_256SESS;
613 digest->userhash = TRUE;
635 if(before && !digest->stale)
639 if(!digest->nonce)
643 if(!digest->qop && (digest->algo & SESSION_ALGO))
662 * digest [in/out] - The digest data struct being used and modified.
675 struct digestdata *digest,
697 if(!digest->nc)
698 digest->nc = 1;
700 if(!digest->cnonce) {
712 digest->cnonce = cnonce;
715 if(digest->userhash) {
716 hashthis = aprintf("%s:%s", userp, digest->realm ? digest->realm : "");
736 hashthis = aprintf("%s:%s:%s", userp, digest->realm ? digest->realm : "",
745 if(digest->algo & SESSION_ALGO) {
747 tmp = aprintf("%s:%s:%s", ha1, digest->nonce, digest->cnonce);
759 A2 = Method ":" digest-uri-value
763 A2 = Method ":" digest-uri-value ":" H(entity-body)
773 if(digest->qop && strcasecompare(digest->qop, "auth-int")) {
793 if(digest->qop) {
794 hashthis = aprintf("%s:%s:%08x:%s:%s:%s", ha1, digest->nonce, digest->nc,
795 digest->cnonce, digest->qop, ha2);
798 hashthis = aprintf("%s:%s:%s", ha1, digest->nonce, ha2);
821 userp_quoted = auth_digest_string_quoted(digest->userhash ? userh : userp);
824 if(digest->realm)
825 realm_quoted = auth_digest_string_quoted(digest->realm);
835 nonce_quoted = auth_digest_string_quoted(digest->nonce);
842 if(digest->qop) {
855 digest->cnonce,
856 digest->nc,
857 digest->qop,
861 digest->nc++;
882 if(digest->opaque) {
885 opaque_quoted = auth_digest_string_quoted(digest->opaque);
899 if(digest->algorithm) {
901 tmp = aprintf("%s, algorithm=%s", response, digest->algorithm);
909 if(digest->userhash) {
939 * digest [in/out] - The digest data struct being used and modified.
951 struct digestdata *digest,
954 if(digest->algo <= ALGO_MD5SESS)
956 request, uripath, digest,
960 DEBUGASSERT(digest->algo <= ALGO_SHA512_256SESS);
962 request, uripath, digest,
971 * This is used to clean up the digest specific data.
975 * digest [in/out] - The digest data struct being cleaned up.
978 void Curl_auth_digest_cleanup(struct digestdata *digest)
980 Curl_safefree(digest->nonce);
981 Curl_safefree(digest->cnonce);
982 Curl_safefree(digest->realm);
983 Curl_safefree(digest->opaque);
984 Curl_safefree(digest->qop);
985 Curl_safefree(digest->algorithm);
987 digest->nc = 0;
988 digest->algo = ALGO_MD5; /* default algorithm */
989 digest->stale = FALSE; /* default means normal, not stale */
990 digest->userhash = FALSE;