Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* vim:set ts=4 sw=4 et cindent: */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef nsAuthSSPI_h__
7 #define nsAuthSSPI_h__
9 #include "nsAuth.h"
10 #include "nsIAuthModule.h"
11 #include "nsString.h"
13 #include <windows.h>
15 #define SECURITY_WIN32 1
16 #include <ntsecapi.h>
17 #include <security.h>
18 #include <rpc.h>
20 // The nsNegotiateAuth class provides responses for the GSS-API Negotiate method
21 // as specified by Microsoft in draft-brezak-spnego-http-04.txt
23 // It can also be configured to talk raw NTLM. This implementation of NTLM has
24 // the advantage of being able to access the user's logon credentials. This
25 // implementation of NTLM should only be used for single-signon. It should be
26 // avoided when authenticating over the internet since it may use a lower-grade
27 // version of password hashing depending on the version of Windows being used.
29 class nsAuthSSPI MOZ_FINAL : public nsIAuthModule
30 {
31 public:
32 NS_DECL_ISUPPORTS
33 NS_DECL_NSIAUTHMODULE
35 nsAuthSSPI(pType package = PACKAGE_TYPE_NEGOTIATE);
37 private:
38 ~nsAuthSSPI();
40 void Reset();
42 typedef TimeStamp MS_TimeStamp;
44 private:
45 CredHandle mCred;
46 CtxtHandle mCtxt;
47 nsCString mServiceName;
48 uint32_t mServiceFlags;
49 uint32_t mMaxTokenLen;
50 pType mPackage;
51 nsString mDomain;
52 nsString mUsername;
53 nsString mPassword;
54 bool mIsFirst;
55 void* mCertDERData;
56 uint32_t mCertDERLength;
57 };
59 #endif /* nsAuthSSPI_h__ */