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 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__ */ 60