/*
- * $Id: auth_digest.cc,v 1.7 2001/10/17 12:41:52 hno Exp $
+ * $Id: auth_digest.cc,v 1.8 2001/10/17 17:09:08 hno Exp $
*
* DEBUG: section 29 Authenticator
* AUTHOR: Robert Collins
#include "rfc2617.h"
#include "auth_digest.h"
+extern AUTHSSETUP authSchemeSetup_digest;
+
static void
authenticateStateFree(authenticateStateData * r)
{
static auth_digest_config *digestConfig = NULL;
static int authdigest_initialised = 0;
-MemPool *digest_user_pool = NULL;
-MemPool *digest_request_pool = NULL;
-MemPool *digest_nonce_pool = NULL;
+static MemPool *digest_user_pool = NULL;
+static MemPool *digest_request_pool = NULL;
+static MemPool *digest_nonce_pool = NULL;
CBDATA_TYPE(authenticateStateData);
static void authenticateDigestNonceCacheCleanup(void *data);
static digest_nonce_h *authenticateDigestNonceFindNonce(const char *nonceb64);
-digest_nonce_h *authenticateDigestNonceNew();
-void authenticateDigestNonceDelete(digest_nonce_h * nonce);
-void authenticateDigestNonceSetup();
-void authenticateDigestNonceShutdown();
-void authenticateDigestNonceReconfigure();
-const char *authenticateDigestNonceNonceb64(digest_nonce_h * nonce);
-int authDigestNonceIsValid(digest_nonce_h * nonce, char nc[9]);
-int authDigestNonceIsStale(digest_nonce_h * nonce);
-void authDigestNonceEncode(digest_nonce_h * nonce);
-int authDigestNonceLastRequest(digest_nonce_h * nonce);
-void authDigestNonceLink(digest_nonce_h * nonce);
-void authDigestNonceUnlink(digest_nonce_h * nonce);
-int authDigestNonceLinks(digest_nonce_h * nonce);
-void authDigestNonceUserUnlink(digest_nonce_h * nonce);
-void authDigestNoncePurge(digest_nonce_h * nonce);
+static digest_nonce_h *authenticateDigestNonceNew();
+static void authenticateDigestNonceDelete(digest_nonce_h * nonce);
+static void authenticateDigestNonceSetup();
+static void authenticateDigestNonceShutdown();
+static void authenticateDigestNonceReconfigure();
+static const char *authenticateDigestNonceNonceb64(digest_nonce_h * nonce);
+static int authDigestNonceIsValid(digest_nonce_h * nonce, char nc[9]);
+static int authDigestNonceIsStale(digest_nonce_h * nonce);
+static void authDigestNonceEncode(digest_nonce_h * nonce);
+static int authDigestNonceLastRequest(digest_nonce_h * nonce);
+static void authDigestNonceLink(digest_nonce_h * nonce);
+static void authDigestNonceUnlink(digest_nonce_h * nonce);
+#if NOT_USED
+static int authDigestNonceLinks(digest_nonce_h * nonce);
+#endif
+static void authDigestNonceUserUnlink(digest_nonce_h * nonce);
+static void authDigestNoncePurge(digest_nonce_h * nonce);
-void
+static void
authDigestNonceEncode(digest_nonce_h * nonce)
{
if (!nonce)
nonce->hash.key = xstrdup(base64_encode_bin((char *) &(nonce->noncedata), sizeof(digest_nonce_data)));
}
-digest_nonce_h *
+static digest_nonce_h *
authenticateDigestNonceNew()
{
digest_nonce_h *newnonce = memPoolAlloc(digest_nonce_pool);
return newnonce;
}
-void
+static void
authenticateDigestNonceDelete(digest_nonce_h * nonce)
{
if (nonce) {
}
}
-void
+static void
authenticateDigestNonceSetup()
{
if (!digest_nonce_pool)
}
}
-void
+static void
authenticateDigestNonceShutdown()
{
/*
debug(29, 2) ("authenticateDigestNonceShutdown: Nonce cache shutdown\n");
}
-void
+static void
authenticateDigestNonceReconfigure()
{
}
-void
+static void
authenticateDigestNonceCacheCleanup(void *data)
{
/*
eventAdd("Digest none cache maintenance", authenticateDigestNonceCacheCleanup, NULL, digestConfig->nonceGCInterval, 1);
}
-void
+static void
authDigestNonceLink(digest_nonce_h * nonce)
{
assert(nonce != NULL);
debug(29, 9) ("authDigestNonceLink: nonce '%d' now at '%d'.\n", nonce, nonce->references);
}
-int
+#if NOT_USED
+static int
authDigestNonceLinks(digest_nonce_h * nonce)
{
if (!nonce)
return -1;
return nonce->references;
}
+#endif
-void
+static void
authDigestNonceUnlink(digest_nonce_h * nonce)
{
assert(nonce != NULL);
authenticateDigestNonceDelete(nonce);
}
-const char *
+static const char *
authenticateDigestNonceNonceb64(digest_nonce_h * nonce)
{
if (!nonce)
return nonce->hash.key;
}
-digest_nonce_h *
+static digest_nonce_h *
authenticateDigestNonceFindNonce(const char *nonceb64)
{
digest_nonce_h *nonce = NULL;
return nonce;
}
-int
+static int
authDigestNonceIsValid(digest_nonce_h * nonce, char nc[9])
{
int intnc;
return -1;
}
-int
+static int
authDigestNonceIsStale(digest_nonce_h * nonce)
{
/* do we have a nonce ? */
}
/* return -1 if the digest will be stale on the next request */
-int
+static int
authDigestNonceLastRequest(digest_nonce_h * nonce)
{
if (!nonce)
return 0;
}
-void
+static void
authDigestNoncePurge(digest_nonce_h * nonce)
{
if (!nonce)
/* USER related functions */
-int
+#if NOT_USED
+static int
authDigestUsercmpname(digest_user_h * u1, digest_user_h * u2)
{
return strcmp(u1->username, u2->username);
}
+#endif
-auth_user_t *
+static auth_user_t *
authDigestUserFindUsername(const char *username)
{
auth_user_hash_pointer *usernamehash;
return NULL;
}
-digest_user_h *
+static digest_user_h *
authDigestUserNew()
{
return memPoolAlloc(digest_user_pool);
}
-void
+static void
authDigestUserSetup()
{
if (!digest_user_pool)
digest_user_pool = memPoolCreate("Digest Scheme User Data", sizeof(digest_user_h));
}
-void
+static void
authDigestUserShutdown()
{
/*
/* request related functions */
/* delete the digest reuqest structure. Does NOT delete related structures */
-void
+static void
authDigestRequestDelete(digest_request_h * digest_request)
{
if (digest_request->nonceb64)
memPoolFree(digest_request_pool, digest_request);
}
-void
+static void
authDigestAURequestFree(auth_user_request_t * auth_user_request)
{
if (auth_user_request->scheme_data != NULL)
authDigestRequestDelete((digest_request_h *) auth_user_request->scheme_data);
}
-digest_request_h *
+static digest_request_h *
authDigestRequestNew()
{
digest_request_h *tmp;
return tmp;
}
-void
+static void
authDigestRequestSetup()
{
if (!digest_request_pool)
digest_request_pool = memPoolCreate("Digest Scheme Request Data", sizeof(digest_request_h));
}
-void
+static void
authDigestRequestShutdown()
{
/* No requests should be in progress when we get here */
}
-void
+static void
authDigestDone(void)
{
if (digestauthenticators)
authscheme->authConnLastHeader = NULL;
}
-int
+static int
authenticateDigestActive()
{
return (authdigest_initialised == 1) ? 1 : 0;
}
-int
+static int
authDigestConfigured()
{
if ((digestConfig != NULL) && (digestConfig->authenticate != NULL) &&
return 0;
}
-int
+static int
authDigestAuthenticated(auth_user_request_t * auth_user_request)
{
digest_user_h *digest_user = auth_user_request->auth_user->scheme_data;
return;
}
-int
+static int
authenticateDigestDirection(auth_user_request_t * auth_user_request)
{
digest_request_h *digest_request;
}
/* add the [proxy]authorisation header */
-void
+static void
authDigestAddHeader(auth_user_request_t * auth_user_request, HttpReply * rep, int accel)
{
int type;
#if WAITING_FOR_TE
/* add the [proxy]authorisation header */
-void
+static void
authDigestAddTrailer(auth_user_request_t * auth_user_request, HttpReply * rep, int accel)
{
int type;
}
}
-void
+static void
authenticateDigestUserFree(auth_user_t * auth_user)
{
digest_user_h *digest_user = auth_user->scheme_data;
/* NonceUserUnlink: remove the reference to auth_user and unlink the node from the list */
-void
+static void
authDigestNonceUserUnlink(digest_nonce_h * nonce)
{
digest_user_h *digest_user;
/* authDigestUserLinkNonce: add a nonce to a given user's struct */
-void
+static void
authDigestUserLinkNonce(auth_user_t * auth_user, digest_nonce_h * nonce)
{
dlink_node *node;
}
/* authenticateDigestUsername: return a pointer to the username in the */
-char *
+static char *
authenticateDigestUsername(auth_user_t * auth_user)
{
digest_user_h *digest_user = auth_user->scheme_data;
}
/* setup the necessary info to log the username */
-void
+static void
authDigestLogUsername(auth_user_request_t * auth_user_request, char *username)
{
auth_user_t *auth_user;
/*
- * $Id: auth_ntlm.cc,v 1.13 2001/10/17 12:41:52 hno Exp $
+ * $Id: auth_ntlm.cc,v 1.14 2001/10/17 17:09:08 hno Exp $
*
* DEBUG: section 29 NTLM Authenticator
* AUTHOR: Robert Collins
#include "squid.h"
#include "auth_ntlm.h"
+extern AUTHSSETUP authSchemeSetup_ntlm;
+
static void
authenticateStateFree(authenticateStateData * r)
{
static int authntlm_initialised = 0;
-MemPool *ntlm_helper_state_pool = NULL;
-MemPool *ntlm_user_pool = NULL;
-MemPool *ntlm_request_pool = NULL;
+static MemPool *ntlm_helper_state_pool = NULL;
+static MemPool *ntlm_user_pool = NULL;
+static MemPool *ntlm_request_pool = NULL;
static auth_ntlm_config *ntlmConfig = NULL;
static hash_table *proxy_auth_cache = NULL;
*
*/
-void
+static void
authNTLMDone(void)
{
debug(29, 2) ("authNTLMDone: shutting down NTLM authentication.\n");
}
/* free any allocated configuration details */
-void
+static void
authNTLMFreeConfig(authScheme * scheme)
{
if (ntlmConfig == NULL)
}
}
-int
+static int
authenticateNTLMActive()
{
return (authntlm_initialised == 1) ? 1 : 0;
}
-int
+static int
authNTLMConfigured()
{
if ((ntlmConfig != NULL) && (ntlmConfig->authenticate != NULL) && (ntlmConfig->authenticateChildren != 0) && (ntlmConfig->challengeuses > -1) && (ntlmConfig->challengelifetime > -1)) {
/* NTLM Scheme */
-int
+static int
authenticateNTLMDirection(auth_user_request_t * auth_user_request)
{
ntlm_request_t *ntlm_request = auth_user_request->scheme_data;
* must be first. To ensure that, the configure use --enable-auth=ntlm, anything
* else.
*/
-void
+static void
authenticateNTLMFixErrorHeader(auth_user_request_t * auth_user_request, HttpReply * rep, http_hdr_type type, request_t * request)
{
ntlm_request_t *ntlm_request;
}
}
-void
+static void
authNTLMRequestFree(ntlm_request_t * ntlm_request)
{
if (!ntlm_request)
memPoolFree(ntlm_request_pool, ntlm_request);
}
-void
+static void
authNTLMAURequestFree(auth_user_request_t * auth_user_request)
{
if (auth_user_request->scheme_data)
auth_user_request->scheme_data = NULL;
}
-void
+static void
authenticateNTLMFreeUser(auth_user_t * auth_user)
{
dlink_node *link, *tmplink;
}
/* is a particular challenge still valid ? */
-int
+static int
authenticateNTLMValidChallenge(ntlm_helper_state_t * helperstate)
{
debug(29, 9) ("authenticateNTLMValidChallenge: Challenge is %s\n", helperstate->challenge ? "Valid" : "Invalid");
}
/* does our policy call for changing the challenge now? */
-int
+static int
authenticateNTLMChangeChallenge_p(ntlm_helper_state_t * helperstate)
{
/* don't check for invalid challenges just for expiry choices */
}
/* callback used by stateful helper routines */
-int
+static int
authenticateNTLMHelperServerAvailable(void *data)
{
ntlm_helper_state_t *statedata = data;
return 0;
}
-void
+static void
authenticateNTLMHelperServerOnEmpty(void *data)
{
ntlm_helper_state_t *statedata = data;
/* clear the NTLM helper of being reserved for future requests */
-void
+static void
authenticateNTLMReleaseServer(auth_user_request_t * auth_user_request)
{
ntlm_request_t *ntlm_request;
}
/* clear any connection related authentication details */
-void
+static void
authenticateNTLMOnCloseConnection(ConnStateData * conn)
{
ntlm_request_t *ntlm_request;
}
/* authenticateUserUsername: return a pointer to the username in the */
-char *
+static char *
authenticateNTLMUsername(auth_user_t * auth_user)
{
ntlm_user_t *ntlm_user = auth_user->scheme_data;
/* NTLMLastHeader: return a pointer to the last header used in authenticating
* the request/conneciton
*/
-const char *
+static const char *
NTLMLastHeader(auth_user_request_t * auth_user_request)
{
ntlm_request_t *ntlm_request;
* Auth_user structure.
*/
-void
+static void
authenticateDecodeNTLMAuth(auth_user_request_t * auth_user_request, const char *proxy_auth)
{
dlink_node *node;
return;
}
-int
+static int
authenticateNTLMcmpUsername(ntlm_user_t * u1, ntlm_user_t * u2)
{
return strcmp(u1->username, u2->username);
* and sends the same response to squid on a single select cycle.
* Check for this and if found ignore the new link
*/
-void
+static void
authenticateProxyAuthCacheAddLink(const char *key, auth_user_t * auth_user)
{
auth_user_hash_pointer *proxy_auth_hash;
}
-int
+static int
authNTLMAuthenticated(auth_user_request_t * auth_user_request)
{
ntlm_request_t *ntlm_request = auth_user_request->scheme_data;