/src/mozilla-central/security/manager/ssl/nsNSSModule.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- |
2 | | * |
3 | | * This Source Code Form is subject to the terms of the Mozilla Public |
4 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
5 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | #include "CertBlocklist.h" |
8 | | #include "ContentSignatureVerifier.h" |
9 | | #include "NSSErrorsService.h" |
10 | | #include "PKCS11ModuleDB.h" |
11 | | #include "PSMContentListener.h" |
12 | | #include "SecretDecoderRing.h" |
13 | | #include "TransportSecurityInfo.h" |
14 | | #include "mozilla/ModuleUtils.h" |
15 | | #include "mozilla/SyncRunnable.h" |
16 | | #include "nsCURILoader.h" |
17 | | #include "nsCertOverrideService.h" |
18 | | #include "nsCryptoHash.h" |
19 | | #include "nsICategoryManager.h" |
20 | | #include "nsKeyModule.h" |
21 | | #include "nsKeygenHandler.h" |
22 | | #include "nsNSSCertificate.h" |
23 | | #include "nsNSSCertificateDB.h" |
24 | | #include "nsNSSComponent.h" |
25 | | #include "nsNSSVersion.h" |
26 | | #include "nsNTLMAuthModule.h" |
27 | | #include "nsNetCID.h" |
28 | | #include "nsPK11TokenDB.h" |
29 | | #include "nsPKCS11Slot.h" |
30 | | #include "nsRandomGenerator.h" |
31 | | #include "nsSSLSocketProvider.h" |
32 | | #include "nsSecureBrowserUIImpl.h" |
33 | | #include "nsSiteSecurityService.h" |
34 | | #include "nsTLSSocketProvider.h" |
35 | | #include "nsXULAppAPI.h" |
36 | | #include "OSKeyStore.h" |
37 | | |
38 | | #ifdef MOZ_XUL |
39 | | #include "nsCertTree.h" |
40 | | #endif |
41 | | |
42 | | namespace mozilla { namespace psm { |
43 | | |
44 | | // Many of the implementations in this module call NSS functions and as a result |
45 | | // require that PSM has successfully initialized NSS before being used. |
46 | | // Additionally, some of the implementations have various restrictions on which |
47 | | // process and threads they can be used on (e.g. some can only be used in the |
48 | | // parent process and some must be initialized only on the main thread). |
49 | | // The following initialization framework allows these requirements to be |
50 | | // succinctly expressed and implemented. |
51 | | |
52 | | template<class InstanceClass, nsresult (InstanceClass::*InitMethod)()> |
53 | | MOZ_ALWAYS_INLINE static nsresult |
54 | | Instantiate(REFNSIID aIID, void** aResult) |
55 | 0 | { |
56 | 0 | InstanceClass* inst = new InstanceClass(); |
57 | 0 | NS_ADDREF(inst); |
58 | 0 | nsresult rv = InitMethod != nullptr ? (inst->*InitMethod)() : NS_OK; |
59 | 0 | if (NS_SUCCEEDED(rv)) { |
60 | 0 | rv = inst->QueryInterface(aIID, aResult); |
61 | 0 | } |
62 | 0 | NS_RELEASE(inst); |
63 | 0 | return rv; |
64 | 0 | } Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsSSLSocketProvider, (nsresult (nsSSLSocketProvider::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsTLSSocketProvider, (nsresult (nsTLSSocketProvider::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<SecretDecoderRing, (nsresult (SecretDecoderRing::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsPK11TokenDB, (nsresult (nsPK11TokenDB::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<mozilla::psm::PKCS11ModuleDB, (nsresult (mozilla::psm::PKCS11ModuleDB::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsNSSCertificate, (nsresult (nsNSSCertificate::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsNSSCertificateDB, (nsresult (nsNSSCertificateDB::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsNSSCertList, (nsresult (nsNSSCertList::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsCertTree, (nsresult (nsCertTree::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsCryptoHash, (nsresult (nsCryptoHash::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsCryptoHMAC, (nsresult (nsCryptoHMAC::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsNTLMAuthModule, &nsNTLMAuthModule::InitTest>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsKeyObject, (nsresult (nsKeyObject::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsKeyObjectFactory, (nsresult (nsKeyObjectFactory::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<ContentSignatureVerifier, (nsresult (ContentSignatureVerifier::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsCertOverrideService, &nsCertOverrideService::Init>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsRandomGenerator, (nsresult (nsRandomGenerator::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<mozilla::psm::TransportSecurityInfo, (nsresult (mozilla::psm::TransportSecurityInfo::*)())0>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<nsSiteSecurityService, &nsSiteSecurityService::Init>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<CertBlocklist, &CertBlocklist::Init>(nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Instantiate<OSKeyStore, (nsresult (OSKeyStore::*)())0>(nsID const&, void**) |
65 | | |
66 | | enum class ThreadRestriction { |
67 | | // must be initialized on the main thread (but can be used on any thread) |
68 | | MainThreadOnly, |
69 | | // can be initialized and used on any thread |
70 | | AnyThread, |
71 | | }; |
72 | | |
73 | | enum class ProcessRestriction { |
74 | | ParentProcessOnly, |
75 | | AnyProcess, |
76 | | }; |
77 | | |
78 | | template<class InstanceClass, nsresult (InstanceClass::*InitMethod)() = nullptr, |
79 | | ProcessRestriction processRestriction = ProcessRestriction::ParentProcessOnly, |
80 | | ThreadRestriction threadRestriction = ThreadRestriction::AnyThread> |
81 | | static nsresult |
82 | | Constructor(nsISupports* aOuter, REFNSIID aIID, void** aResult) |
83 | 0 | { |
84 | 0 | *aResult = nullptr; |
85 | 0 | if (aOuter != nullptr) { |
86 | 0 | return NS_ERROR_NO_AGGREGATION; |
87 | 0 | } |
88 | 0 | |
89 | 0 | if (processRestriction == ProcessRestriction::ParentProcessOnly && |
90 | 0 | !XRE_IsParentProcess()) { |
91 | 0 | return NS_ERROR_NOT_AVAILABLE; |
92 | 0 | } |
93 | 0 | |
94 | 0 | if (!EnsureNSSInitializedChromeOrContent()) { |
95 | 0 | return NS_ERROR_FAILURE; |
96 | 0 | } |
97 | 0 | |
98 | 0 | if (threadRestriction == ThreadRestriction::MainThreadOnly && |
99 | 0 | !NS_IsMainThread()) { |
100 | 0 |
|
101 | 0 | nsCOMPtr<nsIThread> mainThread; |
102 | 0 | nsresult rv = NS_GetMainThread(getter_AddRefs(mainThread)); |
103 | 0 | if (NS_FAILED(rv)) { |
104 | 0 | return rv; |
105 | 0 | } |
106 | 0 | |
107 | 0 | // Forward to the main thread synchronously. |
108 | 0 | mozilla::SyncRunnable::DispatchToThread( |
109 | 0 | mainThread, |
110 | 0 | new SyncRunnable(NS_NewRunnableFunction("psm::Constructor", [&]() { |
111 | 0 | rv = Instantiate<InstanceClass, InitMethod>(aIID, aResult); |
112 | 0 | }))); Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsCertOverrideService, &nsCertOverrideService::Init, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**)::{lambda()#1}::operator()() const Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsSiteSecurityService, &nsSiteSecurityService::Init, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**)::{lambda()#1}::operator()() const Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<CertBlocklist, &CertBlocklist::Init, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**)::{lambda()#1}::operator()() const Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<OSKeyStore, (nsresult (OSKeyStore::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**)::{lambda()#1}::operator()() const |
113 | 0 |
|
114 | 0 | return rv; |
115 | 0 | } |
116 | 0 |
|
117 | 0 | return Instantiate<InstanceClass, InitMethod>(aIID, aResult); |
118 | 0 | } Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsSSLSocketProvider, (nsresult (nsSSLSocketProvider::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsTLSSocketProvider, (nsresult (nsTLSSocketProvider::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<SecretDecoderRing, (nsresult (SecretDecoderRing::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsPK11TokenDB, (nsresult (nsPK11TokenDB::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<mozilla::psm::PKCS11ModuleDB, (nsresult (mozilla::psm::PKCS11ModuleDB::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsNSSCertificate, (nsresult (nsNSSCertificate::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsNSSCertificateDB, (nsresult (nsNSSCertificateDB::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsNSSCertList, (nsresult (nsNSSCertList::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsCertTree, (nsresult (nsCertTree::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsCryptoHash, (nsresult (nsCryptoHash::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsCryptoHMAC, (nsresult (nsCryptoHMAC::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsNTLMAuthModule, &nsNTLMAuthModule::InitTest, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsKeyObject, (nsresult (nsKeyObject::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsKeyObjectFactory, (nsresult (nsKeyObjectFactory::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<ContentSignatureVerifier, (nsresult (ContentSignatureVerifier::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsCertOverrideService, &nsCertOverrideService::Init, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsRandomGenerator, (nsresult (nsRandomGenerator::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<mozilla::psm::TransportSecurityInfo, (nsresult (mozilla::psm::TransportSecurityInfo::*)())0, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)1>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<nsSiteSecurityService, &nsSiteSecurityService::Init, (mozilla::psm::ProcessRestriction)1, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<CertBlocklist, &CertBlocklist::Init, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**) Unexecuted instantiation: Unified_cpp_security_manager_ssl2.cpp:nsresult mozilla::psm::Constructor<OSKeyStore, (nsresult (OSKeyStore::*)())0, (mozilla::psm::ProcessRestriction)0, (mozilla::psm::ThreadRestriction)0>(nsISupports*, nsID const&, void**) |
119 | | |
120 | | } } // namespace mozilla::psm |
121 | | |
122 | | using namespace mozilla::psm; |
123 | | |
124 | | namespace { |
125 | | |
126 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(PSMContentListener, init) |
127 | | |
128 | | typedef mozilla::psm::NSSErrorsService NSSErrorsService; |
129 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(NSSErrorsService, Init) |
130 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsNSSVersion) |
131 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsSecureBrowserUIImpl) |
132 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsNSSComponent, Init) |
133 | | |
134 | | NS_DEFINE_NAMED_CID(NS_NSSCOMPONENT_CID); |
135 | | NS_DEFINE_NAMED_CID(NS_SSLSOCKETPROVIDER_CID); |
136 | | NS_DEFINE_NAMED_CID(NS_STARTTLSSOCKETPROVIDER_CID); |
137 | | NS_DEFINE_NAMED_CID(NS_SECRETDECODERRING_CID); |
138 | | NS_DEFINE_NAMED_CID(NS_PK11TOKENDB_CID); |
139 | | NS_DEFINE_NAMED_CID(NS_PKCS11MODULEDB_CID); |
140 | | NS_DEFINE_NAMED_CID(NS_PSMCONTENTLISTEN_CID); |
141 | | NS_DEFINE_NAMED_CID(NS_X509CERT_CID); |
142 | | NS_DEFINE_NAMED_CID(NS_X509CERTDB_CID); |
143 | | NS_DEFINE_NAMED_CID(NS_X509CERTLIST_CID); |
144 | | NS_DEFINE_NAMED_CID(NS_FORMPROCESSOR_CID); |
145 | | #ifdef MOZ_XUL |
146 | | NS_DEFINE_NAMED_CID(NS_CERTTREE_CID); |
147 | | #endif |
148 | | NS_DEFINE_NAMED_CID(NS_CRYPTO_HASH_CID); |
149 | | NS_DEFINE_NAMED_CID(NS_CRYPTO_HMAC_CID); |
150 | | NS_DEFINE_NAMED_CID(NS_NTLMAUTHMODULE_CID); |
151 | | NS_DEFINE_NAMED_CID(NS_KEYMODULEOBJECT_CID); |
152 | | NS_DEFINE_NAMED_CID(NS_KEYMODULEOBJECTFACTORY_CID); |
153 | | NS_DEFINE_NAMED_CID(NS_CONTENTSIGNATUREVERIFIER_CID); |
154 | | NS_DEFINE_NAMED_CID(NS_CERTOVERRIDE_CID); |
155 | | NS_DEFINE_NAMED_CID(NS_RANDOMGENERATOR_CID); |
156 | | NS_DEFINE_NAMED_CID(TRANSPORTSECURITYINFO_CID); |
157 | | NS_DEFINE_NAMED_CID(NS_NSSERRORSSERVICE_CID); |
158 | | NS_DEFINE_NAMED_CID(NS_NSSVERSION_CID); |
159 | | NS_DEFINE_NAMED_CID(NS_SECURE_BROWSER_UI_CID); |
160 | | NS_DEFINE_NAMED_CID(NS_SITE_SECURITY_SERVICE_CID); |
161 | | NS_DEFINE_NAMED_CID(NS_CERT_BLOCKLIST_CID); |
162 | | NS_DEFINE_NAMED_CID(NS_OSKEYSTORE_CID); |
163 | | |
164 | | // Components that require main thread initialization could cause a deadlock |
165 | | // in necko code (bug 1418752). To prevent it we initialize all such components |
166 | | // on main thread in advance in net_EnsurePSMInit(). Update that function when |
167 | | // new component with ThreadRestriction::MainThreadOnly is added. |
168 | | static const mozilla::Module::CIDEntry kNSSCIDs[] = { |
169 | | { &kNS_NSSCOMPONENT_CID, false, nullptr, nsNSSComponentConstructor }, |
170 | | { &kNS_SSLSOCKETPROVIDER_CID, false, nullptr, |
171 | | Constructor<nsSSLSocketProvider> }, |
172 | | { &kNS_STARTTLSSOCKETPROVIDER_CID, false, nullptr, |
173 | | Constructor<nsTLSSocketProvider> }, |
174 | | { &kNS_SECRETDECODERRING_CID, false, nullptr, |
175 | | Constructor<SecretDecoderRing> }, |
176 | | { &kNS_PK11TOKENDB_CID, false, nullptr, Constructor<nsPK11TokenDB> }, |
177 | | { &kNS_PKCS11MODULEDB_CID, false, nullptr, Constructor<PKCS11ModuleDB> }, |
178 | | { &kNS_PSMCONTENTLISTEN_CID, false, nullptr, PSMContentListenerConstructor }, |
179 | | { &kNS_X509CERT_CID, false, nullptr, |
180 | | Constructor<nsNSSCertificate, nullptr, ProcessRestriction::AnyProcess> }, |
181 | | { &kNS_X509CERTDB_CID, false, nullptr, Constructor<nsNSSCertificateDB> }, |
182 | | { &kNS_X509CERTLIST_CID, false, nullptr, |
183 | | Constructor<nsNSSCertList, nullptr, ProcessRestriction::AnyProcess> }, |
184 | | { &kNS_FORMPROCESSOR_CID, false, nullptr, nsKeygenFormProcessor::Create }, |
185 | | #ifdef MOZ_XUL |
186 | | { &kNS_CERTTREE_CID, false, nullptr, Constructor<nsCertTree> }, |
187 | | #endif |
188 | | { &kNS_CRYPTO_HASH_CID, false, nullptr, |
189 | | Constructor<nsCryptoHash, nullptr, ProcessRestriction::AnyProcess> }, |
190 | | { &kNS_CRYPTO_HMAC_CID, false, nullptr, |
191 | | Constructor<nsCryptoHMAC, nullptr, ProcessRestriction::AnyProcess> }, |
192 | | { &kNS_NTLMAUTHMODULE_CID, false, nullptr, |
193 | | Constructor<nsNTLMAuthModule, &nsNTLMAuthModule::InitTest> }, |
194 | | { &kNS_KEYMODULEOBJECT_CID, false, nullptr, |
195 | | Constructor<nsKeyObject, nullptr, ProcessRestriction::AnyProcess> }, |
196 | | { &kNS_KEYMODULEOBJECTFACTORY_CID, false, nullptr, |
197 | | Constructor<nsKeyObjectFactory, nullptr, ProcessRestriction::AnyProcess> }, |
198 | | { &kNS_CONTENTSIGNATUREVERIFIER_CID, false, nullptr, |
199 | | Constructor<ContentSignatureVerifier> }, |
200 | | { &kNS_CERTOVERRIDE_CID, false, nullptr, |
201 | | Constructor<nsCertOverrideService, &nsCertOverrideService::Init, |
202 | | ProcessRestriction::ParentProcessOnly, |
203 | | ThreadRestriction::MainThreadOnly> }, |
204 | | { &kNS_RANDOMGENERATOR_CID, false, nullptr, |
205 | | Constructor<nsRandomGenerator, nullptr, ProcessRestriction::AnyProcess> }, |
206 | | { &kTRANSPORTSECURITYINFO_CID, false, nullptr, |
207 | | Constructor<TransportSecurityInfo, nullptr, |
208 | | ProcessRestriction::AnyProcess> }, |
209 | | { &kNS_NSSERRORSSERVICE_CID, false, nullptr, NSSErrorsServiceConstructor }, |
210 | | { &kNS_NSSVERSION_CID, false, nullptr, nsNSSVersionConstructor }, |
211 | | { &kNS_SECURE_BROWSER_UI_CID, false, nullptr, nsSecureBrowserUIImplConstructor }, |
212 | | { &kNS_SITE_SECURITY_SERVICE_CID, false, nullptr, |
213 | | Constructor<nsSiteSecurityService, &nsSiteSecurityService::Init, |
214 | | ProcessRestriction::AnyProcess, |
215 | | ThreadRestriction::MainThreadOnly> }, |
216 | | { &kNS_CERT_BLOCKLIST_CID, false, nullptr, |
217 | | Constructor<CertBlocklist, &CertBlocklist::Init, |
218 | | ProcessRestriction::ParentProcessOnly, |
219 | | ThreadRestriction::MainThreadOnly> }, |
220 | | { &kNS_OSKEYSTORE_CID, false, nullptr, Constructor<OSKeyStore, |
221 | | nullptr, |
222 | | ProcessRestriction::ParentProcessOnly, |
223 | | ThreadRestriction::MainThreadOnly> }, |
224 | | { nullptr } |
225 | | }; |
226 | | |
227 | | static const mozilla::Module::ContractIDEntry kNSSContracts[] = { |
228 | | { PSM_COMPONENT_CONTRACTID, &kNS_NSSCOMPONENT_CID }, |
229 | | { NS_NSS_ERRORS_SERVICE_CONTRACTID, &kNS_NSSERRORSSERVICE_CID }, |
230 | | { NS_NSSVERSION_CONTRACTID, &kNS_NSSVERSION_CID }, |
231 | | { NS_SSLSOCKETPROVIDER_CONTRACTID, &kNS_SSLSOCKETPROVIDER_CID }, |
232 | | { NS_STARTTLSSOCKETPROVIDER_CONTRACTID, &kNS_STARTTLSSOCKETPROVIDER_CID }, |
233 | | { NS_SECRETDECODERRING_CONTRACTID, &kNS_SECRETDECODERRING_CID }, |
234 | | { NS_PK11TOKENDB_CONTRACTID, &kNS_PK11TOKENDB_CID }, |
235 | | { NS_PKCS11MODULEDB_CONTRACTID, &kNS_PKCS11MODULEDB_CID }, |
236 | | { NS_PSMCONTENTLISTEN_CONTRACTID, &kNS_PSMCONTENTLISTEN_CID }, |
237 | | { NS_X509CERTDB_CONTRACTID, &kNS_X509CERTDB_CID }, |
238 | | { NS_X509CERTLIST_CONTRACTID, &kNS_X509CERTLIST_CID }, |
239 | | { NS_FORMPROCESSOR_CONTRACTID, &kNS_FORMPROCESSOR_CID }, |
240 | | #ifdef MOZ_XUL |
241 | | { NS_CERTTREE_CONTRACTID, &kNS_CERTTREE_CID }, |
242 | | #endif |
243 | | { NS_CRYPTO_HASH_CONTRACTID, &kNS_CRYPTO_HASH_CID }, |
244 | | { NS_CRYPTO_HMAC_CONTRACTID, &kNS_CRYPTO_HMAC_CID }, |
245 | | { "@mozilla.org/uriloader/psm-external-content-listener;1", &kNS_PSMCONTENTLISTEN_CID }, |
246 | | { NS_NTLMAUTHMODULE_CONTRACTID, &kNS_NTLMAUTHMODULE_CID }, |
247 | | { NS_KEYMODULEOBJECT_CONTRACTID, &kNS_KEYMODULEOBJECT_CID }, |
248 | | { NS_KEYMODULEOBJECTFACTORY_CONTRACTID, &kNS_KEYMODULEOBJECTFACTORY_CID }, |
249 | | { NS_CONTENTSIGNATUREVERIFIER_CONTRACTID, &kNS_CONTENTSIGNATUREVERIFIER_CID }, |
250 | | { NS_CERTOVERRIDE_CONTRACTID, &kNS_CERTOVERRIDE_CID }, |
251 | | { NS_RANDOMGENERATOR_CONTRACTID, &kNS_RANDOMGENERATOR_CID }, |
252 | | { NS_SECURE_BROWSER_UI_CONTRACTID, &kNS_SECURE_BROWSER_UI_CID }, |
253 | | { NS_SSSERVICE_CONTRACTID, &kNS_SITE_SECURITY_SERVICE_CID }, |
254 | | { NS_CERTBLOCKLIST_CONTRACTID, &kNS_CERT_BLOCKLIST_CID }, |
255 | | { NS_OSKEYSTORE_CONTRACTID, &kNS_OSKEYSTORE_CID}, |
256 | | { nullptr } |
257 | | }; |
258 | | |
259 | | static const mozilla::Module::CategoryEntry kNSSCategories[] = { |
260 | | { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-ca-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" }, |
261 | | { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-server-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" }, |
262 | | { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-user-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" }, |
263 | | { NS_CONTENT_LISTENER_CATEGORYMANAGER_ENTRY, "application/x-x509-email-cert", "@mozilla.org/uriloader/psm-external-content-listener;1" }, |
264 | | { nullptr } |
265 | | }; |
266 | | |
267 | | static const mozilla::Module kNSSModule = { |
268 | | mozilla::Module::kVersion, |
269 | | kNSSCIDs, |
270 | | kNSSContracts, |
271 | | kNSSCategories |
272 | | }; |
273 | | |
274 | | } // unnamed namespace |
275 | | |
276 | | NSMODULE_DEFN(NSS) = &kNSSModule; |