tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsAuthSSPI.h (1633B)


      1 /* vim:set ts=4 sw=2 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 public:
     31  NS_DECL_ISUPPORTS
     32  NS_DECL_NSIAUTHMODULE
     33 
     34  explicit nsAuthSSPI(pType package = PACKAGE_TYPE_NEGOTIATE);
     35 
     36 private:
     37  ~nsAuthSSPI();
     38 
     39  void Reset();
     40 
     41  typedef ::TimeStamp MS_TimeStamp;
     42 
     43 private:
     44  nsresult MakeSN(const nsACString& principal, nsCString& result);
     45 
     46  CredHandle mCred;
     47  CtxtHandle mCtxt;
     48  nsCString mServiceName;
     49  uint32_t mServiceFlags;
     50  uint32_t mMaxTokenLen;
     51  pType mPackage;
     52  nsString mDomain;
     53  nsString mUsername;
     54  nsString mPassword;
     55  bool mIsFirst;
     56  void* mCertDERData;
     57  uint32_t mCertDERLength;
     58 };
     59 
     60 #endif /* nsAuthSSPI_h__ */