2007-03-22 10:30:00 -07:00
|
|
|
/* vim:set ts=4 sw=4 et cindent: */
|
2012-05-21 04:12:37 -07:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
#ifndef nsAuthGSSAPI_h__
|
|
|
|
#define nsAuthGSSAPI_h__
|
|
|
|
|
|
|
|
#include "nsAuth.h"
|
|
|
|
#include "nsIAuthModule.h"
|
|
|
|
#include "nsString.h"
|
|
|
|
|
|
|
|
#define GSS_USE_FUNCTION_POINTERS 1
|
|
|
|
|
|
|
|
#include "gssapi.h"
|
|
|
|
|
|
|
|
// The nsAuthGSSAPI class provides responses for the GSS-API Negotiate method
|
|
|
|
// as specified by Microsoft in draft-brezak-spnego-http-04.txt
|
|
|
|
|
2008-04-13 11:31:34 -07:00
|
|
|
/* Some remarks on thread safety ...
|
|
|
|
*
|
|
|
|
* The thread safety of this class depends largely upon the thread safety of
|
|
|
|
* the underlying GSSAPI and Kerberos libraries. This code just loads the
|
|
|
|
* system GSSAPI library, and whilst it avoids loading known bad libraries,
|
|
|
|
* it cannot determine the thread safety of the the code it loads.
|
|
|
|
*
|
|
|
|
* When used with a non-threadsafe library, it is not safe to simultaneously
|
|
|
|
* use multiple instantiations of this class.
|
|
|
|
*
|
|
|
|
* When used with a threadsafe Kerberos library, multiple instantiations of
|
|
|
|
* this class may happily co-exist. Methods may be sequentially called from
|
|
|
|
* multiple threads. The nature of the GSSAPI protocol is such that a correct
|
|
|
|
* implementation will never call methods in parallel, as the results of the
|
|
|
|
* last call are required as input to the next.
|
|
|
|
*/
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
class nsAuthGSSAPI : public nsIAuthModule
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIAUTHMODULE
|
|
|
|
|
|
|
|
nsAuthGSSAPI(pType package);
|
|
|
|
|
2007-04-15 15:22:58 -07:00
|
|
|
static void Shutdown();
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
private:
|
|
|
|
~nsAuthGSSAPI() { Reset(); }
|
|
|
|
|
|
|
|
void Reset();
|
|
|
|
gss_OID GetOID() { return mMechOID; }
|
|
|
|
|
|
|
|
private:
|
|
|
|
gss_ctx_id_t mCtx;
|
|
|
|
gss_OID mMechOID;
|
|
|
|
nsCString mServiceName;
|
|
|
|
PRUint32 mServiceFlags;
|
|
|
|
nsString mUsername;
|
2011-09-28 23:19:26 -07:00
|
|
|
bool mComplete;
|
2007-03-22 10:30:00 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* nsAuthGSSAPI_h__ */
|