Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: nss/lib/libpkix/pkix/top/pkix_lifecycle.c

Issue 2078763002: Delete bundled copy of NSS and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss@master
Patch Set: Delete bundled copy of NSS and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « nss/lib/libpkix/pkix/top/pkix_lifecycle.h ('k') | nss/lib/libpkix/pkix/top/pkix_validate.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 * pkix_lifecycle.c
6 *
7 * Top level initialize and shutdown functions
8 *
9 */
10
11 #include "pkix_lifecycle.h"
12
13 static PKIX_Boolean pkixIsInitialized;
14
15 /* Lock used by Logger - is reentrant by the same thread */
16 extern PKIX_PL_MonitorLock *pkixLoggerLock;
17
18 /*
19 * Following pkix_* variables are for debugging purpose. They should be taken
20 * out eventually. The purpose is to verify cache tables usage (via debugger).
21 */
22 int pkix_ccAddCount = 0;
23 int pkix_ccLookupCount = 0;
24 int pkix_ccRemoveCount = 0;
25 int pkix_cAddCount = 0;
26 int pkix_cLookupCount = 0;
27 int pkix_cRemoveCount = 0;
28 int pkix_ceAddCount = 0;
29 int pkix_ceLookupCount = 0;
30
31 PKIX_PL_HashTable *cachedCrlSigTable = NULL;
32 PKIX_PL_HashTable *cachedCertSigTable = NULL;
33 PKIX_PL_HashTable *cachedCertChainTable = NULL;
34 PKIX_PL_HashTable *cachedCertTable = NULL;
35 PKIX_PL_HashTable *cachedCrlEntryTable = NULL;
36 PKIX_PL_HashTable *aiaConnectionCache = NULL;
37 PKIX_PL_HashTable *httpSocketCache = NULL;
38
39 extern PKIX_List *pkixLoggers;
40 extern PKIX_List *pkixLoggersErrors;
41 extern PKIX_List *pkixLoggersDebugTrace;
42
43 /* --Public-Functions--------------------------------------------- */
44
45 /*
46 * FUNCTION: PKIX_Initialize (see comments in pkix.h)
47 */
48 PKIX_Error *
49 PKIX_Initialize(
50 PKIX_Boolean platformInitNeeded,
51 PKIX_UInt32 desiredMajorVersion,
52 PKIX_UInt32 minDesiredMinorVersion,
53 PKIX_UInt32 maxDesiredMinorVersion,
54 PKIX_UInt32 *pActualMinorVersion,
55 void **pPlContext)
56 {
57 void *plContext = NULL;
58
59 PKIX_ENTER(LIFECYCLE, "PKIX_Initialize");
60 PKIX_NULLCHECK_ONE(pPlContext);
61
62 /*
63 * If we are called a second time other than in the situation handled
64 * above, we return a positive status.
65 */
66 if (pkixIsInitialized){
67 /* Already initialized */
68 PKIX_RETURN(LIFECYCLE);
69 }
70
71 PKIX_CHECK(PKIX_PL_Initialize
72 (platformInitNeeded, PKIX_FALSE, &plContext),
73 PKIX_INITIALIZEFAILED);
74
75 *pPlContext = plContext;
76
77 if (desiredMajorVersion != PKIX_MAJOR_VERSION){
78 PKIX_ERROR(PKIX_MAJORVERSIONSDONTMATCH);
79 }
80
81 if ((minDesiredMinorVersion > PKIX_MINOR_VERSION) ||
82 (maxDesiredMinorVersion < PKIX_MINOR_VERSION)){
83 PKIX_ERROR(PKIX_MINORVERSIONNOTBETWEENDESIREDMINANDMAX);
84 }
85
86 *pActualMinorVersion = PKIX_MINOR_VERSION;
87
88 /* Create Cache Tables
89 * Do not initialize hash tables for object leak test */
90 #if !defined(PKIX_OBJECT_LEAK_TEST)
91 PKIX_CHECK(PKIX_PL_HashTable_Create
92 (32, 0, &cachedCertSigTable, plContext),
93 PKIX_HASHTABLECREATEFAILED);
94
95 PKIX_CHECK(PKIX_PL_HashTable_Create
96 (32, 0, &cachedCrlSigTable, plContext),
97 PKIX_HASHTABLECREATEFAILED);
98
99 PKIX_CHECK(PKIX_PL_HashTable_Create
100 (32, 10, &cachedCertChainTable, plContext),
101 PKIX_HASHTABLECREATEFAILED);
102
103 PKIX_CHECK(PKIX_PL_HashTable_Create
104 (32, 10, &cachedCertTable, plContext),
105 PKIX_HASHTABLECREATEFAILED);
106
107 PKIX_CHECK(PKIX_PL_HashTable_Create
108 (32, 10, &cachedCrlEntryTable, plContext),
109 PKIX_HASHTABLECREATEFAILED);
110
111 PKIX_CHECK(PKIX_PL_HashTable_Create
112 (5, 5, &aiaConnectionCache, plContext),
113 PKIX_HASHTABLECREATEFAILED);
114
115 #ifdef PKIX_SOCKETCACHE
116 PKIX_CHECK(PKIX_PL_HashTable_Create
117 (5, 5, &httpSocketCache, plContext),
118 PKIX_HASHTABLECREATEFAILED);
119 #endif
120 if (pkixLoggerLock == NULL) {
121 PKIX_CHECK(PKIX_PL_MonitorLock_Create
122 (&pkixLoggerLock, plContext),
123 PKIX_MONITORLOCKCREATEFAILED);
124 }
125 #else
126 fnInvTable = PL_NewHashTable(0, pkix_ErrorGen_Hash,
127 PL_CompareValues,
128 PL_CompareValues, NULL, NULL);
129 if (!fnInvTable) {
130 PKIX_ERROR(PKIX_HASHTABLECREATEFAILED);
131 }
132
133 fnStackNameArr = PORT_ZNewArray(char*, MAX_STACK_DEPTH);
134 if (!fnStackNameArr) {
135 PKIX_ERROR(PKIX_HASHTABLECREATEFAILED);
136 }
137
138 fnStackInvCountArr = PORT_ZNewArray(PKIX_UInt32, MAX_STACK_DEPTH);
139 if (!fnStackInvCountArr) {
140 PKIX_ERROR(PKIX_HASHTABLECREATEFAILED);
141 }
142 #endif /* PKIX_OBJECT_LEAK_TEST */
143
144 pkixIsInitialized = PKIX_TRUE;
145
146 cleanup:
147
148 PKIX_RETURN(LIFECYCLE);
149 }
150
151 /*
152 * FUNCTION: PKIX_Shutdown (see comments in pkix.h)
153 */
154 PKIX_Error *
155 PKIX_Shutdown(void *plContext)
156 {
157 PKIX_List *savedPkixLoggers = NULL;
158 PKIX_List *savedPkixLoggersErrors = NULL;
159 PKIX_List *savedPkixLoggersDebugTrace = NULL;
160
161 PKIX_ENTER(LIFECYCLE, "PKIX_Shutdown");
162
163 if (!pkixIsInitialized){
164 /* The library was not initialized */
165 PKIX_RETURN(LIFECYCLE);
166 }
167
168 pkixIsInitialized = PKIX_FALSE;
169
170 if (pkixLoggers) {
171 savedPkixLoggers = pkixLoggers;
172 savedPkixLoggersErrors = pkixLoggersErrors;
173 savedPkixLoggersDebugTrace = pkixLoggersDebugTrace;
174 pkixLoggers = NULL;
175 pkixLoggersErrors = NULL;
176 pkixLoggersDebugTrace = NULL;
177 PKIX_DECREF(savedPkixLoggers);
178 PKIX_DECREF(savedPkixLoggersErrors);
179 PKIX_DECREF(savedPkixLoggersDebugTrace);
180 }
181 PKIX_DECREF(pkixLoggerLock);
182
183 /* Destroy Cache Tables */
184 PKIX_DECREF(cachedCertSigTable);
185 PKIX_DECREF(cachedCrlSigTable);
186 PKIX_DECREF(cachedCertChainTable);
187 PKIX_DECREF(cachedCertTable);
188 PKIX_DECREF(cachedCrlEntryTable);
189 PKIX_DECREF(aiaConnectionCache);
190 PKIX_DECREF(httpSocketCache);
191
192 /* Clean up any temporary errors that happened during shutdown */
193 if (pkixErrorList) {
194 PKIX_PL_Object_DecRef((PKIX_PL_Object*)pkixErrorList, plContext);
195 pkixErrorList = NULL;
196 }
197
198 PKIX_CHECK(PKIX_PL_Shutdown(plContext),
199 PKIX_SHUTDOWNFAILED);
200
201 #ifdef PKIX_OBJECT_LEAK_TEST
202 PORT_Free(fnStackInvCountArr);
203 PORT_Free(fnStackNameArr);
204 PL_HashTableDestroy(fnInvTable);
205 #endif
206
207 cleanup:
208
209 PKIX_RETURN(LIFECYCLE);
210 }
OLDNEW
« no previous file with comments | « nss/lib/libpkix/pkix/top/pkix_lifecycle.h ('k') | nss/lib/libpkix/pkix/top/pkix_validate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698