CONST_UCHAR
MD5_UTF8_8859_1(MD5_CTX *ctx, CONST_UCHAR *base, int len)
CONST_UCHAR *scan, *end;
MD5Update(&ctx, (CONST_UCHAR *) user, ulen);
MD5_UTF8_8859_1(&ctx, (CONST_UCHAR *) user, ulen);
MD5Update(&ctx, (CONST_UCHAR *) realm, rlen);
MD5_UTF8_8859_1(&ctx, (CONST_UCHAR *) realm, rlen);
MD5Update(&ctx, (CONST_UCHAR *) pass, passlen);
digest_hash_a1(const digest_attrs_t *attr, CONST_UCHAR *hash_pass,
MD5Update(&ctx, (CONST_UCHAR *) attr->nonce, attr->nlen);
MD5Update(&ctx, (CONST_UCHAR *) attr->cnonce, attr->clen);
CONST_UCHAR *hash_a1, const char *method, int mlen,
CONST_UCHAR *hex_int, char *outresp)
static CONST_UCHAR defncount[] = ":00000001:";
static CONST_UCHAR empty_hex_int[] =
if (mlen) MD5Update(&ctx, (CONST_UCHAR *) method, mlen);
MD5Update(&ctx, (CONST_UCHAR *) attr->uri, attr->urilen);
MD5Update(&ctx, (CONST_UCHAR *) attr->nonce, attr->nlen);
MD5Update(&ctx, (CONST_UCHAR *) attr->ncount, attr->nclen);
MD5Update(&ctx, (CONST_UCHAR *) attr->cnonce, attr->clen);
MD5Update(&ctx, (CONST_UCHAR *) attr->qop, attr->qlen);
CONST_UCHAR *hash_pass, CONST_UCHAR *hash_a1,
static CONST_UCHAR colon[] = ":";