|
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/. */ |
|
5 |
|
6 #ifndef nsAuthSSPI_h__ |
|
7 #define nsAuthSSPI_h__ |
|
8 |
|
9 #include "nsAuth.h" |
|
10 #include "nsIAuthModule.h" |
|
11 #include "nsString.h" |
|
12 |
|
13 #include <windows.h> |
|
14 |
|
15 #define SECURITY_WIN32 1 |
|
16 #include <ntsecapi.h> |
|
17 #include <security.h> |
|
18 #include <rpc.h> |
|
19 |
|
20 // The nsNegotiateAuth class provides responses for the GSS-API Negotiate method |
|
21 // as specified by Microsoft in draft-brezak-spnego-http-04.txt |
|
22 |
|
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. |
|
28 |
|
29 class nsAuthSSPI MOZ_FINAL : public nsIAuthModule |
|
30 { |
|
31 public: |
|
32 NS_DECL_ISUPPORTS |
|
33 NS_DECL_NSIAUTHMODULE |
|
34 |
|
35 nsAuthSSPI(pType package = PACKAGE_TYPE_NEGOTIATE); |
|
36 |
|
37 private: |
|
38 ~nsAuthSSPI(); |
|
39 |
|
40 void Reset(); |
|
41 |
|
42 typedef TimeStamp MS_TimeStamp; |
|
43 |
|
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 }; |
|
58 |
|
59 #endif /* nsAuthSSPI_h__ */ |