gecko-dev/extensions/auth/nsAuthSSPI.h
Kris Maglione 63d03a767b Bug 1398646: Forbid sync DNS resolution on the main thread. r=valentin
MozReview-Commit-ID: A6mUDNSri2m

--HG--
extra : rebase_source : 43c58d61614e186b89523a301fd1d2d8bd99a503
extra : source : 963bf9d8573273894016e7082cb5f3fb85d80661
2017-09-10 19:13:42 -07:00

62 lines
1.7 KiB
C++

/* vim:set ts=4 sw=4 et cindent: */
/* 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/. */
#ifndef nsAuthSSPI_h__
#define nsAuthSSPI_h__
#include "nsAuth.h"
#include "nsIAuthModule.h"
#include "nsString.h"
#include <windows.h>
#define SECURITY_WIN32 1
#include <ntsecapi.h>
#include <security.h>
#include <rpc.h>
// The nsNegotiateAuth class provides responses for the GSS-API Negotiate method
// as specified by Microsoft in draft-brezak-spnego-http-04.txt
// It can also be configured to talk raw NTLM. This implementation of NTLM has
// the advantage of being able to access the user's logon credentials. This
// implementation of NTLM should only be used for single-signon. It should be
// avoided when authenticating over the internet since it may use a lower-grade
// version of password hashing depending on the version of Windows being used.
class nsAuthSSPI final : public nsIAuthModule
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIAUTHMODULE
explicit nsAuthSSPI(pType package = PACKAGE_TYPE_NEGOTIATE);
private:
~nsAuthSSPI();
void Reset();
typedef TimeStamp MS_TimeStamp;
private:
nsresult MakeSN(const char *principal, nsCString &result);
CredHandle mCred;
CtxtHandle mCtxt;
nsCString mServiceName;
uint32_t mServiceFlags;
uint32_t mMaxTokenLen;
pType mPackage;
nsString mDomain;
nsString mUsername;
nsString mPassword;
bool mIsFirst;
void* mCertDERData;
uint32_t mCertDERLength;
};
#endif /* nsAuthSSPI_h__ */