summaryrefslogtreecommitdiff
path: root/lib/HttpServ.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/HttpServ.cc')
-rw-r--r--lib/HttpServ.cc25
1 files changed, 7 insertions, 18 deletions
diff --git a/lib/HttpServ.cc b/lib/HttpServ.cc
index ff61f1b..23f45d4 100644
--- a/lib/HttpServ.cc
+++ b/lib/HttpServ.cc
@@ -17,9 +17,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* $Id: HttpServ.cc,v 1.57 2007-09-28 09:07:13 pixel Exp $ */
+/* $Id: HttpServ.cc,v 1.58 2007-09-28 09:23:36 pixel Exp $ */
-#include "sha1.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -33,6 +32,7 @@
#include "Task.h"
#include "Base64.h"
#include "Domain.h"
+#include "HashFunction.h"
#include "gettext.h"
String endhl = "\r\n", endnl = "\n";
@@ -672,24 +672,13 @@ void HttpResponse::PrepareResponse(Handle * b) {
break;
case HTTP_401_UNAUTHORIZED:
if (domain != "") {
- String to_digest;
- sha1_context sha1;
- static const char hconv[] = "0123456789ABCDEF";
- Uint8 sha1sum[20];
- char sha1sum_r[41];
- int i;
+ SHA1 h;
+ String digest;
- to_digest = location + ":" + ((Uint64) time(0)) + ":" + domain + ":" + rand();
- sha1_starts(&sha1);
- sha1_update(&sha1, (const unsigned char *) to_digest.to_charp(), to_digest.strlen());
- sha1_finish(&sha1, sha1sum);
+ h.Update(location + ":" + ((Uint64) time(0)) + ":" + domain + ":" + rand());
+ digest = h.Finish();
- for (i = 0; i < 20; i++) {
- sha1sum_r[i * 2 + 0] = hconv[sha1sum[i] >> 4];
- sha1sum_r[i * 2 + 1] = hconv[sha1sum[i] % 16];
- }
- sha1sum_r[40] = 0;
- (*b) << "WWW-Authenticate: Digest realm=\"" << location << "\", domain=\"" << domain << "\", nonce=\"" << sha1sum_r << "\", algorithm=\"MD5\", qop=\"auth\"\r\n";
+ (*b) << "WWW-Authenticate: Digest realm=\"" << location << "\", domain=\"" << domain << "\", nonce=\"" << digest << "\", algorithm=\"MD5\", qop=\"auth\"\r\n";
} else {
(*b) << "WWW-Authenticate: Basic realm=\"" << location << "\"\r\n";
}