summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrelyea%netscape.com <devnull@localhost>2000-09-20 21:27:10 +0000
committerrelyea%netscape.com <devnull@localhost>2000-09-20 21:27:10 +0000
commitaab772fb0aad1404ad411590be6a299e459a0bde (patch)
tree5778b8d81547558d76d4e974e3acb3f2fedc4eba
parent43cbc7f57021176d16dcefb41858f788fcb85333 (diff)
downloadnss-hg-aab772fb0aad1404ad411590be6a299e459a0bde.tar.gz
Create an initialization call for NSS that does not require the Databases to be initialized.
-rw-r--r--security/nss/lib/nss/nss.h5
-rw-r--r--security/nss/lib/nss/nssinit.c38
-rw-r--r--security/nss/lib/pk11wrap/pk11util.c2
3 files changed, 44 insertions, 1 deletions
diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h
index 157f110e0..154125c8b 100644
--- a/security/nss/lib/nss/nss.h
+++ b/security/nss/lib/nss/nss.h
@@ -49,6 +49,11 @@ SEC_BEGIN_PROTOS
*/
extern SECStatus NSS_Init(const char *configdir);
+/*
+ * initialize NSS without a creating cert db's, key db's, or secmod db's.
+ */
+SECStatus NSS_NoDB_Init(const char *configdir);
+
/*
* Close the Cert, Key databases.
*/
diff --git a/security/nss/lib/nss/nssinit.c b/security/nss/lib/nss/nssinit.c
index 92d009fc9..fef93e630 100644
--- a/security/nss/lib/nss/nssinit.c
+++ b/security/nss/lib/nss/nssinit.c
@@ -43,6 +43,7 @@
#include "ssl.h"
#include "sslproto.h"
#include "secmod.h"
+#include "secmodi.h"
#include "nss.h"
#include "secrng.h"
#include "cdbhdl.h" /* ??? */
@@ -180,6 +181,42 @@ loser:
return rv;
}
+/*
+ * initialize NSS without a creating cert db's, key db's, or secmod db's.
+ */
+SECStatus
+NSS_NoDB_Init(const char * configdir)
+{
+
+ CERTCertDBHandle certhandle = { 0 };
+ SECStatus rv = SECSuccess;
+ SECMODModule *module;
+
+ /* now we want to verify the signature */
+ /* Initialize the cert code */
+ rv = CERT_OpenVolatileCertDB(&certhandle);
+ if (rv != SECSuccess) {
+ return rv;
+ }
+ CERT_SetDefaultCertDB(&certhandle);
+
+ RNG_RNGInit();
+ RNG_SystemInfoForRNG();
+ PK11_InitSlotLists();
+
+ module = SECMOD_NewInternal();
+ if (module == NULL) {
+ return SECFailure;
+ }
+ rv = SECMOD_LoadModule(module);
+ if (rv != SECSuccess) {
+ return rv;
+ }
+
+ SECMOD_SetInternalModule(module);
+ return rv;
+}
+
void
NSS_Shutdown(void)
{
@@ -199,3 +236,4 @@ NSS_Shutdown(void)
* but there's no secmod function to close the DB.
*/
}
+
diff --git a/security/nss/lib/pk11wrap/pk11util.c b/security/nss/lib/pk11wrap/pk11util.c
index 709bf32c8..1855ec199 100644
--- a/security/nss/lib/pk11wrap/pk11util.c
+++ b/security/nss/lib/pk11wrap/pk11util.c
@@ -121,7 +121,7 @@ SECMOD_GetInternalModule(void) {
* security code without any database.
*/
void
-secmod_GetInternalModule( SECMODModule *mod) {
+SECMOD_SetInternalModule( SECMODModule *mod) {
internalModule = SECMOD_ReferenceModule(mod);
}