fielding 99/08/14 01:35:55
Modified: src ApacheCore.def ApacheCoreOS2.def CHANGES
Configuration.tmpl
src/ap ap_base64.c ap_checkpass.c ap_md5c.c ap_sha1.c
src/include ap_md5.h ap_sha1.h httpd.h
src/main http_protocol.c util.c
src/modules/experimental mod_auth_digest.c
src/modules/proxy proxy_ftp.c
src/modules/standard mod_unique_id.c
src/support httpd.exp
Log:
Clean up the base64 and SHA1 additions and make sure they are
represented in the ApacheCore.def, ApacheCoreOS2.def, and httpd.exp
files.
I am very unhappy with the implementation assumptions between
ap_validate_password and the various encoding routines, like the
length of an encoded password never being greater than 120 characters,
but I have no time to fix them right now. Not to mention all the other
usages of magic numbers with no explanation. Yuck.
Revision Changes Path
1.19 +17 -3 apache-1.3/src/ApacheCore.def
Index: ApacheCore.def
===================================================================
RCS file: /home/cvs/apache-1.3/src/ApacheCore.def,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- ApacheCore.def 1999/08/09 15:31:08 1.18
+++ ApacheCore.def 1999/08/14 08:35:42 1.19
@@ -343,6 +343,20 @@
ap_standalone @337
ap_server_confname @338
ap_sub_req_method_uri @339
- ap_sha1_base64 @340
- ap_puudecode @341
- ap_puuencode @342
+ ap_regerror @341
+ ap_regexec @342
+ ap_field_noparam @343
+ ap_pbase64decode @344
+ ap_pbase64encode @345
+ ap_base64encode @346
+ ap_base64encode_binary @347
+ ap_base64encode_len @348
+ ap_base64decode @349
+ ap_base64decode_binary @350
+ ap_base64decode_len @351
+ ap_SHA1Init @352
+ ap_SHA1Update_binary @353
+ ap_SHA1Update @354
+ ap_SHA1Final @355
+ ap_sha1_base64 @356
+
1.5 +16 -5 apache-1.3/src/ApacheCoreOS2.def
Index: ApacheCoreOS2.def
===================================================================
RCS file: /home/cvs/apache-1.3/src/ApacheCoreOS2.def,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ApacheCoreOS2.def 1999/08/10 16:12:20 1.4
+++ ApacheCoreOS2.def 1999/08/14 08:35:42 1.5
@@ -268,7 +268,7 @@
; os_stat @261
; readdir @262
regcomp @263
- ap_regexec @264
+ regexec @264
regfree @265
; access_module @266
; alias_module @267
@@ -349,7 +349,18 @@
ap_dummy_mutex @343
ap_signal @344
ap_regerror @345
- ap_puudecode @346
- ap_puuencode @347
- ap_sha1_base64 @348
- ap_field_noparam @349
+ ap_regexec @346
+ ap_field_noparam @347
+ ap_pbase64decode @348
+ ap_pbase64encode @349
+ ap_base64encode @350
+ ap_base64encode_binary @351
+ ap_base64encode_len @352
+ ap_base64decode @353
+ ap_base64decode_binary @354
+ ap_base64decode_len @355
+ ap_SHA1Init @356
+ ap_SHA1Update_binary @357
+ ap_SHA1Update @358
+ ap_SHA1Final @359
+ ap_sha1_base64 @360
1.1421 +12 -4 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1420
retrieving revision 1.1421
diff -u -r1.1420 -r1.1421
--- CHANGES 1999/08/14 01:24:29 1.1420
+++ CHANGES 1999/08/14 08:35:43 1.1421
@@ -1,5 +1,9 @@
Changes with Apache 1.3.9
+ *) Don't allow configure to include mod_auth_digest unless it is
+ explicitly requested, even if the user asked for all modules.
+ [Roy Fielding]
+
*) Translate module names to dll names for OS/2 so that they are no more
than 8 characters long and have an extension of "dll" instead of "so".
[Brian Havard]
@@ -25,12 +29,16 @@
problem observed by some Win95/98 users where they get CGI script
output sent to the console. [Bill Stoddard]
- *) Roll back (re)naming in the uuencode/decode section. The ap/ap_
+ *) Fix (re)naming in the uuencode/decode section. The ap/ap_
routines are now called ap_base64* and are 'plain' (i.e., no
- pool access or anything clever). Inside apache the routines
- acting like pstrdup are called ap_puuencode() and ap_puudecode().
- The oddly named ap_uuencode(), ap_uudecode() is kept around for
+ pool access or anything clever). Inside util.c the routines acting
+ like pstrdup are called ap_pbase64encode() and ap_pbase64decode().
+ The oddly named ap_uuencode(), ap_uudecode() are kept around for
now but deprecated. [dirkx]
+
+ *) Clean up the base64 and SHA1 additions and make sure they are
+ represented in the ApacheCore.def, ApacheCoreOS2.def, and httpd.exp
+ files. [Roy Fielding]
*) WIN32: Migrate to InstallShield 5.5 and provide a bit more error
checking. Allow compiling on VS 6.0. [Randy Terbush]
1.121 +13 -7 apache-1.3/src/Configuration.tmpl
Index: Configuration.tmpl
===================================================================
RCS file: /home/cvs/apache-1.3/src/Configuration.tmpl,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -r1.120 -r1.121
--- Configuration.tmpl 1999/08/09 06:25:24 1.120
+++ Configuration.tmpl 1999/08/14 08:35:43 1.121
@@ -322,13 +322,6 @@
AddModule modules/standard/mod_userdir.o
-## The proxy module enables the server to act as a proxy for outside
-## http and ftp services. It's not as complete as it could be yet.
-## NOTE: You do not want this module UNLESS you are running a proxy;
-## it is not needed for normal (origin server) operation.
-
-# AddModule modules/proxy/libproxy.a
-
## The Alias module provides simple URL translation and redirection.
AddModule modules/standard/mod_alias.o
@@ -372,8 +365,21 @@
## truerand library (available for example from
## ftp://research.att.com/dist/mab/librand.shar) - see the Rule
## DEV_RANDOM above for more info.
+##
+## Must be added above (run later than) the proxy module because the
+## WWW-Authenticate and Proxy-Authenticate headers are parsed in the
+## post-read-request phase and it needs to know if this is a proxy request.
# AddModule modules/experimental/mod_auth_digest.o
+
+## Optional Proxy
+##
+## The proxy module enables the server to act as a proxy for outside
+## http and ftp services. It's not as complete as it could be yet.
+## NOTE: You do not want this module UNLESS you are running a proxy;
+## it is not needed for normal (origin server) operation.
+
+# AddModule modules/proxy/libproxy.a
## Optional response header manipulation modules.
##
1.4 +34 -27 apache-1.3/src/ap/ap_base64.c
Index: ap_base64.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/ap/ap_base64.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ap_base64.c 1999/08/12 18:06:17 1.3
+++ ap_base64.c 1999/08/14 08:35:45 1.4
@@ -57,8 +57,8 @@
/* base64 encoder/decoder. Originally part of main/util.c
* but moved here so that support/ab and ap_sha1.c could
- * use it. This mean (re)moving the ap_palloc()s. And adding
- * ugly 'len' functions. Which is quite a nasty cost.
+ * use it. This meant removing the ap_palloc()s and adding
+ * ugly 'len' functions, which is quite a nasty cost.
*/
#include <string.h>
@@ -75,20 +75,21 @@
{
#ifndef CHARSET_EBCDIC
/* ASCII table */
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, 64, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 64, 64, 64, 64, 64, 64, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,
+ 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64,
+ 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64
#else /*CHARSET_EBCDIC*/
/* EBCDIC table */
@@ -107,7 +108,7 @@
64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 64, 64, 64, 64, 64, 64,
64, 9, 10, 11, 12, 13, 14, 15, 16, 17, 64, 64, 64, 64, 64, 64,
64, 64, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, 64,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64
#endif /*CHARSET_EBCDIC*/
};
@@ -135,7 +136,7 @@
len = ap_base64decode_binary((unsigned char *) bufplain, bufcoded);
#ifdef CHARSET_EBCDIC
- for (i=0; i<len; i++)
+ for (i = 0; i < len; i++)
bufplain[i] = os_toebcdic[bufplain[i]];
#endif /* CHARSET_EBCDIC */
return len;
@@ -191,7 +192,7 @@
}
static const char basis_64[] =
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
API_EXPORT(int) ap_base64encode_len(int len)
{
@@ -209,8 +210,10 @@
p = encoded;
for (i = 0; i < len - 2; i += 3) {
*p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F];
- *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int)
(os_toascii[string[i + 1]] & 0xF0) >> 4)];
- *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2) | ((int)
(os_toascii[string[i + 2]] & 0xC0) >> 6)];
+ *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) |
+ ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)];
+ *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2) |
+ ((int) (os_toascii[string[i + 2]] & 0xC0) >> 6)];
*p++ = basis_64[os_toascii[string[i + 2]] & 0x3F];
}
if (i < len) {
@@ -220,7 +223,8 @@
*p++ = '=';
}
else {
- *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | ((int)
(os_toascii[string[i + 1]] & 0xF0) >> 4)];
+ *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) |
+ ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)];
*p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2)];
}
*p++ = '=';
@@ -234,8 +238,8 @@
/* This is the same as ap_base64encode() except on EBCDIC machines, where
* the conversion of the input to ascii is left out.
*/
-API_EXPORT(int) ap_base64encode_binary(char *encoded, const unsigned char
*string,
- int len)
+API_EXPORT(int) ap_base64encode_binary(char *encoded,
+ const unsigned char *string, int len)
{
int i;
char *p;
@@ -243,8 +247,10 @@
p = encoded;
for (i = 0; i < len - 2; i += 3) {
*p++ = basis_64[(string[i] >> 2) & 0x3F];
- *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] &
0xF0) >> 4)];
- *p++ = basis_64[((string[i + 1] & 0xF) << 2) | ((int) (string[i + 2] &
0xC0) >> 6)];
+ *p++ = basis_64[((string[i] & 0x3) << 4) |
+ ((int) (string[i + 1] & 0xF0) >> 4)];
+ *p++ = basis_64[((string[i + 1] & 0xF) << 2) |
+ ((int) (string[i + 2] & 0xC0) >> 6)];
*p++ = basis_64[string[i + 2] & 0x3F];
}
if (i < len) {
@@ -254,7 +260,8 @@
*p++ = '=';
}
else {
- *p++ = basis_64[((string[i] & 0x3) << 4) | ((int) (string[i + 1] &
0xF0) >> 4)];
+ *p++ = basis_64[((string[i] & 0x3) << 4) |
+ ((int) (string[i + 1] & 0xF0) >> 4)];
*p++ = basis_64[((string[i + 1] & 0xF) << 2)];
}
*p++ = '=';
1.4 +2 -2 apache-1.3/src/ap/ap_checkpass.c
Index: ap_checkpass.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/ap/ap_checkpass.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ap_checkpass.c 1999/08/08 18:18:12 1.3
+++ ap_checkpass.c 1999/08/14 08:35:45 1.4
@@ -82,14 +82,14 @@
/* FreeBSD style MD5 string
*/
- if (!strncmp(hash, apr1_id, strlen(apr1_id))) {
+ if (strncmp(hash, AP_MD5PW_ID, AP_MD5PW_IDLEN) == 0) {
ap_MD5Encode((const unsigned char *)passwd,
(const unsigned char *)hash, sample, sizeof(sample));
}
/* Netscape / SHA1 ldap style strng
*/
- else if (!strncmp(hash, sha1_id, strlen(sha1_id))) {
+ else if (strncmp(hash, AP_SHA1PW_ID, AP_SHA1PW_IDLEN) == 0) {
ap_sha1_base64(passwd, strlen(passwd), sample);
}
1.29 +7 -12 apache-1.3/src/ap/ap_md5c.c
Index: ap_md5c.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/ap/ap_md5c.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ap_md5c.c 1999/08/02 10:13:44 1.28
+++ ap_md5c.c 1999/08/14 08:35:45 1.29
@@ -412,12 +412,6 @@
}
/*
- * Define the Magic String prefix that identifies a password as being
- * hashed using our algorithm.
- */
-const char *apr1_id = "$apr1$";
-
-/*
* The following MD5 password encryption code was largely borrowed from
* the FreeBSD 3.0 /usr/src/lib/libcrypt/crypt.c file, which is
* licenced as stated at the top of this file.
@@ -463,8 +457,8 @@
/*
* If it starts with the magic string, then skip that.
*/
- if (!strncmp((char *)sp, apr1_id, strlen(apr1_id))) {
- sp += strlen(apr1_id);
+ if (strncmp((char *)sp, AP_MD5PW_ID, AP_MD5PW_IDLEN) == 0) {
+ sp += AP_MD5PW_IDLEN;
}
/*
@@ -493,7 +487,7 @@
/*
* Then our magic string
*/
- ap_MD5Update(&ctx, (const unsigned char *)apr1_id, strlen(apr1_id));
+ ap_MD5Update(&ctx, AP_MD5PW_ID, AP_MD5PW_IDLEN);
/*
* Then the raw salt
@@ -533,9 +527,10 @@
* Now make the output string. We know our limitations, so we
* can use the string routines without bounds checking.
*/
- strcpy(passwd, apr1_id);
- strncat(passwd, (char *)sp, sl);
- strcat(passwd, "$");
+ ap_cpystrn(passwd, AP_MD5PW_ID, AP_MD5PW_IDLEN);
+ ap_cpystrn(passwd + AP_MD5PW_IDLEN, (char *)sp, sl);
+ passwd[AP_MD5PW_IDLEN + sl] = '$';
+ passwd[AP_MD5PW_IDLEN + sl + 1] = '\0';
ap_MD5Final(final, &ctx);
1.9 +8 -14 apache-1.3/src/ap/ap_sha1.c
Index: ap_sha1.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/ap/ap_sha1.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ap_sha1.c 1999/08/12 18:06:18 1.8
+++ ap_sha1.c 1999/08/14 08:35:46 1.9
@@ -118,7 +118,6 @@
E = D; D = C; C = ROT32(B,30); B = A; A = temp
#define SHA_BLOCKSIZE 64
-#define SHA_DIGESTSIZE 20
typedef unsigned char AP_BYTE;
@@ -322,7 +321,8 @@
/* finish computing the SHA digest */
-API_EXPORT(void) ap_SHA1Final(unsigned char digest[20], AP_SHA1_CTX
*sha_info)
+API_EXPORT(void) ap_SHA1Final(unsigned char digest[SHA_DIGESTSIZE],
+ AP_SHA1_CTX *sha_info)
{
int count, i, j;
AP_LONG lo_bit_count, hi_bit_count, k;
@@ -356,19 +356,14 @@
}
-/* {SHA} is the prefix used for base64 encoded sha1 in
- * ldap data interchange format.
- */
-const char *sha1_id = "{SHA}";
-
API_EXPORT(void) ap_sha1_base64(const char *clear, int len, char *out)
{
int l;
AP_SHA1_CTX context;
AP_BYTE digest[SHA_DIGESTSIZE];
- if (!strncmp(clear, sha1_id, strlen(sha1_id))) {
- clear += strlen(sha1_id);
+ if (strncmp(clear, AP_SHA1PW_ID, AP_SHA1PW_IDLEN) == 0) {
+ clear += AP_SHA1PW_IDLEN;
}
ap_SHA1Init(&context);
@@ -376,14 +371,13 @@
ap_SHA1Final(digest, &context);
/* private marker. */
- strcpy(out, sha1_id);
+ ap_cpystrn(out, AP_SHA1PW_ID, AP_SHA1PW_IDLEN);
/* SHA1 hash is always 20 chars */
- l = ap_base64encode_binary(out + strlen(sha1_id), digest,
sizeof(digest));
- out[l + strlen(sha1_id)] = '\0';
+ l = ap_base64encode_binary(out + AP_SHA1PW_IDLEN, digest,
sizeof(digest));
+ out[l + AP_SHA1PW_IDLEN] = '\0';
/*
- * output of MIME Base 64 encoded SHA1 is always 28 characters +
- * strlen(sha1_id)
+ * output of base64 encoded SHA1 is always 28 chars + AP_SHA1PW_IDLEN
*/
}
1.9 +6 -1 apache-1.3/src/include/ap_md5.h
Index: ap_md5.h
===================================================================
RCS file: /home/cvs/apache-1.3/src/include/ap_md5.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ap_md5.h 1999/08/05 20:04:02 1.8
+++ ap_md5.h 1999/08/14 08:35:47 1.9
@@ -104,7 +104,12 @@
unsigned char buffer[64]; /* input buffer */
} AP_MD5_CTX;
-extern const char *apr1_id; /* MD5 passwd marker string */
+/*
+ * Define the Magic String prefix that identifies a password as being
+ * hashed using our algorithm.
+ */
+#define AP_MD5PW_ID "$apr1$"
+#define AP_MD5PW_IDLEN 6
API_EXPORT(void) ap_MD5Init(AP_MD5_CTX *context);
API_EXPORT(void) ap_MD5Update(AP_MD5_CTX *context, const unsigned char
*input,
1.6 +11 -2 apache-1.3/src/include/ap_sha1.h
Index: ap_sha1.h
===================================================================
RCS file: /home/cvs/apache-1.3/src/include/ap_sha1.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ap_sha1.h 1999/08/08 17:58:35 1.5
+++ ap_sha1.h 1999/08/14 08:35:47 1.6
@@ -67,6 +67,15 @@
extern "C" {
#endif
+#define SHA_DIGESTSIZE 20
+
+/*
+ * Define the Magic String prefix that identifies a password as being
+ * hashed using our algorithm.
+ */
+#define AP_SHA1PW_ID "{SHA}"
+#define AP_SHA1PW_IDLEN 5
+
typedef unsigned long AP_LONG; /* a 32-bit quantity */
typedef struct {
@@ -76,7 +85,6 @@
int local; /* unprocessed amount in data */
} AP_SHA1_CTX;
-extern const char *sha1_id; /* passwd prefix marker for SHA1 */
API_EXPORT(void) ap_sha1_base64(const char *clear, int len, char *out);
API_EXPORT(void) ap_SHA1Init(AP_SHA1_CTX *context);
API_EXPORT(void) ap_SHA1Update(AP_SHA1_CTX *context, const char *input,
@@ -84,7 +92,8 @@
API_EXPORT(void) ap_SHA1Update_binary(AP_SHA1_CTX *context,
const unsigned char *input,
unsigned int inputLen);
-API_EXPORT(void) ap_SHA1Final(unsigned char digest[20], AP_SHA1_CTX
*context);
+API_EXPORT(void) ap_SHA1Final(unsigned char digest[SHA_DIGESTSIZE],
+ AP_SHA1_CTX *context);
#ifdef __cplusplus
}
1.293 +3 -3 apache-1.3/src/include/httpd.h
Index: httpd.h
===================================================================
RCS file: /home/cvs/apache-1.3/src/include/httpd.h,v
retrieving revision 1.292
retrieving revision 1.293
diff -u -r1.292 -r1.293
--- httpd.h 1999/08/12 18:06:21 1.292
+++ httpd.h 1999/08/14 08:35:47 1.293
@@ -990,9 +990,9 @@
API_EXPORT(int) ap_is_matchexp(const char *str);
API_EXPORT(int) ap_strcmp_match(const char *str, const char *exp);
API_EXPORT(int) ap_strcasecmp_match(const char *str, const char *exp);
-API_EXPORT(char *) ap_puudecode(pool *, const char *);
-API_EXPORT(char *) ap_puuencode(pool *p, char *string);
-API_EXPORT(char *) ap_uudecode(pool *, const char *);
+API_EXPORT(char *) ap_pbase64decode(pool *p, const char *bufcoded);
+API_EXPORT(char *) ap_pbase64encode(pool *p, char *string);
+API_EXPORT(char *) ap_uudecode(pool *p, const char *bufcoded);
API_EXPORT(char *) ap_uuencode(pool *p, char *string);
#ifdef OS2
1.278 +1 -1 apache-1.3/src/main/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/http_protocol.c,v
retrieving revision 1.277
retrieving revision 1.278
diff -u -r1.277 -r1.278
--- http_protocol.c 1999/08/09 09:41:39 1.277
+++ http_protocol.c 1999/08/14 08:35:48 1.278
@@ -1152,7 +1152,7 @@
while (*auth_line== ' ' || *auth_line== '\t')
auth_line++;
- t = ap_puudecode(r->pool, auth_line);
+ t = ap_pbase64decode(r->pool, auth_line);
/* Note that this allocation has to be made from r->connection->pool
* because it has the lifetime of the connection. The other allocations
* are temporary and can be tossed away any time.
1.171 +12 -11 apache-1.3/src/main/util.c
Index: util.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/util.c,v
retrieving revision 1.170
retrieving revision 1.171
diff -u -r1.170 -r1.171
--- util.c 1999/08/12 18:06:25 1.170
+++ util.c 1999/08/14 08:35:50 1.171
@@ -1959,39 +1959,40 @@
/* simple 'pool' alloc()ing glue to ap_base64.c
*/
-API_EXPORT(char *) ap_puudecode(pool *p, const char *bufcoded)
+API_EXPORT(char *) ap_pbase64decode(pool *p, const char *bufcoded)
{
char *decoded;
int l;
- decoded = (char *) ap_palloc(p, 1+ap_base64decode_len(bufcoded));
- l = ap_base64decode(decoded,bufcoded);
- decoded[l]='\0'; /* make binary sequence into string */
+ decoded = (char *) ap_palloc(p, 1 + ap_base64decode_len(bufcoded));
+ l = ap_base64decode(decoded, bufcoded);
+ decoded[l] = '\0'; /* make binary sequence into string */
return decoded;
}
-
-API_EXPORT(char *) ap_puuencode(pool *p, char *string)
+API_EXPORT(char *) ap_pbase64encode(pool *p, char *string)
{
char *encoded;
int l = strlen(string);
- encoded = (char *) ap_palloc(p, 1+ap_base64encode_len(l));
- l=ap_base64encode(encoded,string,l);
- encoded[l]='\0'; /* make binary sequence into string */
+ encoded = (char *) ap_palloc(p, 1 + ap_base64encode_len(l));
+ l = ap_base64encode(encoded, string, l);
+ encoded[l] = '\0'; /* make binary sequence into string */
return encoded;
}
+/* deprecated names for the above two functions, here for compatibility
+ */
API_EXPORT(char *) ap_uudecode(pool *p, const char *bufcoded)
{
- return ap_puudecode(p,bufcoded);
+ return ap_pbase64decode(p, bufcoded);
}
API_EXPORT(char *) ap_uuencode(pool *p, char *string)
{
- return ap_puuencode(p,string);
+ return ap_pbase64encode(p, string);
}
#ifdef OS2
1.6 +2 -2 apache-1.3/src/modules/experimental/mod_auth_digest.c
Index: mod_auth_digest.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/experimental/mod_auth_digest.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- mod_auth_digest.c 1999/08/13 07:18:05 1.5
+++ mod_auth_digest.c 1999/08/14 08:35:52 1.6
@@ -943,7 +943,7 @@
const digest_config_rec *conf)
{
const char *hex = "0123456789abcdef";
- unsigned char sha1[20];
+ unsigned char sha1[SHA_DIGESTSIZE];
AP_SHA1_CTX ctx;
int idx;
@@ -958,7 +958,7 @@
strlen(opaque));
ap_SHA1Final(sha1, &ctx);
- for (idx=0; idx<20; idx++) {
+ for (idx=0; idx<SHA_DIGESTSIZE; idx++) {
*hash++ = hex[sha1[idx] >> 4];
*hash++ = hex[sha1[idx] & 0xF];
}
1.78 +1 -1 apache-1.3/src/modules/proxy/proxy_ftp.c
Index: proxy_ftp.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/proxy/proxy_ftp.c,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- proxy_ftp.c 1999/08/08 11:45:19 1.77
+++ proxy_ftp.c 1999/08/14 08:35:53 1.78
@@ -510,7 +510,7 @@
*/
if ((password = ap_table_get(r->headers_in, "Authorization")) != NULL
&& strcasecmp(ap_getword(r->pool, &password, ' '), "Basic") == 0
- && (password = ap_puudecode(r->pool, password))[0] != ':') {
+ && (password = ap_pbase64decode(r->pool, password))[0] != ':') {
/* Note that this allocation has to be made from r->connection->pool
* because it has the lifetime of the connection. The other allocations
* are temporary and can be tossed away any time.
1.19 +3 -3 apache-1.3/src/modules/standard/mod_unique_id.c
Index: mod_unique_id.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_unique_id.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- mod_unique_id.c 1999/01/01 19:05:15 1.18
+++ mod_unique_id.c 1999/08/14 08:35:53 1.19
@@ -104,7 +104,7 @@
* saving cpu cycles. The counter is never reset, and is used to permit up
to
* 64k requests in a single second by a single child.
*
- * The 112-bits of unique_id_rec are uuencoded using the alphabet
+ * The 112-bits of unique_id_rec are encoded using the alphabet
* [EMAIL PROTECTED], resulting in 19 bytes of printable characters. That
is then
* stuffed into the environment variable UNIQUE_ID so that it is available to
* other modules. The alphabet choice differs from normal base64 encoding
@@ -181,7 +181,7 @@
unique_id_rec_size[2] + unique_id_rec_size[3];
/*
- * Calculate the size of the structure when uuencoded.
+ * Calculate the size of the structure when encoded.
*/
unique_id_rec_size_uu = (unique_id_rec_total_size*8+5)/6;
@@ -296,7 +296,7 @@
cur_unique_id.counter = htons(cur_unique_id.counter);
}
-/* NOTE: This is *NOT* the same encoding used by uuencode ... the last two
+/* NOTE: This is *NOT* the same encoding used by base64encode ... the last
two
* characters should be + and /. But those two characters have very special
* meanings in URLs, and we want to make it easy to use identifiers in
* URLs. So we replace them with @ and -.
1.26 +12 -2 apache-1.3/src/support/httpd.exp
Index: httpd.exp
===================================================================
RCS file: /home/cvs/apache-1.3/src/support/httpd.exp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- httpd.exp 1999/08/10 14:50:43 1.25
+++ httpd.exp 1999/08/14 08:35:54 1.26
@@ -3,6 +3,10 @@
ap_MD5Final
ap_MD5Init
ap_MD5Update
+ap_SHA1Final
+ap_SHA1Init
+ap_SHA1Update_binary
+ap_SHA1Update
ap_add_cgi_vars
ap_add_common_vars
ap_add_module
@@ -17,6 +21,12 @@
ap_array_pstrcat
ap_auth_name
ap_auth_type
+ap_base64encode
+ap_base64encode_binary
+ap_base64encode_len
+ap_base64decode
+ap_base64decode_binary
+ap_base64decode_len
ap_basic_http_header
ap_bclose
ap_bcreate
@@ -217,6 +227,8 @@
ap_parse_uri
ap_parse_uri_components
ap_parse_vhost_addrs
+ap_pbase64decode
+ap_pbase64encode
ap_pcalloc
ap_pcfg_open_custom
ap_pcfg_openfile
@@ -245,8 +257,6 @@
ap_pstrdup
ap_pstrndup
ap_push_array
-ap_puudecode
-ap_puuencode
ap_pvsprintf
ap_rationalize_mtime
ap_read_config