diff options
author | relyea%netscape.com <devnull@localhost> | 2000-09-20 21:27:10 +0000 |
---|---|---|
committer | relyea%netscape.com <devnull@localhost> | 2000-09-20 21:27:10 +0000 |
commit | aab772fb0aad1404ad411590be6a299e459a0bde (patch) | |
tree | 5778b8d81547558d76d4e974e3acb3f2fedc4eba | |
parent | 43cbc7f57021176d16dcefb41858f788fcb85333 (diff) | |
download | nss-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.h | 5 | ||||
-rw-r--r-- | security/nss/lib/nss/nssinit.c | 38 | ||||
-rw-r--r-- | security/nss/lib/pk11wrap/pk11util.c | 2 |
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); } |