2005-08-18 13:38:39 +04:00
|
|
|
/* vim:set ts=4 sw=4 et cindent: */
|
2012-05-21 15:12:37 +04: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/. */
|
2005-08-18 13:38:39 +04:00
|
|
|
|
2005-08-18 19:22:33 +04:00
|
|
|
#ifndef nsAuthGSSAPI_h__
|
|
|
|
#define nsAuthGSSAPI_h__
|
2005-08-18 13:38:39 +04:00
|
|
|
|
2005-08-18 19:22:33 +04:00
|
|
|
#include "nsAuth.h"
|
2005-08-18 13:38:39 +04:00
|
|
|
#include "nsIAuthModule.h"
|
|
|
|
#include "nsString.h"
|
2012-06-13 07:13:31 +04:00
|
|
|
#include "mozilla/Attributes.h"
|
2005-08-18 13:38:39 +04:00
|
|
|
|
2005-08-18 19:22:33 +04:00
|
|
|
#define GSS_USE_FUNCTION_POINTERS 1
|
2005-08-18 13:38:39 +04:00
|
|
|
|
2005-08-18 19:22:33 +04:00
|
|
|
#include "gssapi.h"
|
2005-08-18 13:38:39 +04:00
|
|
|
|
2005-08-18 19:22:33 +04:00
|
|
|
// The nsAuthGSSAPI class provides responses for the GSS-API Negotiate method
|
2005-08-18 13:38:39 +04:00
|
|
|
// as specified by Microsoft in draft-brezak-spnego-http-04.txt
|
|
|
|
|
2008-04-13 22:31:34 +04: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.
|
|
|
|
*/
|
|
|
|
|
2015-03-21 19:28:04 +03:00
|
|
|
class nsAuthGSSAPI final : public nsIAuthModule
|
2005-08-18 13:38:39 +04:00
|
|
|
{
|
|
|
|
public:
|
2013-07-19 06:23:04 +04:00
|
|
|
NS_DECL_THREADSAFE_ISUPPORTS
|
2005-08-18 13:38:39 +04:00
|
|
|
NS_DECL_NSIAUTHMODULE
|
|
|
|
|
2014-09-03 02:24:24 +04:00
|
|
|
explicit nsAuthGSSAPI(pType package);
|
2005-08-18 13:38:39 +04:00
|
|
|
|
2007-04-16 02:22:58 +04:00
|
|
|
static void Shutdown();
|
|
|
|
|
2005-08-18 13:38:39 +04:00
|
|
|
private:
|
2005-08-18 19:22:33 +04:00
|
|
|
~nsAuthGSSAPI() { Reset(); }
|
2005-08-18 13:38:39 +04:00
|
|
|
|
|
|
|
void Reset();
|
|
|
|
gss_OID GetOID() { return mMechOID; }
|
|
|
|
|
|
|
|
private:
|
|
|
|
gss_ctx_id_t mCtx;
|
|
|
|
gss_OID mMechOID;
|
|
|
|
nsCString mServiceName;
|
2012-08-22 19:56:38 +04:00
|
|
|
uint32_t mServiceFlags;
|
2005-08-18 19:22:33 +04:00
|
|
|
nsString mUsername;
|
2011-09-29 10:19:26 +04:00
|
|
|
bool mComplete;
|
2005-08-18 13:38:39 +04:00
|
|
|
};
|
|
|
|
|
2005-08-18 19:22:33 +04:00
|
|
|
#endif /* nsAuthGSSAPI_h__ */
|