OLD | NEW |
1 diff -r db5b7e3c69a5 lib/certhigh/certvfy.c | 1 diff --git a/nss/lib/certhigh/certvfy.c b/nss/lib/certhigh/certvfy.c |
2 --- a/lib/certhigh/certvfy.c» Tue May 28 23:37:46 2013 +0200 | 2 index 3141163..c9d26f0 100644 |
3 +++ b/lib/certhigh/certvfy.c» Fri May 31 17:44:06 2013 -0700 | 3 --- a/nss/lib/certhigh/certvfy.c |
| 4 +++ b/nss/lib/certhigh/certvfy.c |
4 @@ -13,9 +13,11 @@ | 5 @@ -13,9 +13,11 @@ |
5 #include "certdb.h" | 6 #include "certdb.h" |
6 #include "certi.h" | 7 #include "certi.h" |
7 #include "cryptohi.h" | 8 #include "cryptohi.h" |
8 +#ifndef NSS_DISABLE_LIBPKIX | 9 +#ifndef NSS_DISABLE_LIBPKIX |
9 #include "pkix.h" | 10 #include "pkix.h" |
10 /*#include "pkix_sample_modules.h" */ | 11 /*#include "pkix_sample_modules.h" */ |
11 #include "pkix_pl_cert.h" | 12 #include "pkix_pl_cert.h" |
12 +#endif /* NSS_DISABLE_LIBPKIX */ | 13 +#endif /* NSS_DISABLE_LIBPKIX */ |
13 | 14 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 + void *wincx) | 55 + void *wincx) |
55 +{ | 56 +{ |
56 + PORT_SetError(PR_NOT_IMPLEMENTED_ERROR); | 57 + PORT_SetError(PR_NOT_IMPLEMENTED_ERROR); |
57 + return SECFailure; | 58 + return SECFailure; |
58 +} | 59 +} |
59 +#endif /* NSS_DISABLE_LIBPKIX */ | 60 +#endif /* NSS_DISABLE_LIBPKIX */ |
60 + | 61 + |
61 /* | 62 /* |
62 * Check the validity times of a certificate | 63 * Check the validity times of a certificate |
63 */ | 64 */ |
64 diff -r db5b7e3c69a5 lib/ckfw/nssck.api | 65 diff --git a/nss/lib/ckfw/nssck.api b/nss/lib/ckfw/nssck.api |
65 --- a/lib/ckfw/nssck.api» Tue May 28 23:37:46 2013 +0200 | 66 index 55b4351..8364258 100644 |
66 +++ b/lib/ckfw/nssck.api» Fri May 31 17:44:06 2013 -0700 | 67 --- a/nss/lib/ckfw/nssck.api |
67 @@ -1752,7 +1752,7 @@ | 68 +++ b/nss/lib/ckfw/nssck.api |
| 69 @@ -1752,7 +1752,7 @@ C_WaitForSlotEvent |
68 } | 70 } |
69 #endif /* DECLARE_STRICT_CRYPTOKI_NAMES */ | 71 #endif /* DECLARE_STRICT_CRYPTOKI_NAMES */ |
70 | 72 |
71 -static CK_RV CK_ENTRY | 73 -static CK_RV CK_ENTRY |
72 +CK_RV CK_ENTRY | 74 +CK_RV CK_ENTRY |
73 __ADJOIN(MODULE_NAME,C_GetFunctionList) | 75 __ADJOIN(MODULE_NAME,C_GetFunctionList) |
74 ( | 76 ( |
75 CK_FUNCTION_LIST_PTR_PTR ppFunctionList | 77 CK_FUNCTION_LIST_PTR_PTR ppFunctionList |
76 @@ -1830,7 +1830,7 @@ | 78 @@ -1830,7 +1830,7 @@ __ADJOIN(MODULE_NAME,C_CancelFunction), |
77 __ADJOIN(MODULE_NAME,C_WaitForSlotEvent) | 79 __ADJOIN(MODULE_NAME,C_WaitForSlotEvent) |
78 }; | 80 }; |
79 | 81 |
80 -static CK_RV CK_ENTRY | 82 -static CK_RV CK_ENTRY |
81 +CK_RV CK_ENTRY | 83 +CK_RV CK_ENTRY |
82 __ADJOIN(MODULE_NAME,C_GetFunctionList) | 84 __ADJOIN(MODULE_NAME,C_GetFunctionList) |
83 ( | 85 ( |
84 CK_FUNCTION_LIST_PTR_PTR ppFunctionList | 86 CK_FUNCTION_LIST_PTR_PTR ppFunctionList |
85 @@ -1840,6 +1840,7 @@ | 87 @@ -1840,6 +1840,7 @@ __ADJOIN(MODULE_NAME,C_GetFunctionList) |
86 return CKR_OK; | 88 return CKR_OK; |
87 } | 89 } |
88 | 90 |
89 +#ifndef NSS_STATIC | 91 +#ifndef NSS_STATIC |
90 /* This one is always present */ | 92 /* This one is always present */ |
91 CK_RV CK_ENTRY | 93 CK_RV CK_ENTRY |
92 C_GetFunctionList | 94 C_GetFunctionList |
93 @@ -1849,6 +1850,7 @@ | 95 @@ -1849,6 +1850,7 @@ C_GetFunctionList |
94 { | 96 { |
95 return __ADJOIN(MODULE_NAME,C_GetFunctionList)(ppFunctionList); | 97 return __ADJOIN(MODULE_NAME,C_GetFunctionList)(ppFunctionList); |
96 } | 98 } |
97 +#endif | 99 +#endif |
98 | 100 |
99 #undef __ADJOIN | 101 #undef __ADJOIN |
100 | 102 |
101 diff -r db5b7e3c69a5 lib/freebl/rsa.c | 103 diff --git a/nss/lib/freebl/rsa.c b/nss/lib/freebl/rsa.c |
102 --- a/lib/freebl/rsa.c» Tue May 28 23:37:46 2013 +0200 | 104 index 498cc96..780c3c7 100644 |
103 +++ b/lib/freebl/rsa.c» Fri May 31 17:44:06 2013 -0700 | 105 --- a/nss/lib/freebl/rsa.c |
104 @@ -1559,6 +1559,13 @@ | 106 +++ b/nss/lib/freebl/rsa.c |
| 107 @@ -1535,6 +1535,13 @@ void BL_Cleanup(void) |
105 RSA_Cleanup(); | 108 RSA_Cleanup(); |
106 } | 109 } |
107 | 110 |
108 +#ifdef NSS_STATIC | 111 +#ifdef NSS_STATIC |
109 +void | 112 +void |
110 +BL_Unload(void) | 113 +BL_Unload(void) |
111 +{ | 114 +{ |
112 +} | 115 +} |
113 +#endif | 116 +#endif |
114 + | 117 + |
115 PRBool bl_parentForkedAfterC_Initialize; | 118 PRBool bl_parentForkedAfterC_Initialize; |
116 | 119 |
117 /* | 120 /* |
118 diff -r db5b7e3c69a5 lib/freebl/shvfy.c | 121 diff --git a/nss/lib/freebl/shvfy.c b/nss/lib/freebl/shvfy.c |
119 --- a/lib/freebl/shvfy.c» Tue May 28 23:37:46 2013 +0200 | 122 index ad64a26..33714b8 100644 |
120 +++ b/lib/freebl/shvfy.c» Fri May 31 17:44:06 2013 -0700 | 123 --- a/nss/lib/freebl/shvfy.c |
121 @@ -273,9 +273,21 @@ | 124 +++ b/nss/lib/freebl/shvfy.c |
| 125 @@ -273,9 +273,21 @@ readItem(PRFileDesc *fd, SECItem *item) |
122 return SECSuccess; | 126 return SECSuccess; |
123 } | 127 } |
124 | 128 |
125 +/* | 129 +/* |
126 + * Define PSEUDO_FIPS if you can't do FIPS software integrity test (e.g., | 130 + * Define PSEUDO_FIPS if you can't do FIPS software integrity test (e.g., |
127 + * if you're using NSS as static libraries), but want to conform to the | 131 + * if you're using NSS as static libraries), but want to conform to the |
128 + * rest of the FIPS requirements. | 132 + * rest of the FIPS requirements. |
129 + */ | 133 + */ |
130 +#ifdef NSS_STATIC | 134 +#ifdef NSS_STATIC |
131 +#define PSEUDO_FIPS | 135 +#define PSEUDO_FIPS |
132 +#endif | 136 +#endif |
133 + | 137 + |
134 PRBool | 138 PRBool |
135 BLAPI_SHVerify(const char *name, PRFuncPtr addr) | 139 BLAPI_SHVerify(const char *name, PRFuncPtr addr) |
136 { | 140 { |
137 +#ifdef PSEUDO_FIPS | 141 +#ifdef PSEUDO_FIPS |
138 + return PR_TRUE; /* a lie, hence *pseudo* FIPS */ | 142 + return PR_TRUE; /* a lie, hence *pseudo* FIPS */ |
139 +#else | 143 +#else |
140 PRBool result = PR_FALSE; /* if anything goes wrong, | 144 PRBool result = PR_FALSE; /* if anything goes wrong, |
141 * the signature does not verify */ | 145 * the signature does not verify */ |
142 /* find our shared library name */ | 146 /* find our shared library name */ |
143 @@ -291,11 +303,15 @@ | 147 @@ -291,11 +303,15 @@ loser: |
144 } | 148 } |
145 | 149 |
146 return result; | 150 return result; |
147 +#endif /* PSEUDO_FIPS */ | 151 +#endif /* PSEUDO_FIPS */ |
148 } | 152 } |
149 | 153 |
150 PRBool | 154 PRBool |
151 BLAPI_SHVerifyFile(const char *shName) | 155 BLAPI_SHVerifyFile(const char *shName) |
152 { | 156 { |
153 +#ifdef PSEUDO_FIPS | 157 +#ifdef PSEUDO_FIPS |
154 + return PR_TRUE; /* a lie, hence *pseudo* FIPS */ | 158 + return PR_TRUE; /* a lie, hence *pseudo* FIPS */ |
155 +#else | 159 +#else |
156 char *checkName = NULL; | 160 char *checkName = NULL; |
157 PRFileDesc *checkFD = NULL; | 161 PRFileDesc *checkFD = NULL; |
158 PRFileDesc *shFD = NULL; | 162 PRFileDesc *shFD = NULL; |
159 @@ -492,6 +508,7 @@ | 163 @@ -492,6 +508,7 @@ loser: |
160 } | 164 } |
161 | 165 |
162 return result; | 166 return result; |
163 +#endif /* PSEUDO_FIPS */ | 167 +#endif /* PSEUDO_FIPS */ |
164 } | 168 } |
165 | 169 |
166 PRBool | 170 PRBool |
167 diff -r db5b7e3c69a5 lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c | 171 diff --git a/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c b/nss/li
b/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c |
168 --- a/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c» Tue May 28 23:37
:46 2013 +0200 | 172 index 30aefb8..ac814cd 100755 |
169 +++ b/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c» Fri May 31 17:44
:06 2013 -0700 | 173 --- a/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c |
170 @@ -201,7 +201,10 @@ | 174 +++ b/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c |
| 175 @@ -201,7 +201,10 @@ certCallback(void *arg, SECItem **secitemCerts, int numcert
s) |
171 | 176 |
172 typedef SECStatus (*pkix_DecodeCertsFunc)(char *certbuf, int certlen, | 177 typedef SECStatus (*pkix_DecodeCertsFunc)(char *certbuf, int certlen, |
173 CERTImportCertificateFunc f, void *ar
g); | 178 CERTImportCertificateFunc f, void *ar
g); |
174 - | 179 - |
175 +#ifdef NSS_STATIC | 180 +#ifdef NSS_STATIC |
176 +extern SECStatus CERT_DecodeCertPackage(char* certbuf, int certlen, | 181 +extern SECStatus CERT_DecodeCertPackage(char* certbuf, int certlen, |
177 + CERTImportCertificateFunc f, void* arg)
; | 182 + CERTImportCertificateFunc f, void* arg)
; |
178 +#endif | 183 +#endif |
179 | 184 |
180 struct pkix_DecodeFuncStr { | 185 struct pkix_DecodeFuncStr { |
181 pkix_DecodeCertsFunc func; /* function pointer to the | 186 pkix_DecodeCertsFunc func; /* function pointer to the |
182 @@ -223,6 +226,11 @@ | 187 @@ -223,6 +226,11 @@ static const PRCallOnceType pkix_pristine; |
183 */ | 188 */ |
184 static PRStatus PR_CALLBACK pkix_getDecodeFunction(void) | 189 static PRStatus PR_CALLBACK pkix_getDecodeFunction(void) |
185 { | 190 { |
186 +#ifdef NSS_STATIC | 191 +#ifdef NSS_STATIC |
187 + pkix_decodeFunc.smimeLib = NULL; | 192 + pkix_decodeFunc.smimeLib = NULL; |
188 + pkix_decodeFunc.func = CERT_DecodeCertPackage; | 193 + pkix_decodeFunc.func = CERT_DecodeCertPackage; |
189 + return PR_SUCCESS; | 194 + return PR_SUCCESS; |
190 +#else | 195 +#else |
191 pkix_decodeFunc.smimeLib = | 196 pkix_decodeFunc.smimeLib = |
192 PR_LoadLibrary(SHLIB_PREFIX"smime3."SHLIB_SUFFIX); | 197 PR_LoadLibrary(SHLIB_PREFIX"smime3."SHLIB_SUFFIX); |
193 if (pkix_decodeFunc.smimeLib == NULL) { | 198 if (pkix_decodeFunc.smimeLib == NULL) { |
194 @@ -235,7 +243,7 @@ | 199 @@ -235,7 +243,7 @@ static PRStatus PR_CALLBACK pkix_getDecodeFunction(void) |
195 return PR_FAILURE; | 200 return PR_FAILURE; |
196 } | 201 } |
197 return PR_SUCCESS; | 202 return PR_SUCCESS; |
198 - | 203 - |
199 +#endif | 204 +#endif |
200 } | 205 } |
201 | 206 |
202 /* | 207 /* |
203 diff -r db5b7e3c69a5 lib/nss/nssinit.c | 208 diff --git a/nss/lib/nss/nssinit.c b/nss/lib/nss/nssinit.c |
204 --- a/lib/nss/nssinit.c»Tue May 28 23:37:46 2013 +0200 | 209 index 6218a7e..208e71d 100644 |
205 +++ b/lib/nss/nssinit.c»Fri May 31 17:44:06 2013 -0700 | 210 --- a/nss/lib/nss/nssinit.c |
| 211 +++ b/nss/lib/nss/nssinit.c |
206 @@ -20,9 +20,11 @@ | 212 @@ -20,9 +20,11 @@ |
207 #include "secerr.h" | 213 #include "secerr.h" |
208 #include "nssbase.h" | 214 #include "nssbase.h" |
209 #include "nssutil.h" | 215 #include "nssutil.h" |
210 +#ifndef NSS_DISABLE_LIBPKIX | 216 +#ifndef NSS_DISABLE_LIBPKIX |
211 #include "pkixt.h" | 217 #include "pkixt.h" |
212 #include "pkix.h" | 218 #include "pkix.h" |
213 #include "pkix_tools.h" | 219 #include "pkix_tools.h" |
214 +#endif /* NSS_DISABLE_LIBPKIX */ | 220 +#endif /* NSS_DISABLE_LIBPKIX */ |
215 | 221 |
216 #include "pki3hack.h" | 222 #include "pki3hack.h" |
217 #include "certi.h" | 223 #include "certi.h" |
218 @@ -530,8 +532,10 @@ | 224 @@ -530,8 +532,10 @@ nss_Init(const char *configdir, const char *certPrefix, con
st char *keyPrefix, |
219 PRBool dontFinalizeModules) | 225 PRBool dontFinalizeModules) |
220 { | 226 { |
221 SECStatus rv = SECFailure; | 227 SECStatus rv = SECFailure; |
222 +#ifndef NSS_DISABLE_LIBPKIX | 228 +#ifndef NSS_DISABLE_LIBPKIX |
223 PKIX_UInt32 actualMinorVersion = 0; | 229 PKIX_UInt32 actualMinorVersion = 0; |
224 PKIX_Error *pkixError = NULL; | 230 PKIX_Error *pkixError = NULL; |
225 +#endif | 231 +#endif |
226 PRBool isReallyInitted; | 232 PRBool isReallyInitted; |
227 char *configStrings = NULL; | 233 char *configStrings = NULL; |
228 char *configName = NULL; | 234 char *configName = NULL; |
229 @@ -685,6 +689,7 @@ | 235 @@ -685,6 +689,7 @@ nss_Init(const char *configdir, const char *certPrefix, cons
t char *keyPrefix, |
230 pk11sdr_Init(); | 236 pk11sdr_Init(); |
231 cert_CreateSubjectKeyIDHashTable(); | 237 cert_CreateSubjectKeyIDHashTable(); |
232 | 238 |
233 +#ifndef NSS_DISABLE_LIBPKIX | 239 +#ifndef NSS_DISABLE_LIBPKIX |
234 pkixError = PKIX_Initialize | 240 pkixError = PKIX_Initialize |
235 (PKIX_FALSE, PKIX_MAJOR_VERSION, PKIX_MINOR_VERSION, | 241 (PKIX_FALSE, PKIX_MAJOR_VERSION, PKIX_MINOR_VERSION, |
236 PKIX_MINOR_VERSION, &actualMinorVersion, &plContext); | 242 PKIX_MINOR_VERSION, &actualMinorVersion, &plContext); |
237 @@ -697,6 +702,7 @@ | 243 @@ -697,6 +702,7 @@ nss_Init(const char *configdir, const char *certPrefix, cons
t char *keyPrefix, |
238 CERT_SetUsePKIXForValidation(PR_TRUE); | 244 CERT_SetUsePKIXForValidation(PR_TRUE); |
239 } | 245 } |
240 } | 246 } |
241 +#endif /* NSS_DISABLE_LIBPKIX */ | 247 +#endif /* NSS_DISABLE_LIBPKIX */ |
242 | 248 |
243 | 249 |
244 } | 250 } |
245 @@ -1081,7 +1087,9 @@ | 251 @@ -1081,7 +1087,9 @@ nss_Shutdown(void) |
246 cert_DestroyLocks(); | 252 cert_DestroyLocks(); |
247 ShutdownCRLCache(); | 253 ShutdownCRLCache(); |
248 OCSP_ShutdownGlobal(); | 254 OCSP_ShutdownGlobal(); |
249 +#ifndef NSS_DISABLE_LIBPKIX | 255 +#ifndef NSS_DISABLE_LIBPKIX |
250 PKIX_Shutdown(plContext); | 256 PKIX_Shutdown(plContext); |
251 +#endif | 257 +#endif |
252 SECOID_Shutdown(); | 258 SECOID_Shutdown(); |
253 status = STAN_Shutdown(); | 259 status = STAN_Shutdown(); |
254 cert_DestroySubjectKeyIDHashTable(); | 260 cert_DestroySubjectKeyIDHashTable(); |
255 diff -r db5b7e3c69a5 lib/pk11wrap/pk11load.c | 261 diff --git a/nss/lib/pk11wrap/pk11load.c b/nss/lib/pk11wrap/pk11load.c |
256 --- a/lib/pk11wrap/pk11load.c» Tue May 28 23:37:46 2013 +0200 | 262 index 6700180..1811a1a 100644 |
257 +++ b/lib/pk11wrap/pk11load.c» Fri May 31 17:44:06 2013 -0700 | 263 --- a/nss/lib/pk11wrap/pk11load.c |
258 @@ -318,6 +318,12 @@ | 264 +++ b/nss/lib/pk11wrap/pk11load.c |
| 265 @@ -341,6 +341,12 @@ SECMOD_SetRootCerts(PK11SlotInfo *slot, SECMODModule *mod)
{ |
259 } | 266 } |
260 } | 267 } |
261 | 268 |
262 +#ifdef NSS_STATIC | 269 +#ifdef NSS_STATIC |
263 +extern CK_RV NSC_GetFunctionList(CK_FUNCTION_LIST_PTR *pFunctionList); | 270 +extern CK_RV NSC_GetFunctionList(CK_FUNCTION_LIST_PTR *pFunctionList); |
264 +extern CK_RV FC_GetFunctionList(CK_FUNCTION_LIST_PTR *pFunctionList); | 271 +extern CK_RV FC_GetFunctionList(CK_FUNCTION_LIST_PTR *pFunctionList); |
265 +extern char **NSC_ModuleDBFunc(unsigned long function,char *parameters, void *a
rgs); | 272 +extern char **NSC_ModuleDBFunc(unsigned long function,char *parameters, void *a
rgs); |
266 +extern CK_RV builtinsC_GetFunctionList(CK_FUNCTION_LIST_PTR *pFunctionList); | 273 +extern CK_RV builtinsC_GetFunctionList(CK_FUNCTION_LIST_PTR *pFunctionList); |
267 +#else | 274 +#else |
268 static const char* my_shlib_name = | 275 static const char* my_shlib_name = |
269 SHLIB_PREFIX"nss"SHLIB_VERSION"."SHLIB_SUFFIX; | 276 SHLIB_PREFIX"nss"SHLIB_VERSION"."SHLIB_SUFFIX; |
270 static const char* softoken_shlib_name = | 277 static const char* softoken_shlib_name = |
271 @@ -326,12 +332,14 @@ | 278 @@ -349,12 +355,14 @@ static const PRCallOnceType pristineCallOnce; |
272 static PRCallOnceType loadSoftokenOnce; | 279 static PRCallOnceType loadSoftokenOnce; |
273 static PRLibrary* softokenLib; | 280 static PRLibrary* softokenLib; |
274 static PRInt32 softokenLoadCount; | 281 static PRInt32 softokenLoadCount; |
275 +#endif /* NSS_STATIC */ | 282 +#endif /* NSS_STATIC */ |
276 | 283 |
277 #include "prio.h" | 284 #include "prio.h" |
278 #include "prprf.h" | 285 #include "prprf.h" |
279 #include <stdio.h> | 286 #include <stdio.h> |
280 #include "prsystem.h" | 287 #include "prsystem.h" |
281 | 288 |
282 +#ifndef NSS_STATIC | 289 +#ifndef NSS_STATIC |
283 /* This function must be run only once. */ | 290 /* This function must be run only once. */ |
284 /* determine if hybrid platform, then actually load the DSO. */ | 291 /* determine if hybrid platform, then actually load the DSO. */ |
285 static PRStatus | 292 static PRStatus |
286 @@ -348,6 +356,7 @@ | 293 @@ -371,6 +379,7 @@ softoken_LoadDSO( void ) |
287 } | 294 } |
288 return PR_FAILURE; | 295 return PR_FAILURE; |
289 } | 296 } |
290 +#endif /* !NSS_STATIC */ | 297 +#endif /* !NSS_STATIC */ |
291 | 298 |
292 /* | 299 /* |
293 * load a new module into our address space and initialize it. | 300 * load a new module into our address space and initialize it. |
294 @@ -366,6 +375,16 @@ | 301 @@ -389,6 +398,16 @@ secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **o
ldModule) { |
295 | 302 |
296 /* intenal modules get loaded from their internal list */ | 303 /* intenal modules get loaded from their internal list */ |
297 if (mod->internal && (mod->dllName == NULL)) { | 304 if (mod->internal && (mod->dllName == NULL)) { |
298 +#ifdef NSS_STATIC | 305 +#ifdef NSS_STATIC |
299 + if (mod->isFIPS) { | 306 + if (mod->isFIPS) { |
300 + entry = FC_GetFunctionList; | 307 + entry = FC_GetFunctionList; |
301 + } else { | 308 + } else { |
302 + entry = NSC_GetFunctionList; | 309 + entry = NSC_GetFunctionList; |
303 + } | 310 + } |
304 + if (mod->isModuleDB) { | 311 + if (mod->isModuleDB) { |
305 + mod->moduleDBFunc = NSC_ModuleDBFunc; | 312 + mod->moduleDBFunc = NSC_ModuleDBFunc; |
306 + } | 313 + } |
307 +#else | 314 +#else |
308 /* | 315 /* |
309 * Loads softoken as a dynamic library, | 316 * Loads softoken as a dynamic library, |
310 * even though the rest of NSS assumes this as the "internal" module. | 317 * even though the rest of NSS assumes this as the "internal" module. |
311 @@ -391,6 +410,7 @@ | 318 @@ -414,6 +433,7 @@ secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **ol
dModule) { |
312 mod->moduleDBFunc = (CK_C_GetFunctionList) | 319 mod->moduleDBFunc = (CK_C_GetFunctionList) |
313 PR_FindSymbol(softokenLib, "NSC_ModuleDBFunc"); | 320 PR_FindSymbol(softokenLib, "NSC_ModuleDBFunc"); |
314 } | 321 } |
315 +#endif | 322 +#endif |
316 | 323 |
317 if (mod->moduleDBOnly) { | 324 if (mod->moduleDBOnly) { |
318 mod->loaded = PR_TRUE; | 325 mod->loaded = PR_TRUE; |
319 @@ -401,6 +421,15 @@ | 326 @@ -424,6 +444,15 @@ secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **o
ldModule) { |
320 if (mod->dllName == NULL) { | 327 if (mod->dllName == NULL) { |
321 return SECFailure; | 328 return SECFailure; |
322 } | 329 } |
323 +#if defined(NSS_STATIC) && !defined(NSS_DISABLE_ROOT_CERTS) | 330 +#if defined(NSS_STATIC) && !defined(NSS_DISABLE_ROOT_CERTS) |
324 + if (strstr(mod->dllName, "nssckbi") != NULL) { | 331 + if (strstr(mod->dllName, "nssckbi") != NULL) { |
325 + mod->library = NULL; | 332 + mod->library = NULL; |
326 + PORT_Assert(!mod->moduleDBOnly); | 333 + PORT_Assert(!mod->moduleDBOnly); |
327 + entry = builtinsC_GetFunctionList; | 334 + entry = builtinsC_GetFunctionList; |
328 + PORT_Assert(!mod->isModuleDB); | 335 + PORT_Assert(!mod->isModuleDB); |
329 + goto library_loaded; | 336 + goto library_loaded; |
330 + } | 337 + } |
331 +#endif | 338 +#endif |
332 | 339 |
333 /* load the library. If this succeeds, then we have to remember to | 340 /* load the library. If this succeeds, then we have to remember to |
334 * unload the library if anything goes wrong from here on out... | 341 * unload the library if anything goes wrong from here on out... |
335 @@ -423,6 +452,9 @@ | 342 @@ -446,6 +475,9 @@ secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **ol
dModule) { |
336 mod->moduleDBFunc = (void *) | 343 mod->moduleDBFunc = (void *) |
337 PR_FindSymbol(library, "NSS_ReturnModuleSpecData"); | 344 PR_FindSymbol(library, "NSS_ReturnModuleSpecData"); |
338 } | 345 } |
339 +#if defined(NSS_STATIC) && !defined(NSS_DISABLE_ROOT_CERTS) | 346 +#if defined(NSS_STATIC) && !defined(NSS_DISABLE_ROOT_CERTS) |
340 +library_loaded: | 347 +library_loaded: |
341 +#endif | 348 +#endif |
342 if (mod->moduleDBFunc == NULL) mod->isModuleDB = PR_FALSE; | 349 if (mod->moduleDBFunc == NULL) mod->isModuleDB = PR_FALSE; |
343 if (entry == NULL) { | 350 if (entry == NULL) { |
344 if (mod->isModuleDB) { | 351 if (mod->isModuleDB) { |
345 @@ -562,6 +594,7 @@ | 352 @@ -585,6 +617,7 @@ SECMOD_UnloadModule(SECMODModule *mod) { |
346 * if not, we should change this to SECFailure and move it above the | 353 * if not, we should change this to SECFailure and move it above the |
347 * mod->loaded = PR_FALSE; */ | 354 * mod->loaded = PR_FALSE; */ |
348 if (mod->internal && (mod->dllName == NULL)) { | 355 if (mod->internal && (mod->dllName == NULL)) { |
349 +#ifndef NSS_STATIC | 356 +#ifndef NSS_STATIC |
350 if (0 == PR_ATOMIC_DECREMENT(&softokenLoadCount)) { | 357 if (0 == PR_ATOMIC_DECREMENT(&softokenLoadCount)) { |
351 if (softokenLib) { | 358 if (softokenLib) { |
352 disableUnload = PR_GetEnv("NSS_DISABLE_UNLOAD"); | 359 disableUnload = PR_GetEnv("NSS_DISABLE_UNLOAD"); |
353 @@ -573,12 +606,18 @@ | 360 @@ -596,12 +629,18 @@ SECMOD_UnloadModule(SECMODModule *mod) { |
354 } | 361 } |
355 loadSoftokenOnce = pristineCallOnce; | 362 loadSoftokenOnce = pristineCallOnce; |
356 } | 363 } |
357 +#endif | 364 +#endif |
358 return SECSuccess; | 365 return SECSuccess; |
359 } | 366 } |
360 | 367 |
361 library = (PRLibrary *)mod->library; | 368 library = (PRLibrary *)mod->library; |
362 /* paranoia */ | 369 /* paranoia */ |
363 if (library == NULL) { | 370 if (library == NULL) { |
364 +#if defined(NSS_STATIC) && !defined(NSS_DISABLE_ROOT_CERTS) | 371 +#if defined(NSS_STATIC) && !defined(NSS_DISABLE_ROOT_CERTS) |
365 + if (strstr(mod->dllName, "nssckbi") != NULL) { | 372 + if (strstr(mod->dllName, "nssckbi") != NULL) { |
366 + return SECSuccess; | 373 + return SECSuccess; |
367 + } | 374 + } |
368 +#endif | 375 +#endif |
369 return SECFailure; | 376 return SECFailure; |
370 } | 377 } |
371 | 378 |
372 diff -r db5b7e3c69a5 lib/softoken/lgglue.c | 379 diff --git a/nss/lib/softoken/lgglue.c b/nss/lib/softoken/lgglue.c |
373 --- a/lib/softoken/lgglue.c» Tue May 28 23:37:46 2013 +0200 | 380 index c7b82bd..64e6415 100644 |
374 +++ b/lib/softoken/lgglue.c» Fri May 31 17:44:06 2013 -0700 | 381 --- a/nss/lib/softoken/lgglue.c |
375 @@ -23,6 +23,7 @@ | 382 +++ b/nss/lib/softoken/lgglue.c |
| 383 @@ -23,6 +23,7 @@ static LGDeleteSecmodFunc legacy_glue_deleteSecmod = NULL; |
376 static LGAddSecmodFunc legacy_glue_addSecmod = NULL; | 384 static LGAddSecmodFunc legacy_glue_addSecmod = NULL; |
377 static LGShutdownFunc legacy_glue_shutdown = NULL; | 385 static LGShutdownFunc legacy_glue_shutdown = NULL; |
378 | 386 |
379 +#ifndef NSS_STATIC | 387 +#ifndef NSS_STATIC |
380 /* | 388 /* |
381 * The following 3 functions duplicate the work done by bl_LoadLibrary. | 389 * The following 3 functions duplicate the work done by bl_LoadLibrary. |
382 * We should make bl_LoadLibrary a global and replace the call to | 390 * We should make bl_LoadLibrary a global and replace the call to |
383 @@ -160,6 +161,7 @@ | 391 @@ -160,6 +161,7 @@ done: |
384 | 392 |
385 return lib; | 393 return lib; |
386 } | 394 } |
387 +#endif /* STATIC LIBRARIES */ | 395 +#endif /* STATIC LIBRARIES */ |
388 | 396 |
389 /* | 397 /* |
390 * stub files for legacy db's to be able to encrypt and decrypt | 398 * stub files for legacy db's to be able to encrypt and decrypt |
391 @@ -272,6 +274,21 @@ | 399 @@ -272,6 +274,21 @@ sftkdbLoad_Legacy(PRBool isFIPS) |
392 return SECSuccess; | 400 return SECSuccess; |
393 } | 401 } |
394 | 402 |
395 +#ifdef NSS_STATIC | 403 +#ifdef NSS_STATIC |
396 +#ifdef NSS_DISABLE_DBM | 404 +#ifdef NSS_DISABLE_DBM |
397 + return SECFailure; | 405 + return SECFailure; |
398 +#else | 406 +#else |
399 + lib = (PRLibrary *) 0x8; | 407 + lib = (PRLibrary *) 0x8; |
400 + | 408 + |
401 + legacy_glue_open = legacy_Open; | 409 + legacy_glue_open = legacy_Open; |
402 + legacy_glue_readSecmod = legacy_ReadSecmodDB; | 410 + legacy_glue_readSecmod = legacy_ReadSecmodDB; |
403 + legacy_glue_releaseSecmod = legacy_ReleaseSecmodDBData; | 411 + legacy_glue_releaseSecmod = legacy_ReleaseSecmodDBData; |
404 + legacy_glue_deleteSecmod = legacy_DeleteSecmodDB; | 412 + legacy_glue_deleteSecmod = legacy_DeleteSecmodDB; |
405 + legacy_glue_addSecmod = legacy_AddSecmodDB; | 413 + legacy_glue_addSecmod = legacy_AddSecmodDB; |
406 + legacy_glue_shutdown = legacy_Shutdown; | 414 + legacy_glue_shutdown = legacy_Shutdown; |
407 + setCryptFunction = legacy_SetCryptFunctions; | 415 + setCryptFunction = legacy_SetCryptFunctions; |
408 +#endif | 416 +#endif |
409 +#else | 417 +#else |
410 lib = sftkdb_LoadLibrary(LEGACY_LIB_NAME); | 418 lib = sftkdb_LoadLibrary(LEGACY_LIB_NAME); |
411 if (lib == NULL) { | 419 if (lib == NULL) { |
412 return SECFailure; | 420 return SECFailure; |
413 @@ -297,11 +314,14 @@ | 421 @@ -297,11 +314,14 @@ sftkdbLoad_Legacy(PRBool isFIPS) |
414 PR_UnloadLibrary(lib); | 422 PR_UnloadLibrary(lib); |
415 return SECFailure; | 423 return SECFailure; |
416 } | 424 } |
417 +#endif /* NSS_STATIC */ | 425 +#endif /* NSS_STATIC */ |
418 | 426 |
419 /* verify the loaded library if we are in FIPS mode */ | 427 /* verify the loaded library if we are in FIPS mode */ |
420 if (isFIPS) { | 428 if (isFIPS) { |
421 if (!BLAPI_SHVerify(LEGACY_LIB_NAME,(PRFuncPtr)legacy_glue_open)) { | 429 if (!BLAPI_SHVerify(LEGACY_LIB_NAME,(PRFuncPtr)legacy_glue_open)) { |
422 +#ifndef NSS_STATIC | 430 +#ifndef NSS_STATIC |
423 PR_UnloadLibrary(lib); | 431 PR_UnloadLibrary(lib); |
424 +#endif | 432 +#endif |
425 return SECFailure; | 433 return SECFailure; |
426 } | 434 } |
427 legacy_glue_libCheckSucceeded = PR_TRUE; | 435 legacy_glue_libCheckSucceeded = PR_TRUE; |
428 @@ -418,10 +438,12 @@ | 436 @@ -418,10 +438,12 @@ sftkdbCall_Shutdown(void) |
429 #endif | 437 #endif |
430 crv = (*legacy_glue_shutdown)(parentForkedAfterC_Initialize); | 438 crv = (*legacy_glue_shutdown)(parentForkedAfterC_Initialize); |
431 } | 439 } |
432 +#ifndef NSS_STATIC | 440 +#ifndef NSS_STATIC |
433 disableUnload = PR_GetEnv("NSS_DISABLE_UNLOAD"); | 441 disableUnload = PR_GetEnv("NSS_DISABLE_UNLOAD"); |
434 if (!disableUnload) { | 442 if (!disableUnload) { |
435 PR_UnloadLibrary(legacy_glue_lib); | 443 PR_UnloadLibrary(legacy_glue_lib); |
436 } | 444 } |
437 +#endif | 445 +#endif |
438 legacy_glue_lib = NULL; | 446 legacy_glue_lib = NULL; |
439 legacy_glue_open = NULL; | 447 legacy_glue_open = NULL; |
440 legacy_glue_readSecmod = NULL; | 448 legacy_glue_readSecmod = NULL; |
441 diff -r db5b7e3c69a5 lib/softoken/lgglue.h | 449 diff --git a/nss/lib/softoken/lgglue.h b/nss/lib/softoken/lgglue.h |
442 --- a/lib/softoken/lgglue.h» Tue May 28 23:37:46 2013 +0200 | 450 index b87f756..c8c562f 100644 |
443 +++ b/lib/softoken/lgglue.h» Fri May 31 17:44:06 2013 -0700 | 451 --- a/nss/lib/softoken/lgglue.h |
444 @@ -38,6 +38,25 @@ | 452 +++ b/nss/lib/softoken/lgglue.h |
| 453 @@ -38,6 +38,25 @@ typedef SECStatus (*LGShutdownFunc)(PRBool forked); |
445 typedef void (*LGSetForkStateFunc)(PRBool); | 454 typedef void (*LGSetForkStateFunc)(PRBool); |
446 typedef void (*LGSetCryptFunc)(LGEncryptFunc, LGDecryptFunc); | 455 typedef void (*LGSetCryptFunc)(LGEncryptFunc, LGDecryptFunc); |
447 | 456 |
448 +extern CK_RV legacy_Open(const char *dir, const char *certPrefix, | 457 +extern CK_RV legacy_Open(const char *dir, const char *certPrefix, |
449 + const char *keyPrefix, | 458 + const char *keyPrefix, |
450 + int certVersion, int keyVersion, int flags, | 459 + int certVersion, int keyVersion, int flags, |
451 + SDB **certDB, SDB **keyDB); | 460 + SDB **certDB, SDB **keyDB); |
452 +extern char ** legacy_ReadSecmodDB(const char *appName, | 461 +extern char ** legacy_ReadSecmodDB(const char *appName, |
453 + const char *filename, | 462 + const char *filename, |
454 + const char *dbname, char *params, PRBool rw); | 463 + const char *dbname, char *params, PRBool rw); |
455 +extern SECStatus legacy_ReleaseSecmodDBData(const char *appName, | 464 +extern SECStatus legacy_ReleaseSecmodDBData(const char *appName, |
456 + const char *filename, | 465 + const char *filename, |
457 + const char *dbname, char **params, PRBool rw); | 466 + const char *dbname, char **params, PRBool rw); |
458 +extern SECStatus legacy_DeleteSecmodDB(const char *appName, | 467 +extern SECStatus legacy_DeleteSecmodDB(const char *appName, |
459 + const char *filename, | 468 + const char *filename, |
460 + const char *dbname, char *params, PRBool rw); | 469 + const char *dbname, char *params, PRBool rw); |
461 +extern SECStatus legacy_AddSecmodDB(const char *appName, | 470 +extern SECStatus legacy_AddSecmodDB(const char *appName, |
462 + const char *filename, | 471 + const char *filename, |
463 + const char *dbname, char *params, PRBool rw); | 472 + const char *dbname, char *params, PRBool rw); |
464 +extern SECStatus legacy_Shutdown(PRBool forked); | 473 +extern SECStatus legacy_Shutdown(PRBool forked); |
465 +extern void legacy_SetCryptFunctions(LGEncryptFunc, LGDecryptFunc); | 474 +extern void legacy_SetCryptFunctions(LGEncryptFunc, LGDecryptFunc); |
466 + | 475 + |
467 /* | 476 /* |
468 * Softoken Glue Functions | 477 * Softoken Glue Functions |
469 */ | 478 */ |
470 diff -r db5b7e3c69a5 lib/util/secport.h | 479 diff --git a/nss/lib/util/secport.h b/nss/lib/util/secport.h |
471 --- a/lib/util/secport.h» Tue May 28 23:37:46 2013 +0200 | 480 index 5b09b9c..f01eb74 100644 |
472 +++ b/lib/util/secport.h» Fri May 31 17:44:06 2013 -0700 | 481 --- a/nss/lib/util/secport.h |
473 @@ -210,6 +210,7 @@ | 482 +++ b/nss/lib/util/secport.h |
| 483 @@ -210,6 +210,7 @@ extern int NSS_PutEnv(const char * envVarName, const char *
envValue); |
474 | 484 |
475 extern int NSS_SecureMemcmp(const void *a, const void *b, size_t n); | 485 extern int NSS_SecureMemcmp(const void *a, const void *b, size_t n); |
476 | 486 |
477 +#ifndef NSS_STATIC | 487 +#ifndef NSS_STATIC |
478 /* | 488 /* |
479 * Load a shared library called "newShLibName" in the same directory as | 489 * Load a shared library called "newShLibName" in the same directory as |
480 * a shared library that is already loaded, called existingShLibName. | 490 * a shared library that is already loaded, called existingShLibName. |
481 @@ -244,6 +245,7 @@ | 491 @@ -244,6 +245,7 @@ PRLibrary * |
482 PORT_LoadLibraryFromOrigin(const char* existingShLibName, | 492 PORT_LoadLibraryFromOrigin(const char* existingShLibName, |
483 PRFuncPtr staticShLibFunc, | 493 PRFuncPtr staticShLibFunc, |
484 const char *newShLibName); | 494 const char *newShLibName); |
485 +#endif /* NSS_STATIC */ | 495 +#endif /* NSS_STATIC */ |
486 | 496 |
487 SEC_END_PROTOS | 497 SEC_END_PROTOS |
488 | 498 |
OLD | NEW |