security/manager/ssl/src/nsNSSModule.cpp

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/security/manager/ssl/src/nsNSSModule.cpp	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,354 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
     1.5 + *
     1.6 + * This Source Code Form is subject to the terms of the Mozilla Public
     1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.9 +
    1.10 +#include "mozilla/ModuleUtils.h"
    1.11 +
    1.12 +#include "nsNSSComponent.h"
    1.13 +#include "nsSSLSocketProvider.h"
    1.14 +#include "nsTLSSocketProvider.h"
    1.15 +#include "nsKeygenHandler.h"
    1.16 +
    1.17 +#include "nsSDR.h"
    1.18 +
    1.19 +#include "nsPK11TokenDB.h"
    1.20 +#include "nsPKCS11Slot.h"
    1.21 +#include "nsNSSCertificate.h"
    1.22 +#include "nsNSSCertificateFakeTransport.h"
    1.23 +#include "nsNSSCertificateDB.h"
    1.24 +#include "nsNSSCertCache.h"
    1.25 +#include "nsCMS.h"
    1.26 +#ifdef MOZ_XUL
    1.27 +#include "nsCertTree.h"
    1.28 +#endif
    1.29 +#include "nsCrypto.h"
    1.30 +#include "nsCryptoHash.h"
    1.31 +//For the NS_CRYPTO_CONTRACTID define
    1.32 +#include "nsDOMCID.h"
    1.33 +#include "nsNetCID.h"
    1.34 +#include "nsCMSSecureMessage.h"
    1.35 +#include "nsCertPicker.h"
    1.36 +#include "nsCURILoader.h"
    1.37 +#include "nsICategoryManager.h"
    1.38 +#include "nsNTLMAuthModule.h"
    1.39 +#include "nsStreamCipher.h"
    1.40 +#include "nsKeyModule.h"
    1.41 +#include "nsDataSignatureVerifier.h"
    1.42 +#include "nsCertOverrideService.h"
    1.43 +#include "nsRandomGenerator.h"
    1.44 +#include "nsSSLStatus.h"
    1.45 +#include "TransportSecurityInfo.h"
    1.46 +#include "NSSErrorsService.h"
    1.47 +#include "nsNSSVersion.h"
    1.48 +
    1.49 +#include "nsXULAppAPI.h"
    1.50 +
    1.51 +#include "PSMContentListener.h"
    1.52 +
    1.53 +#define NS_IS_PROCESS_DEFAULT                                                 \
    1.54 +    (GeckoProcessType_Default == XRE_GetProcessType())
    1.55 +
    1.56 +#define NS_NSS_INSTANTIATE(ensureOperator, _InstanceClass)                    \
    1.57 +    PR_BEGIN_MACRO                                                            \
    1.58 +        _InstanceClass * inst;                                                \
    1.59 +        inst = new _InstanceClass();                                          \
    1.60 +        NS_ADDREF(inst);                                                      \
    1.61 +        rv = inst->QueryInterface(aIID, aResult);                             \
    1.62 +        NS_RELEASE(inst);                                                     \
    1.63 +    PR_END_MACRO
    1.64 +
    1.65 +#define NS_NSS_INSTANTIATE_INIT(ensureOperator, _InstanceClass, _InitMethod)  \
    1.66 +    PR_BEGIN_MACRO                                                            \
    1.67 +        _InstanceClass * inst;                                                \
    1.68 +        inst = new _InstanceClass();                                          \
    1.69 +        NS_ADDREF(inst);                                                      \
    1.70 +        rv = inst->_InitMethod();                                             \
    1.71 +        if(NS_SUCCEEDED(rv)) {                                                \
    1.72 +            rv = inst->QueryInterface(aIID, aResult);                         \
    1.73 +        }                                                                     \
    1.74 +        NS_RELEASE(inst);                                                     \
    1.75 +   PR_END_MACRO
    1.76 +
    1.77 +
    1.78 +#define NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(ensureOperator,                    \
    1.79 +                                           _InstanceClass)                    \
    1.80 +   NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_BYPROCESS(ensureOperator,               \
    1.81 +                                                _InstanceClass,               \
    1.82 +                                                _InstanceClass)
    1.83 +
    1.84 +// These two macros are ripped off from nsIGenericFactory.h and slightly
    1.85 +// modified.
    1.86 +#define NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_BYPROCESS(ensureOperator,          \
    1.87 +                                                     _InstanceClassChrome,    \
    1.88 +                                                     _InstanceClassContent)   \
    1.89 +static nsresult                                                               \
    1.90 +_InstanceClassChrome##Constructor(nsISupports *aOuter, REFNSIID aIID,         \
    1.91 +                                  void **aResult)                             \
    1.92 +{                                                                             \
    1.93 +    nsresult rv;                                                              \
    1.94 +                                                                              \
    1.95 +    *aResult = nullptr;                                                          \
    1.96 +    if (nullptr != aOuter) {                                                     \
    1.97 +        rv = NS_ERROR_NO_AGGREGATION;                                         \
    1.98 +        return rv;                                                            \
    1.99 +    }                                                                         \
   1.100 +                                                                              \
   1.101 +    if (!EnsureNSSInitialized(ensureOperator))                                \
   1.102 +        return NS_ERROR_FAILURE;                                              \
   1.103 +                                                                              \
   1.104 +    if (NS_IS_PROCESS_DEFAULT)                                                \
   1.105 +        NS_NSS_INSTANTIATE(ensureOperator, _InstanceClassChrome);             \
   1.106 +    else                                                                      \
   1.107 +        NS_NSS_INSTANTIATE(ensureOperator, _InstanceClassContent);            \
   1.108 +                                                                              \
   1.109 +    if (ensureOperator == nssLoadingComponent)                                \
   1.110 +    {                                                                         \
   1.111 +        if (NS_SUCCEEDED(rv))                                                 \
   1.112 +            EnsureNSSInitialized(nssInitSucceeded);                           \
   1.113 +        else                                                                  \
   1.114 +            EnsureNSSInitialized(nssInitFailed);                              \
   1.115 +    }                                                                         \
   1.116 +                                                                              \
   1.117 +    return rv;                                                                \
   1.118 +}
   1.119 +
   1.120 + 
   1.121 +#define NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT(ensureOperator,               \
   1.122 +                                                _InstanceClass,               \
   1.123 +                                                _InitMethod)                  \
   1.124 +    NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT_BYPROCESS(ensureOperator,         \
   1.125 +                                                      _InstanceClass,         \
   1.126 +                                                      _InstanceClass,         \
   1.127 +                                                      _InitMethod)
   1.128 +
   1.129 +#define NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT_BYPROCESS(ensureOperator,     \
   1.130 +                                                _InstanceClassChrome,         \
   1.131 +                                                _InstanceClassContent,        \
   1.132 +                                                _InitMethod)                  \
   1.133 +static nsresult                                                               \
   1.134 +_InstanceClassChrome##Constructor(nsISupports *aOuter, REFNSIID aIID,         \
   1.135 +                                  void **aResult)                             \
   1.136 +{                                                                             \
   1.137 +    nsresult rv;                                                              \
   1.138 +                                                                              \
   1.139 +    *aResult = nullptr;                                                          \
   1.140 +    if (nullptr != aOuter) {                                                     \
   1.141 +        rv = NS_ERROR_NO_AGGREGATION;                                         \
   1.142 +        return rv;                                                            \
   1.143 +    }                                                                         \
   1.144 +                                                                              \
   1.145 +    if (!EnsureNSSInitialized(ensureOperator))                                \
   1.146 +        return NS_ERROR_FAILURE;                                              \
   1.147 +                                                                              \
   1.148 +    if (NS_IS_PROCESS_DEFAULT)                                                \
   1.149 +        NS_NSS_INSTANTIATE_INIT(ensureOperator,                               \
   1.150 +                                _InstanceClassChrome,                         \
   1.151 +                                _InitMethod);                                 \
   1.152 +    else                                                                      \
   1.153 +        NS_NSS_INSTANTIATE_INIT(ensureOperator,                               \
   1.154 +                                _InstanceClassContent,                        \
   1.155 +                                _InitMethod);                                 \
   1.156 +                                                                              \
   1.157 +    if (ensureOperator == nssLoadingComponent)                                \
   1.158 +    {                                                                         \
   1.159 +        if (NS_SUCCEEDED(rv))                                                 \
   1.160 +            EnsureNSSInitialized(nssInitSucceeded);                           \
   1.161 +        else                                                                  \
   1.162 +            EnsureNSSInitialized(nssInitFailed);                              \
   1.163 +    }                                                                         \
   1.164 +                                                                              \
   1.165 +    return rv;                                                                \
   1.166 +}
   1.167 +
   1.168 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nssLoadingComponent, nsNSSComponent,
   1.169 +                                        Init)
   1.170 +
   1.171 +using namespace mozilla::psm;
   1.172 +  
   1.173 +namespace {
   1.174 +
   1.175 +// Use the special factory constructor for everything this module implements,
   1.176 +// because all code could potentially require the NSS library.
   1.177 +// Our factory constructor takes an additional boolean parameter.
   1.178 +// Only for the nsNSSComponent, set this to true.
   1.179 +// All other classes must have this set to false.
   1.180 +
   1.181 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsSSLSocketProvider)
   1.182 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsTLSSocketProvider)
   1.183 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsSecretDecoderRing)
   1.184 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsPK11TokenDB)
   1.185 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsPKCS11ModuleDB)
   1.186 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nssEnsure, PSMContentListener, init)
   1.187 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_BYPROCESS(nssEnsureOnChromeOnly,
   1.188 +                                             nsNSSCertificate,
   1.189 +                                             nsNSSCertificateFakeTransport)
   1.190 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsNSSCertificateDB)
   1.191 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsNSSCertCache)
   1.192 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsNSSCertList)
   1.193 +#ifdef MOZ_XUL
   1.194 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCertTree)
   1.195 +#endif
   1.196 +#ifndef MOZ_DISABLE_CRYPTOLEGACY
   1.197 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCrypto)
   1.198 +#endif
   1.199 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsPkcs11)
   1.200 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCMSSecureMessage)
   1.201 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCMSDecoder)
   1.202 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCMSEncoder)
   1.203 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCMSMessage)
   1.204 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCertPicker)
   1.205 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nssEnsure, nsNTLMAuthModule, InitTest)
   1.206 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCryptoHash)
   1.207 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsCryptoHMAC)
   1.208 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsStreamCipher)
   1.209 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsKeyObject)
   1.210 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsKeyObjectFactory)
   1.211 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsDataSignatureVerifier)
   1.212 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nssEnsure, nsCertOverrideService, Init)
   1.213 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsure, nsRandomGenerator)
   1.214 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsureOnChromeOnly, nsSSLStatus)
   1.215 +NS_NSS_GENERIC_FACTORY_CONSTRUCTOR(nssEnsureOnChromeOnly, TransportSecurityInfo)
   1.216 +
   1.217 +typedef mozilla::psm::NSSErrorsService NSSErrorsService;
   1.218 +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NSSErrorsService, Init)
   1.219 +NS_GENERIC_FACTORY_CONSTRUCTOR(nsNSSVersion)
   1.220 +
   1.221 +NS_DEFINE_NAMED_CID(NS_NSSCOMPONENT_CID);
   1.222 +NS_DEFINE_NAMED_CID(NS_SSLSOCKETPROVIDER_CID);
   1.223 +NS_DEFINE_NAMED_CID(NS_STARTTLSSOCKETPROVIDER_CID);
   1.224 +NS_DEFINE_NAMED_CID(NS_SDR_CID);
   1.225 +NS_DEFINE_NAMED_CID(NS_PK11TOKENDB_CID);
   1.226 +NS_DEFINE_NAMED_CID(NS_PKCS11MODULEDB_CID);
   1.227 +NS_DEFINE_NAMED_CID(NS_PSMCONTENTLISTEN_CID);
   1.228 +NS_DEFINE_NAMED_CID(NS_X509CERT_CID);
   1.229 +NS_DEFINE_NAMED_CID(NS_X509CERTDB_CID);
   1.230 +NS_DEFINE_NAMED_CID(NS_X509CERTLIST_CID);
   1.231 +NS_DEFINE_NAMED_CID(NS_NSSCERTCACHE_CID);
   1.232 +NS_DEFINE_NAMED_CID(NS_FORMPROCESSOR_CID);
   1.233 +#ifdef MOZ_XUL
   1.234 +NS_DEFINE_NAMED_CID(NS_CERTTREE_CID);
   1.235 +#endif
   1.236 +NS_DEFINE_NAMED_CID(NS_PKCS11_CID);
   1.237 +#ifndef MOZ_DISABLE_CRYPTOLEGACY
   1.238 +NS_DEFINE_NAMED_CID(NS_CRYPTO_CID);
   1.239 +#endif
   1.240 +NS_DEFINE_NAMED_CID(NS_CMSSECUREMESSAGE_CID);
   1.241 +NS_DEFINE_NAMED_CID(NS_CMSDECODER_CID);
   1.242 +NS_DEFINE_NAMED_CID(NS_CMSENCODER_CID);
   1.243 +NS_DEFINE_NAMED_CID(NS_CMSMESSAGE_CID);
   1.244 +NS_DEFINE_NAMED_CID(NS_CRYPTO_HASH_CID);
   1.245 +NS_DEFINE_NAMED_CID(NS_CRYPTO_HMAC_CID);
   1.246 +NS_DEFINE_NAMED_CID(NS_CERT_PICKER_CID);
   1.247 +NS_DEFINE_NAMED_CID(NS_NTLMAUTHMODULE_CID);
   1.248 +NS_DEFINE_NAMED_CID(NS_STREAMCIPHER_CID);
   1.249 +NS_DEFINE_NAMED_CID(NS_KEYMODULEOBJECT_CID);
   1.250 +NS_DEFINE_NAMED_CID(NS_KEYMODULEOBJECTFACTORY_CID);
   1.251 +NS_DEFINE_NAMED_CID(NS_DATASIGNATUREVERIFIER_CID);
   1.252 +NS_DEFINE_NAMED_CID(NS_CERTOVERRIDE_CID);
   1.253 +NS_DEFINE_NAMED_CID(NS_RANDOMGENERATOR_CID);
   1.254 +NS_DEFINE_NAMED_CID(NS_SSLSTATUS_CID);
   1.255 +NS_DEFINE_NAMED_CID(TRANSPORTSECURITYINFO_CID);
   1.256 +NS_DEFINE_NAMED_CID(NS_NSSERRORSSERVICE_CID);
   1.257 +NS_DEFINE_NAMED_CID(NS_NSSVERSION_CID);
   1.258 +
   1.259 +static const mozilla::Module::CIDEntry kNSSCIDs[] = {
   1.260 +  { &kNS_NSSCOMPONENT_CID, false, nullptr, nsNSSComponentConstructor },
   1.261 +  { &kNS_SSLSOCKETPROVIDER_CID, false, nullptr, nsSSLSocketProviderConstructor },
   1.262 +  { &kNS_STARTTLSSOCKETPROVIDER_CID, false, nullptr, nsTLSSocketProviderConstructor },
   1.263 +  { &kNS_SDR_CID, false, nullptr, nsSecretDecoderRingConstructor },
   1.264 +  { &kNS_PK11TOKENDB_CID, false, nullptr, nsPK11TokenDBConstructor },
   1.265 +  { &kNS_PKCS11MODULEDB_CID, false, nullptr, nsPKCS11ModuleDBConstructor },
   1.266 +  { &kNS_PSMCONTENTLISTEN_CID, false, nullptr, PSMContentListenerConstructor },
   1.267 +  { &kNS_X509CERT_CID, false, nullptr, nsNSSCertificateConstructor },
   1.268 +  { &kNS_X509CERTDB_CID, false, nullptr, nsNSSCertificateDBConstructor },
   1.269 +  { &kNS_X509CERTLIST_CID, false, nullptr, nsNSSCertListConstructor },
   1.270 +  { &kNS_NSSCERTCACHE_CID, false, nullptr, nsNSSCertCacheConstructor },
   1.271 +  { &kNS_FORMPROCESSOR_CID, false, nullptr, nsKeygenFormProcessor::Create },
   1.272 +#ifdef MOZ_XUL
   1.273 +  { &kNS_CERTTREE_CID, false, nullptr, nsCertTreeConstructor },
   1.274 +#endif
   1.275 +  { &kNS_PKCS11_CID, false, nullptr, nsPkcs11Constructor },
   1.276 +#ifndef MOZ_DISABLE_CRYPTOLEGACY
   1.277 +  { &kNS_CRYPTO_CID, false, nullptr, nsCryptoConstructor },
   1.278 +#endif
   1.279 +  { &kNS_CMSSECUREMESSAGE_CID, false, nullptr, nsCMSSecureMessageConstructor },
   1.280 +  { &kNS_CMSDECODER_CID, false, nullptr, nsCMSDecoderConstructor },
   1.281 +  { &kNS_CMSENCODER_CID, false, nullptr, nsCMSEncoderConstructor },
   1.282 +  { &kNS_CMSMESSAGE_CID, false, nullptr, nsCMSMessageConstructor },
   1.283 +  { &kNS_CRYPTO_HASH_CID, false, nullptr, nsCryptoHashConstructor },
   1.284 +  { &kNS_CRYPTO_HMAC_CID, false, nullptr, nsCryptoHMACConstructor },
   1.285 +  { &kNS_CERT_PICKER_CID, false, nullptr, nsCertPickerConstructor },
   1.286 +  { &kNS_NTLMAUTHMODULE_CID, false, nullptr, nsNTLMAuthModuleConstructor },
   1.287 +  { &kNS_STREAMCIPHER_CID, false, nullptr, nsStreamCipherConstructor },
   1.288 +  { &kNS_KEYMODULEOBJECT_CID, false, nullptr, nsKeyObjectConstructor },
   1.289 +  { &kNS_KEYMODULEOBJECTFACTORY_CID, false, nullptr, nsKeyObjectFactoryConstructor },
   1.290 +  { &kNS_DATASIGNATUREVERIFIER_CID, false, nullptr, nsDataSignatureVerifierConstructor },
   1.291 +  { &kNS_CERTOVERRIDE_CID, false, nullptr, nsCertOverrideServiceConstructor },
   1.292 +  { &kNS_RANDOMGENERATOR_CID, false, nullptr, nsRandomGeneratorConstructor },
   1.293 +  { &kNS_SSLSTATUS_CID, false, nullptr, nsSSLStatusConstructor },
   1.294 +  { &kTRANSPORTSECURITYINFO_CID, false, nullptr, TransportSecurityInfoConstructor },
   1.295 +  { &kNS_NSSERRORSSERVICE_CID, false, nullptr, NSSErrorsServiceConstructor },
   1.296 +  { &kNS_NSSVERSION_CID, false, nullptr, nsNSSVersionConstructor },
   1.297 +  { nullptr }
   1.298 +};
   1.299 +
   1.300 +static const mozilla::Module::ContractIDEntry kNSSContracts[] = {
   1.301 +  { PSM_COMPONENT_CONTRACTID, &kNS_NSSCOMPONENT_CID },
   1.302 +  { NS_NSS_ERRORS_SERVICE_CONTRACTID, &kNS_NSSERRORSSERVICE_CID },
   1.303 +  { NS_NSSVERSION_CONTRACTID, &kNS_NSSVERSION_CID },
   1.304 +  { NS_SSLSOCKETPROVIDER_CONTRACTID, &kNS_SSLSOCKETPROVIDER_CID },
   1.305 +  { NS_STARTTLSSOCKETPROVIDER_CONTRACTID, &kNS_STARTTLSSOCKETPROVIDER_CID },
   1.306 +  { NS_SDR_CONTRACTID, &kNS_SDR_CID },
   1.307 +  { NS_PK11TOKENDB_CONTRACTID, &kNS_PK11TOKENDB_CID },
   1.308 +  { NS_PKCS11MODULEDB_CONTRACTID, &kNS_PKCS11MODULEDB_CID },
   1.309 +  { NS_PSMCONTENTLISTEN_CONTRACTID, &kNS_PSMCONTENTLISTEN_CID },
   1.310 +  { NS_X509CERTDB_CONTRACTID, &kNS_X509CERTDB_CID },
   1.311 +  { NS_X509CERTLIST_CONTRACTID, &kNS_X509CERTLIST_CID },
   1.312 +  { NS_NSSCERTCACHE_CONTRACTID, &kNS_NSSCERTCACHE_CID },
   1.313 +  { NS_FORMPROCESSOR_CONTRACTID, &kNS_FORMPROCESSOR_CID },
   1.314 +#ifdef MOZ_XUL
   1.315 +  { NS_CERTTREE_CONTRACTID, &kNS_CERTTREE_CID },
   1.316 +#endif
   1.317 +  { NS_PKCS11_CONTRACTID, &kNS_PKCS11_CID },
   1.318 +#ifndef MOZ_DISABLE_CRYPTOLEGACY
   1.319 +  { NS_CRYPTO_CONTRACTID, &kNS_CRYPTO_CID },
   1.320 +#endif
   1.321 +  { NS_CMSSECUREMESSAGE_CONTRACTID, &kNS_CMSSECUREMESSAGE_CID },
   1.322 +  { NS_CMSDECODER_CONTRACTID, &kNS_CMSDECODER_CID },
   1.323 +  { NS_CMSENCODER_CONTRACTID, &kNS_CMSENCODER_CID },
   1.324 +  { NS_CMSMESSAGE_CONTRACTID, &kNS_CMSMESSAGE_CID },
   1.325 +  { NS_CRYPTO_HASH_CONTRACTID, &kNS_CRYPTO_HASH_CID },
   1.326 +  { NS_CRYPTO_HMAC_CONTRACTID, &kNS_CRYPTO_HMAC_CID },
   1.327 +  { NS_CERT_PICKER_CONTRACTID, &kNS_CERT_PICKER_CID },
   1.328 +  { "@mozilla.org/uriloader/psm-external-content-listener;1", &kNS_PSMCONTENTLISTEN_CID },
   1.329 +  { NS_CRYPTO_FIPSINFO_SERVICE_CONTRACTID, &kNS_PKCS11MODULEDB_CID },
   1.330 +  { NS_NTLMAUTHMODULE_CONTRACTID, &kNS_NTLMAUTHMODULE_CID },
   1.331 +  { NS_STREAMCIPHER_CONTRACTID, &kNS_STREAMCIPHER_CID },
   1.332 +  { NS_KEYMODULEOBJECT_CONTRACTID, &kNS_KEYMODULEOBJECT_CID },
   1.333 +  { NS_KEYMODULEOBJECTFACTORY_CONTRACTID, &kNS_KEYMODULEOBJECTFACTORY_CID },
   1.334 +  { NS_DATASIGNATUREVERIFIER_CONTRACTID, &kNS_DATASIGNATUREVERIFIER_CID },
   1.335 +  { NS_CERTOVERRIDE_CONTRACTID, &kNS_CERTOVERRIDE_CID },
   1.336 +  { NS_RANDOMGENERATOR_CONTRACTID, &kNS_RANDOMGENERATOR_CID },
   1.337 +  { nullptr }
   1.338 +};
   1.339 +
   1.340 +static const mozilla::Module::CategoryEntry kNSSCategories[] = {
   1.341 +  { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-ca-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" },
   1.342 +  { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-server-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" },
   1.343 +  { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-user-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" },
   1.344 +  { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-email-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" },
   1.345 +  { nullptr }
   1.346 +};
   1.347 +
   1.348 +static const mozilla::Module kNSSModule = {
   1.349 +  mozilla::Module::kVersion,
   1.350 +  kNSSCIDs,
   1.351 +  kNSSContracts,
   1.352 +  kNSSCategories
   1.353 +};
   1.354 +
   1.355 +} // unnamed namespace
   1.356 +
   1.357 +NSMODULE_DEFN(NSS) = &kNSSModule;

mercurial