LCOV - code coverage report
Current view: top level - extensions/auth - nsAuthFactory.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 37 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 7 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* This Source Code Form is subject to the terms of the Mozilla Public
       2             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       3             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       4             : 
       5             : #include "mozilla/ModuleUtils.h"
       6             : #include "nsAuth.h"
       7             : 
       8             : //-----------------------------------------------------------------------------
       9             : 
      10             : #define NS_HTTPNEGOTIATEAUTH_CID                   \
      11             : { /* 75c80fd0-accb-432c-af59-ec60668c3990 */       \
      12             :   0x75c80fd0,                                      \
      13             :   0xaccb,                                          \
      14             :   0x432c,                                          \
      15             :   {0xaf, 0x59, 0xec, 0x60, 0x66, 0x8c, 0x39, 0x90} \
      16             : }
      17             : 
      18             : #include "nsHttpNegotiateAuth.h"
      19           0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsHttpNegotiateAuth)
      20             : //-----------------------------------------------------------------------------
      21             : 
      22             : #define NS_NEGOTIATEAUTH_CID                       \
      23             : { /* 96ec4163-efc8-407a-8735-007fb26be4e8 */       \
      24             :   0x96ec4163,                                      \
      25             :   0xefc8,                                          \
      26             :   0x407a,                                          \
      27             :   {0x87, 0x35, 0x00, 0x7f, 0xb2, 0x6b, 0xe4, 0xe8} \
      28             : }
      29             : #define NS_GSSAUTH_CID                             \
      30             : { /* dc8e21a0-03e4-11da-8cd6-0800200c9a66 */       \
      31             :   0xdc8e21a0,                                      \
      32             :   0x03e4,                                          \
      33             :   0x11da,                                          \
      34             :   {0x8c, 0xd6, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66} \
      35             : }
      36             : 
      37             : #include "nsAuthGSSAPI.h"
      38             : 
      39             : #if defined( USE_SSPI )
      40             : #include "nsAuthSSPI.h"
      41             : 
      42             : static nsresult
      43             : nsSysNTLMAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
      44             : {
      45             :   if (outer)
      46             :     return NS_ERROR_NO_AGGREGATION;
      47             : 
      48             :   nsAuthSSPI *auth = new nsAuthSSPI(PACKAGE_TYPE_NTLM);
      49             :   if (!auth)
      50             :     return NS_ERROR_OUT_OF_MEMORY;
      51             : 
      52             :   NS_ADDREF(auth);
      53             :   nsresult rv = auth->QueryInterface(iid, result);
      54             :   NS_RELEASE(auth);
      55             :   return rv;
      56             : }
      57             : 
      58             : static nsresult
      59             : nsKerbSSPIAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
      60             : {
      61             :   if (outer)
      62             :     return NS_ERROR_NO_AGGREGATION;
      63             : 
      64             :   nsAuthSSPI *auth = new nsAuthSSPI(PACKAGE_TYPE_KERBEROS);
      65             :   if (!auth)
      66             :     return NS_ERROR_OUT_OF_MEMORY;
      67             : 
      68             :   NS_ADDREF(auth);
      69             :   nsresult rv = auth->QueryInterface(iid, result);
      70             :   NS_RELEASE(auth);
      71             :   return rv;
      72             : }
      73             : 
      74             : #define NS_SYSNTLMAUTH_CID                         \
      75             : { /* dc195987-6e9a-47bc-b1fd-ab895d398833 */       \
      76             :   0xdc195987,                                      \
      77             :   0x6e9a,                                          \
      78             :   0x47bc,                                          \
      79             :   {0xb1, 0xfd, 0xab, 0x89, 0x5d, 0x39, 0x88, 0x33} \
      80             : }
      81             : 
      82             : #define NS_NEGOTIATEAUTHSSPI_CID                   \
      83             : { /* 78d3b0c0-0241-11da-8cd6-0800200c9a66 */       \
      84             :   0x78d3b0c0,                                      \
      85             :   0x0241,                                          \
      86             :   0x11da,                                          \
      87             :   {0x8c, 0xd6, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66} \
      88             : }
      89             : 
      90             : #define NS_KERBAUTHSSPI_CID                        \
      91             : { /* 8c3a0e20-03e5-11da-8cd6-0800200c9a66 */       \
      92             :   0x8c3a0e20,                                      \
      93             :   0x03e5,                                          \
      94             :   0x11da,                                          \
      95             :   {0x8c, 0xd6, 0x08, 0x00, 0x20, 0x0c, 0x9a, 0x66} \
      96             : }
      97             : 
      98             : #else
      99             : 
     100             : #define NS_SAMBANTLMAUTH_CID                       \
     101             : { /* bc54f001-6eb0-4e32-9f49-7e064d8e70ef */       \
     102             :   0xbc54f001,                                      \
     103             :   0x6eb0,                                          \
     104             :   0x4e32,                                          \
     105             :   {0x9f, 0x49, 0x7e, 0x06, 0x4d, 0x8e, 0x70, 0xef} \
     106             : }
     107             : 
     108             : #include "nsAuthSambaNTLM.h"
     109             : static nsresult
     110           0 : nsSambaNTLMAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
     111             : {
     112           0 :   if (outer)
     113           0 :     return NS_ERROR_NO_AGGREGATION;
     114             : 
     115           0 :   RefPtr<nsAuthSambaNTLM> auth = new nsAuthSambaNTLM();
     116           0 :   if (!auth)
     117           0 :     return NS_ERROR_OUT_OF_MEMORY;
     118             : 
     119           0 :   nsresult rv = auth->SpawnNTLMAuthHelper();
     120           0 :   if (NS_FAILED(rv)) {
     121             :     // Failure here probably means that cached credentials were not available
     122           0 :     return rv;
     123             :   }
     124             : 
     125           0 :   return auth->QueryInterface(iid, result);
     126             : }
     127             : 
     128             : #endif
     129             : 
     130             : static nsresult
     131           0 : nsKerbGSSAPIAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
     132             : {
     133           0 :   if (outer)
     134           0 :     return NS_ERROR_NO_AGGREGATION;
     135             : 
     136           0 :   nsAuthGSSAPI *auth = new nsAuthGSSAPI(PACKAGE_TYPE_KERBEROS);
     137           0 :   if (!auth)
     138           0 :     return NS_ERROR_OUT_OF_MEMORY;
     139             : 
     140           0 :   NS_ADDREF(auth);
     141           0 :   nsresult rv = auth->QueryInterface(iid, result);
     142           0 :   NS_RELEASE(auth);
     143           0 :   return rv;
     144             : }
     145             : 
     146             : static nsresult
     147           0 : nsGSSAPIAuthConstructor(nsISupports *outer, REFNSIID iid, void **result)
     148             : {
     149           0 :   if (outer)
     150           0 :     return NS_ERROR_NO_AGGREGATION;
     151             : 
     152           0 :   nsAuthGSSAPI *auth = new nsAuthGSSAPI(PACKAGE_TYPE_NEGOTIATE);
     153           0 :   if (!auth)
     154           0 :     return NS_ERROR_OUT_OF_MEMORY;
     155             : 
     156           0 :   NS_ADDREF(auth);
     157           0 :   nsresult rv = auth->QueryInterface(iid, result);
     158           0 :   NS_RELEASE(auth);
     159           0 :   return rv;
     160             : }
     161             : 
     162             : 
     163             : #if defined( USE_SSPI )
     164             : NS_GENERIC_FACTORY_CONSTRUCTOR(nsAuthSSPI)
     165             : #endif
     166             : 
     167             : #define NS_AUTHSASL_CID                            \
     168             : { /* 815e42e0-72cc-480f-934b-148e33c228a6 */       \
     169             :   0x815e42e0,                                      \
     170             :   0x72cc,                                          \
     171             :   0x480f,                                          \
     172             :   {0x93, 0x4b, 0x14, 0x8e, 0x33, 0xc2, 0x28, 0xa6} \
     173             : }
     174             : 
     175             : #include "nsAuthSASL.h"
     176           0 : NS_GENERIC_FACTORY_CONSTRUCTOR(nsAuthSASL)
     177             : 
     178             : NS_DEFINE_NAMED_CID(NS_GSSAUTH_CID);
     179             : NS_DEFINE_NAMED_CID(NS_NEGOTIATEAUTH_CID);
     180             : #if defined( USE_SSPI )
     181             : NS_DEFINE_NAMED_CID(NS_NEGOTIATEAUTHSSPI_CID);
     182             : NS_DEFINE_NAMED_CID(NS_KERBAUTHSSPI_CID);
     183             : NS_DEFINE_NAMED_CID(NS_SYSNTLMAUTH_CID);
     184             : #else
     185             : NS_DEFINE_NAMED_CID(NS_SAMBANTLMAUTH_CID);
     186             : #endif
     187             : NS_DEFINE_NAMED_CID(NS_HTTPNEGOTIATEAUTH_CID);
     188             : NS_DEFINE_NAMED_CID(NS_AUTHSASL_CID);
     189             : 
     190             : 
     191             : static const mozilla::Module::CIDEntry kAuthCIDs[] = {
     192             :   { &kNS_GSSAUTH_CID, false, nullptr, nsKerbGSSAPIAuthConstructor },
     193             :   { &kNS_NEGOTIATEAUTH_CID, false, nullptr, nsGSSAPIAuthConstructor },
     194             : #if defined( USE_SSPI )
     195             :   { &kNS_NEGOTIATEAUTHSSPI_CID, false, nullptr, nsAuthSSPIConstructor },
     196             :   { &kNS_KERBAUTHSSPI_CID, false, nullptr, nsKerbSSPIAuthConstructor },
     197             :   { &kNS_SYSNTLMAUTH_CID, false, nullptr, nsSysNTLMAuthConstructor },
     198             : #else
     199             :   { &kNS_SAMBANTLMAUTH_CID, false, nullptr, nsSambaNTLMAuthConstructor },
     200             : #endif
     201             :   { &kNS_HTTPNEGOTIATEAUTH_CID, false, nullptr, nsHttpNegotiateAuthConstructor },
     202             :   { &kNS_AUTHSASL_CID, false, nullptr, nsAuthSASLConstructor },
     203             :   { nullptr }
     204             : };
     205             : 
     206             : static const mozilla::Module::ContractIDEntry kAuthContracts[] = {
     207             :   { NS_AUTH_MODULE_CONTRACTID_PREFIX "kerb-gss", &kNS_GSSAUTH_CID },
     208             :   { NS_AUTH_MODULE_CONTRACTID_PREFIX "negotiate-gss", &kNS_NEGOTIATEAUTH_CID },
     209             : #if defined( USE_SSPI )
     210             :   { NS_AUTH_MODULE_CONTRACTID_PREFIX "negotiate-sspi", &kNS_NEGOTIATEAUTHSSPI_CID },
     211             :   { NS_AUTH_MODULE_CONTRACTID_PREFIX "kerb-sspi", &kNS_KERBAUTHSSPI_CID },
     212             :   { NS_AUTH_MODULE_CONTRACTID_PREFIX "sys-ntlm", &kNS_SYSNTLMAUTH_CID },
     213             : #else
     214             :   { NS_AUTH_MODULE_CONTRACTID_PREFIX "sys-ntlm", &kNS_SAMBANTLMAUTH_CID },
     215             : #endif
     216             :   { NS_HTTP_AUTHENTICATOR_CONTRACTID_PREFIX "negotiate", &kNS_HTTPNEGOTIATEAUTH_CID },
     217             :   { NS_AUTH_MODULE_CONTRACTID_PREFIX "sasl-gssapi", &kNS_AUTHSASL_CID },
     218             :   { nullptr }
     219             : };
     220             : 
     221             : //-----------------------------------------------------------------------------
     222             : mozilla::LazyLogModule gNegotiateLog("negotiateauth");
     223             : 
     224             : // setup nspr logging ...
     225             : static nsresult
     226           0 : InitNegotiateAuth()
     227             : {
     228           0 :   return NS_OK;
     229             : }
     230             : 
     231             : static void
     232           0 : DestroyNegotiateAuth()
     233             : {
     234           0 :   nsAuthGSSAPI::Shutdown();
     235           0 : }
     236             : 
     237             : static const mozilla::Module kAuthModule = {
     238             :   mozilla::Module::kVersion,
     239             :   kAuthCIDs,
     240             :   kAuthContracts,
     241             :   nullptr,
     242             :   nullptr,
     243             :   InitNegotiateAuth,
     244             :   DestroyNegotiateAuth
     245             : };
     246             : 
     247             : NSMODULE_DEFN(nsAuthModule) = &kAuthModule;

Generated by: LCOV version 1.13