34 j = (Bin[i] >> 4) & 0xf;
36 Hex[i * 2] = (j +
'0');
38 Hex[i * 2] = (j +
'a' - 10);
41 Hex[i * 2 + 1] = (j +
'0');
43 Hex[i * 2 + 1] = (j +
'a' - 10);
57 if ((
'0' <= j) && (j <=
'9'))
59 else if ((
'a' <= j) && (j <=
'f'))
61 else if ((
'A' <= j) && (j <=
'F'))
71#if HASHHEXLEN != (2*HASHLEN)
80 for (i = i / 2; i <
HASHLEN; i++) {
90 const char *pszUserName,
92 const char *pszPassword,
94 const char *pszCNonce,
110 if (strcasecmp(pszAlg,
"md5-sess") == 0) {
128 const char *pszNonce,
129 const char *pszNonceCount,
130 const char *pszCNonce,
132 const char *pszMethod,
133 const char *pszDigestUri,
149 if (pszQop && strcasecmp(pszQop,
"auth-int") == 0) {
173 CvtHex(RespHash, Response);
SQUIDCEXTERN void SquidMD5Init(struct SquidMD5Context *context)
SQUIDCEXTERN void SquidMD5Update(struct SquidMD5Context *context, const void *buf, unsigned len)
SQUIDCEXTERN void SquidMD5Final(uint8_t digest[16], struct SquidMD5Context *context)
void DigestCalcHA1(const char *pszAlg, const char *pszUserName, const char *pszRealm, const char *pszPassword, const char *pszNonce, const char *pszCNonce, HASH HA1, HASHHEX SessionKey)
void CvtBin(const HASHHEX Hex, HASH Bin)
void CvtHex(const HASH Bin, HASHHEX Hex)
void DigestCalcResponse(const HASHHEX HA1, const char *pszNonce, const char *pszNonceCount, const char *pszCNonce, const char *pszQop, const char *pszMethod, const char *pszDigestUri, const HASHHEX HEntity, HASHHEX Response)
char HASHHEX[HASHHEXLEN+1]