httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stodd...@hyperreal.org
Subject cvs commit: apache-1.3/src/modules/experimental mod_auth_digest.c
Date Thu, 09 Sep 1999 22:20:36 GMT
stoddard    99/09/09 15:20:33

  Modified:    src/modules/experimental mod_auth_digest.c
  Log:
  First cut at getting digest auth working on Windows. This actually works provided you
  don't get fancy with the config directives! Still much to be done though.
  
  Revision  Changes    Path
  1.8       +37 -1     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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- mod_auth_digest.c	1999/08/16 11:06:14	1.7
  +++ mod_auth_digest.c	1999/09/09 22:20:19	1.8
  @@ -130,6 +130,17 @@
   #include "util_uri.h"
   #include "util_md5.h"
   #include "ap_sha1.h"
  +
  +#ifdef WIN32
  +/*
  + * Crypt APIs are only available in WinNT and Win95 with OSR 2 so 
  + * wincrypt.h is protected by this macro definition.
  + */
  +#define _WIN32_WINNT 0x0400
  +#include <wincrypt.h>
  +#undef _WIN32_WINNT
  +#endif
  +
   #ifdef HAVE_SHMEM_MM
   #include "mm.h"
   #endif	/* HAVE_SHMEM_MM */
  @@ -216,7 +227,7 @@
   
   typedef union time_union {
       time_t	  time;
  -    unsigned char arr[sizeof(time_t)];
  +    unsigned char arr[sizeof(time_t)+1]; /* leave room for the NULL terminator */
   } time_rec;
   
   
  @@ -271,6 +282,30 @@
   }
   #endif	/* HAVE_SHMEM_MM */
   
  +#ifdef WIN32
  +/* TODO: abstract out the random number generation. APR? */
  +static void initialize_secret(server_rec *s)
  +{
  +    HCRYPTPROV hProv;
  +
  +    ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, s,
  +		 "Digest: generating secret for digest authentication ...");
  +    if (!CryptAcquireContext(&hProv,NULL,NULL,PROV_RSA_FULL,0)) {
  +        ap_log_error(APLOG_MARK, APLOG_CRIT, s, 
  +                     "Digest: Error acquiring context. Errno = %d",
  +                     GetLastError());
  +        exit(EXIT_FAILURE);
  +    }
  +    if (!CryptGenRandom(hProv,sizeof(secret),secret)) {
  +        ap_log_error(APLOG_MARK, APLOG_CRIT, s, 
  +                     "Digest: Error generating secret. Errno = %d",
  +                     GetLastError());
  +        exit(EXIT_FAILURE);
  +    }
  +
  +    ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, s, "Digest: done");
  +}
  +#else
   static void initialize_secret(server_rec *s)
   {
   #ifdef	DEV_RANDOM
  @@ -317,6 +352,7 @@
   
       ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_NOTICE, s, "Digest: done");
   }
  +#endif
   
   #ifdef HAVE_SHMEM_MM
   static void initialize_tables(server_rec *s)
  
  
  

Mime
View raw message