File squid-beta-3.0-md5.patch of Package squid-beta
--- lib/rfc2617.c.orig 2003-11-07 18:23:03.000000000 +0100
+++ lib/rfc2617.c 2006-02-08 20:07:41.000000000 +0100
@@ -108,25 +108,26 @@
)
{
MD5_CTX Md5Ctx;
+ unsigned char colon[]=":";
if (pszUserName) {
MD5Init(&Md5Ctx);
- MD5Update(&Md5Ctx, pszUserName, strlen(pszUserName));
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszRealm, strlen(pszRealm));
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszPassword, strlen(pszPassword));
+ MD5Update(&Md5Ctx, (unsigned char*)pszUserName, strlen(pszUserName));
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszRealm, strlen(pszRealm));
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszPassword, strlen(pszPassword));
MD5Final((unsigned char *) HA1, &Md5Ctx);
}
if (strcasecmp(pszAlg, "md5-sess") == 0) {
HASHHEX HA1Hex;
CvtHex(HA1, HA1Hex); /* RFC2617 errata */
MD5Init(&Md5Ctx);
- MD5Update(&Md5Ctx, HA1Hex, HASHHEXLEN);
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszNonce, strlen(pszNonce));
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszCNonce, strlen(pszCNonce));
+ MD5Update(&Md5Ctx, (unsigned char*)HA1Hex, HASHHEXLEN);
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszNonce, strlen(pszNonce));
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszCNonce, strlen(pszCNonce));
MD5Final((unsigned char *) HA1, &Md5Ctx);
}
CvtHex(HA1, SessionKey);
@@ -150,16 +151,17 @@
HASH HA2;
HASH RespHash;
HASHHEX HA2Hex;
+ unsigned char colon[] = ":";
/* calculate H(A2)
*/
MD5Init(&Md5Ctx);
- MD5Update(&Md5Ctx, pszMethod, strlen(pszMethod));
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszDigestUri, strlen(pszDigestUri));
+ MD5Update(&Md5Ctx, (unsigned char*)pszMethod, strlen(pszMethod));
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszDigestUri, strlen(pszDigestUri));
if (strcasecmp(pszQop, "auth-int") == 0) {
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, HEntity, HASHHEXLEN);
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)HEntity, HASHHEXLEN);
}
MD5Final((unsigned char *) HA2, &Md5Ctx);
CvtHex(HA2, HA2Hex);
@@ -167,19 +169,19 @@
/* calculate response
*/
MD5Init(&Md5Ctx);
- MD5Update(&Md5Ctx, HA1, HASHHEXLEN);
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszNonce, strlen(pszNonce));
- MD5Update(&Md5Ctx, ":", 1);
+ MD5Update(&Md5Ctx, (unsigned char*)HA1, HASHHEXLEN);
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszNonce, strlen(pszNonce));
+ MD5Update(&Md5Ctx, colon, 1);
if (*pszQop) {
- MD5Update(&Md5Ctx, pszNonceCount, strlen(pszNonceCount));
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszCNonce, strlen(pszCNonce));
- MD5Update(&Md5Ctx, ":", 1);
- MD5Update(&Md5Ctx, pszQop, strlen(pszQop));
- MD5Update(&Md5Ctx, ":", 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszNonceCount, strlen(pszNonceCount));
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszCNonce, strlen(pszCNonce));
+ MD5Update(&Md5Ctx, colon, 1);
+ MD5Update(&Md5Ctx, (unsigned char*)pszQop, strlen(pszQop));
+ MD5Update(&Md5Ctx, colon, 1);
}
- MD5Update(&Md5Ctx, HA2Hex, HASHHEXLEN);
+ MD5Update(&Md5Ctx, (unsigned char*)HA2Hex, HASHHEXLEN);
MD5Final((unsigned char *) RespHash, &Md5Ctx);
CvtHex(RespHash, Response);
}