Changeset 409:c2fb5b26bfcb in freeDiameter for extensions/app_sip/md5.c
- Timestamp:
- Jul 8, 2010, 4:19:28 PM (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/app_sip/md5.c
r360 r409 53 53 54 54 MD5Init(&Md5Ctx); 55 MD5Update(&Md5Ctx, pszUserName, strlen(pszUserName));56 MD5Update(&Md5Ctx, ":", 1);57 MD5Update(&Md5Ctx, pszRealm, strlen(pszRealm));58 MD5Update(&Md5Ctx, ":", 1);59 MD5Update(&Md5Ctx, pszPassword, strlen(pszPassword));60 MD5Final( HA1, &Md5Ctx);55 MD5Update(&Md5Ctx, (const unsigned char *)pszUserName, strlen(pszUserName)); 56 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 57 MD5Update(&Md5Ctx, (const unsigned char *)pszRealm, strlen(pszRealm)); 58 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 59 MD5Update(&Md5Ctx, (const unsigned char *)pszPassword, strlen(pszPassword)); 60 MD5Final((unsigned char *)HA1, &Md5Ctx); 61 61 if (strcmp(pszAlg, "md5-sess") == 0) { 62 62 MD5Init(&Md5Ctx); 63 MD5Update(&Md5Ctx, HA1, HASHLEN);64 MD5Update(&Md5Ctx, ":", 1);65 MD5Update(&Md5Ctx, pszNonce, strlen(pszNonce));66 MD5Update(&Md5Ctx, ":", 1);67 MD5Update(&Md5Ctx, pszCNonce, strlen(pszCNonce));68 MD5Final( HA1, &Md5Ctx);63 MD5Update(&Md5Ctx, (const unsigned char *)HA1, HASHLEN); 64 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 65 MD5Update(&Md5Ctx, (const unsigned char *)pszNonce, strlen(pszNonce)); 66 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 67 MD5Update(&Md5Ctx, (const unsigned char *)pszCNonce, strlen(pszCNonce)); 68 MD5Final((unsigned char *)HA1, &Md5Ctx); 69 69 } 70 70 CvtHex(HA1, SessionKey); … … 81 81 // calculate H(A2) 82 82 MD5Init(&Md5Ctx); 83 MD5Update(&Md5Ctx, pszMethod, strlen(pszMethod));84 MD5Update(&Md5Ctx, ":", 1);85 MD5Update(&Md5Ctx, pszDigestUri, strlen(pszDigestUri));83 MD5Update(&Md5Ctx, (const unsigned char *)pszMethod, strlen(pszMethod)); 84 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 85 MD5Update(&Md5Ctx, (const unsigned char *)pszDigestUri, strlen(pszDigestUri)); 86 86 if (strcmp(pszQop, "auth-int") == 0) { 87 MD5Update(&Md5Ctx, ":", 1);88 MD5Update(&Md5Ctx, HEntity, HASHHEXLEN);87 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 88 MD5Update(&Md5Ctx, (const unsigned char *)HEntity, HASHHEXLEN); 89 89 } 90 MD5Final( HA2, &Md5Ctx);90 MD5Final((unsigned char *)HA2, &Md5Ctx); 91 91 CvtHex(HA2, HA2Hex); 92 92 93 93 // calculate response 94 94 MD5Init(&Md5Ctx); 95 MD5Update(&Md5Ctx, HA1, HASHHEXLEN);96 MD5Update(&Md5Ctx, ":", 1);97 MD5Update(&Md5Ctx, pszNonce, strlen(pszNonce));98 MD5Update(&Md5Ctx, ":", 1);95 MD5Update(&Md5Ctx, (const unsigned char *)HA1, HASHHEXLEN); 96 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 97 MD5Update(&Md5Ctx,(const unsigned char *) pszNonce, strlen(pszNonce)); 98 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 99 99 if (*pszQop) { 100 MD5Update(&Md5Ctx, pszNonceCount, strlen(pszNonceCount));101 MD5Update(&Md5Ctx, ":", 1);102 MD5Update(&Md5Ctx, pszCNonce, strlen(pszCNonce));103 MD5Update(&Md5Ctx, ":", 1);104 MD5Update(&Md5Ctx, pszQop, strlen(pszQop));105 MD5Update(&Md5Ctx, ":", 1);100 MD5Update(&Md5Ctx, (const unsigned char *)pszNonceCount, strlen(pszNonceCount)); 101 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 102 MD5Update(&Md5Ctx, (const unsigned char *)pszCNonce, strlen(pszCNonce)); 103 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 104 MD5Update(&Md5Ctx, (const unsigned char *)pszQop, strlen(pszQop)); 105 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 106 106 } 107 MD5Update(&Md5Ctx, HA2Hex, HASHHEXLEN);108 MD5Final( RespHash, &Md5Ctx);107 MD5Update(&Md5Ctx, (const unsigned char *)HA2Hex, HASHHEXLEN); 108 MD5Final((unsigned char *)RespHash, &Md5Ctx); 109 109 CvtHex(RespHash, Response); 110 110 } … … 119 119 // calculate H(A2) 120 120 MD5Init(&Md5Ctx); 121 MD5Update(&Md5Ctx, ":", 1);122 MD5Update(&Md5Ctx, pszDigestUri, strlen(pszDigestUri));121 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 122 MD5Update(&Md5Ctx, (const unsigned char *)pszDigestUri, strlen(pszDigestUri)); 123 123 if (strcmp(pszQop, "auth-int") == 0) { 124 MD5Update(&Md5Ctx, ":", 1);125 MD5Update(&Md5Ctx, HEntity, HASHHEXLEN);124 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 125 MD5Update(&Md5Ctx, (const unsigned char *)HEntity, HASHHEXLEN); 126 126 } 127 MD5Final( HA2, &Md5Ctx);127 MD5Final((unsigned char *)HA2, &Md5Ctx); 128 128 CvtHex(HA2, HA2Hex); 129 129 130 130 // calculate response 131 131 MD5Init(&Md5Ctx); 132 MD5Update(&Md5Ctx, HA1, HASHHEXLEN);133 MD5Update(&Md5Ctx, ":", 1);134 MD5Update(&Md5Ctx, pszNonce, strlen(pszNonce));135 MD5Update(&Md5Ctx, ":", 1);132 MD5Update(&Md5Ctx, (const unsigned char *)HA1, HASHHEXLEN); 133 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 134 MD5Update(&Md5Ctx, (const unsigned char *)pszNonce, strlen(pszNonce)); 135 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 136 136 if (*pszQop) { 137 MD5Update(&Md5Ctx, pszNonceCount, strlen(pszNonceCount));138 MD5Update(&Md5Ctx, ":", 1);139 MD5Update(&Md5Ctx, pszCNonce, strlen(pszCNonce));140 MD5Update(&Md5Ctx, ":", 1);141 MD5Update(&Md5Ctx, pszQop, strlen(pszQop));142 MD5Update(&Md5Ctx, ":", 1);137 MD5Update(&Md5Ctx, (const unsigned char *)pszNonceCount, strlen(pszNonceCount)); 138 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 139 MD5Update(&Md5Ctx, (const unsigned char *)pszCNonce, strlen(pszCNonce)); 140 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 141 MD5Update(&Md5Ctx, (const unsigned char *)pszQop, strlen(pszQop)); 142 MD5Update(&Md5Ctx, (const unsigned char *)":", 1); 143 143 } 144 MD5Update(&Md5Ctx, HA2Hex, HASHHEXLEN);145 MD5Final( RespHash, &Md5Ctx);144 MD5Update(&Md5Ctx, (const unsigned char *)HA2Hex, HASHHEXLEN); 145 MD5Final((unsigned char *)RespHash, &Md5Ctx); 146 146 CvtHex(RespHash, Response); 147 147 }
Note: See TracChangeset
for help on using the changeset viewer.